Alabhya Jindal

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.

Screenshot of a person’s travel logs

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"
  }
}