Inspiration

The idea of some tool that would help us improve how we remember to do chores or anything in particular whenever we get/leave home had been going through our minds for a while. Living with friends or family in a flat might be easier to manage with the help of a beacon at home. It's inspired by Mavin, the robot from the popular novel The Hitchhiker's Guide to the Galaxy afflicted with severe depression and boredom. We had in mind that an app that constantly nags about stuff you need to do might be funnier and easier to get used to.

What it does

It's the backend service for an app that listens to a beacon and manages teams or groups of people. Thought for a flat at first, the idea could spread to other similar use cases that might eventually benefit from the dynamic. It provides an open API with email and password authentication that allows to manage teams and reminders, triggered by team members' smartphone being aware of the beacon (mini marvins) in the flat they live in. If I ever need to remember myself before leaving the house to take out the trash, our region exit event would give us a heads up notice. Remember to do the dishes early when I get home is the counterpart, but lots of complex notifications would be possible (Ex: notify me my favorite tv show is about to go on the air so I won't miss the beginning, but don't bother if I'm not home since I probably won't be able to watch it.)

How we built it

We used a basic ExpressJS base structure sample and implemented our functionality with a MongoDB datastore. The Node.JS app is executed in a Docker container separate from the database. In the development environment both services are managed locally using docker-compose and the "production" environment was hosted on a Dokku installation in Digital Ocean.

Challenges we ran into

We ran into some difficulties working along the primary security concerns we had for the API, it looks like we took a bigger challange than we expected in under 36 hours by trying to make it work airtight. We didn't wanted/expected to make use of OAuth 2 so went with JSON Web Tokens. This gave us complexity on token handling for the web app, besides the iOS app we developed wasn't ready in that little time after we finished the specifications of the API (we could've left out a couple of functionalities on the API and focus our efforts on the Web and iOS app interfaces for a better use of the 36h span, but we're happy with the tool we've built).

Accomplishments that we're proud of

The environment management amongst developer teams and loads of other benefits Docker implementations are great and trying that was fun to work with for future release cycles. The authentication is a nice feature, it's always nice to follow good practices, even for prototyping.

What we learned

We learned that some projects can easily grow out of proportions for short/micro deliveries. JWT authentication was nice, but we lost some time on that we could've spent on some more visual improvements.

What's next for marvin

The repo is there, we have set to ourselves that the web version is a must-finish for us, so its just a matter of time. The iOS app that consumes the API has already lots of work invested but is a little farther along down the roadmap since needs more effort to finish.

Share this project:

Updates