Ruuve

Ruuve. Weird name huh? Well... I used the word rove which basically means "to roam" or "to wander aimlessly" and mushed it a bit until I had Ruuve. To be honest. Ruuve is one of those projects which started out with a lot of enthusiasm and was then neglected and forgotten. I had the idea for the project when we were on a roadtrip through Great Britain. We were at the border to Scotland, there was a little hill and on that hill the Scotland sign. Right then and there I thought: "It would be nice to know where the others are heading". So that's exactly what Ruuve is all about. Knowing where the others are heading or where others have gone before. The basic concept is, that you search for a destination or place and then instead of getting only information about that exact place, you can see where other people went from there. For privacy reasons it was planned to be able to share your journey after you weren't there anymore, just so nobody could follow you on your heels.

But as said. This project was never finished. The frontend is written with Vue2 and the backend is written with Express, both in Javascript. I wanted to try to write the frontend and backend in the same language, that's why two times Javascript. Due to the asynchronous nature of Javascript, Express and the other libraries, and be not being an expert at Javascript, I ended up with a lot of "Pyramids of Doom", basically blocks of code which are sometimes up to 10 times indented, which looks just horrible. Here's a little taste of what that looked like:

get_info_from_db(db, username)
    .then(data => {
        password = data["password"]
        check_password(hash, pass)
        .then(result => {
            send_webhook(wb, "Success")
            .then(back => {
                // ...
            })
            .catch(err => {
                console.log(err)
            })
        })
        .catch(err => {
            console.log(err)
        })
    })
    .catch(err => {
        console.log(err)
    })

Oh yeah and for whatever reason I used rethinkdb as the database, which isn't a particulary bad choice, but the real time capabilities are not at all neccessary here. But I thought it was cool, so I used it. But I have written tests for the backend. There are none for the frontend, but, well... Maybe I'll open source the code, but I have to check back over the git repo if it can be released to the public as is, or if i have to remove some bits of information.