Don't fly solo with Express
I have been working on a web app for the past month or so. It’s a travel logger, where you can enter the places you have been to, and the app visualizes them on a globe.
I was no longer enjoying working on the project and decided to stop working yesterday. My interest dwindled because I chose the wrong framework for this project - Express.
The app’s idea was straightforward - people would register, log in, choose a username and then add a list of places they have visited in chronological order. The app would visualize them on a globe, connected by lines to indicate the travel.
Implementation details and struggles
I first used a Postgres database hosted on Supabase. Mapbox, the service I was using for geographical data visualization, stores its data in GeoJSON. I used the JSONB data type to store this information.
I was working to add auth at this time using Google Identity. Getting this to work was not enjoyable because I didn’t find good documentation. After struggling for a few days, I decided to go ahead and implement a simple auth system myself.
I found an amazing talk by Randall Degges which helped me a lot. I switched out the database from Postgres to MongoDB to follow the guide easily.
Express Sound Effect #2
I completed the actual travel logging part of the app in 2 days. But I couldn’t even complete the auth and database in 2 weeks. I spent a lot of time making lots of small decisions.
I don’t have any conclusion. All I know is I’m not using Express or any other unopinionated framework when working solo.
{
"name": "travel-log",
"version": "0.0.1",
"description": "App to record travels",
"main": "index.js",
"scripts": {
"dev": "nodemon --ext js,css,pug server.js",
"start": "node server.js"
},
"author": "Alabhya Jindal",
"license": "ISC",
"dependencies": {
"@supabase/supabase-js": "^2.29.0",
"bcryptjs": "^2.4.3",
"cookie-parser": "^1.4.6",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"express-session": "^1.17.3",
"google-auth-library": "^9.0.0",
"helmet": "^7.0.0",
"jsonwebtoken": "^9.0.1",
"mapbox-gl": "^2.15.0",
"mongoose": "^7.4.2",
"morgan": "^1.10.0",
"nodemailer": "^6.9.4",
"pg": "^8.11.1",
"postmark": "^3.0.19",
"pug": "^3.0.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}