I’m a self-taught frontend dev at intermediate level. For my day job and a couple of side gigs, I’ve done user authentication, interacting with pre-existing infrastructure/API not built by me. I also know how JWT works.
However, to my distress, I realised that if I were to build a simple web app for users (think To-Do or Notes, where each user will have their own data) on my own… I’d be clueless and not know where to start 😳. Now I felt it’s time to stop being embarassed and start learning by posting this question here.
What is the most simple stack to create a basic personal CRUD web app with the following specs/requirements? For the sake of simplicity, let’s assume it’s a Notes app.
- App can have many users.
- User can create a new note.
- User can view and manage (edit, delete) their existing notes.
- Only the user can edit or delete their notes.
- User can manage their notes from any browser/device. (So localStorage or sessionStorage is out.)
- Everyone else can view user’s notes through a public URL.
- Notes shall not contain sensitive data.
- User shall be required to give as little amount of personal data and go through as little steps as possible to use this app.
- User might not be a tech person (= may not have Github/Netlify account).
Dev (ie. me):
- I have intermediate skill in JS; near zero skill in backend or DevOps (setting up server, do I need CI/CD, Docker, etc).
- Yes I know I eventually have to learn the latter. For now though, I hope to create an app with minimum amount of backend & devops work.
- I do have basic understanding of backend-related JS frameworks like Express and Koa.
- I’ve been into Svelte. But React, Vue, or vanilla JS is also fine.
- I’d like to keep the code open source.
- Free services only please.
(Sidenote: I know I can create a remixable app on Glitch. But in this case, I’d like to know how to do it differently.)
I found my main problem lies with TWO aspects: (1) user authentication and (2) data storage. I did some research and found the following solutions. Now I need help with how and what to choose.
- Google Sheets
- Auth0 (7,000 free active users & unlimited logins, good enough)
- Google Sheets
- Free tier of Contentful, Sanity, or other similar service? It would not be sustainable if there are many users. 🤔
I found this interesting example in marinaratimer.com:
- User can create a new timer.
- Once a timer is created, user gets two unique links:
- “viewer link”, eg. marinaratimer.com/KwAuW
- “administrator link” to edit the timer, eg. marinaratimer.com/iBblB
- This is a public link; user is simply told to keep it private. 🤯
Would be grateful for any advice, and/or just share your experience building this type of web app! 🙏🏽
🍦 UPDATE: Thank you all for the responses! I decided to go with a Svelte + Sapper + Firebase (Firestore and hosting) for this project. For future projects I'd probably look into Express and MongoDB. I hope the answers here may be useful for others, too.