Today I have finally started JFM 2.0! A bit late considering I set a deadline to finish by December 1 last year when I first had the idea last summer but hey ho. And to be fair I’ve started it before but now I intend to actually finish it.
JFM was a project I made last year which I use just about every week, but only run locally on my computer. Version 2.0 is to add some security around it and make it available for public use. I don’t know if anyone will actually want to use it, but at least I’ll be able to use it myself without having my laptop. 😄
The app is a Vue front end and the API is a Node + Express app. And I thought rather than doing that for the public version, I’d try making some modifications to a) learn and b) set it up more economically. The solution I thought I’d try was to use serverless functions instead of an always-on Node server for the API. So today I learned a bit about what that would entail. Without knowing too much about this, seems I would need to:
- Translate the Express API to Serverless (also looks possible with aws-serverless-express)
- Set up a database on AWS since current DB has to be tied to a Heroku app
- Add authentication
- Modify the client to send an auth token with each API request
So—the API part looks fairly approachable, but when I started to think about the database I wasn’t so sure. A database server (the ones I’ve been working at least) is also always-on, so how would this work with a serverless API? And is serverless even the right choice for an app like this?
Reading a guide about how to choose the right database for a serverless application shows that as expected, it’s complicated. I’m not really sure I want to go through the “steep learning curve” of learning DynamoDB (the article’s recommendation) just to get a basic version of this app up. Doing so would mean not only learning DynamoDB, but also re-structuring all of my data and models from relational tables to NoSQL. Plus diving back into managing a number of AWS services which might just be too much for this little app!
So, in the interest of getting an MVP online in as little time as possible, I’m going to scale back the modifications. Instead I’m just going to:
- Add authentication
😂 😂 😂 Ok it’s not that simple, I’ll need to do a few other things to get it deployed and I’m sure there will be unexpected problems. But for now I’ll keep it as simple as possible. Onwards!