- Express 5.1.0
- PostgreSQL 3.4.5
- Drizzle 0.45.2
- JWT 9.0.2
- Resend 4.2.0
- Zod 3.24.2
- Sharp 0.35.3
Visit to my portfolio for more: https://sanchir.dev
- Pre-made authorization pages that include: Login, Register, Logout, Forgot Password, Reset Password, Verify Email.
- Google Cloud Storage integration.
- Middlewares
- CORS options
- Node.js 20.9.0 or newer. Sharp 0.35 dropped Node 18 support, so older versions fail at install time.
- A PostgreSQL database.
- Clone this repository to your folder:
git clone https://github.com/sanchir2011/express-postgresql.git backend - Go to the folder where you cloned:
cd backend - Install all dependencies by running
npm install - Create
.envfile for development:cp .env.example .env - Edit the created
.envfile: - Replace variables.
- Now you are safe to run
npm run startto start your Express Server.
Congratulations 🎉 You just created your Express REST API 😊. If you liked it, please leave a star ⭐️. Thanks!
package.json carries an overrides block. It keeps npm audit at zero without downgrading anything:
uuid—@google-cloud/storagepullsuuid@9in throughgaxiosandteeny-request. Forcing^11.1.1clears GHSA-w5hq-g745-h8pq. Upgrading@google-cloud/storageto 8.x would also fix it, but that release requires Node 22.@esbuild-kit/core-utils—drizzle-kitstill ships the deprecated@esbuild-kit/esm-loader, which pinsesbuild@0.18. Forcing^0.25.12clears GHSA-67mh-4wv8-2f99. There is no newerdrizzle-kitto upgrade to — 0.31.10 is the latest and still carries the old loader.
npm audit fix --force. npm's suggested fix for these two is to downgrade drizzle-kit to 0.18.1 and @google-cloud/storage to 5.x, which breaks migrations and file uploads.
If you ever change the overrides block, run a fresh install so it takes effect — npm ignores new overrides when an existing lockfile already pins the old resolution:
rm -rf node_modules package-lock.json && npm install