Express Postgres Starter
A starter project for Node.js with Express and Postgres
- Docker for Desktop
docker-compose up in the root of the project.
It will bring up Postgres and the Express application server in development mode.
It binds the application server to
localhost:3000, this can be re-mapped this by changing the first 3000 in
3000:3000 of ./docker-compose.yaml).
Postgres is exposed on port
35432. The connection string is
postgres://user:pass@localhost:35432/db (username, password and database name are defined in ./docker-compose.yaml).
You can connect to Postgres using the psql client:
The default Docker
npm start, ./docker-compose.yaml overrides this to
npm run dev which runs the application using nodemon (auto-restart on file change).
Express API setup
The Express API is located in ./src/api.
Applications routes for resources are defined in ./src/api/index.js.
Global concerns like security, cookie parsing, body parsing and request logging are handled in ./server.js.
This application loosely follows the Presentation Domain Data Layering:
- Presentation is dealt with in the
- Domain is dealt with in the
./src/modulesfolder. It's currently non-existent since we've only got generic user and session resources.
- Data is dealt with in the
Database setup + management
npm run migrate up will run the migrations.
npm run migrate down will roll back the migrations.
npm run migrate:create <migration-name> will create a new migration file in ./src/migrations.
To run the migrations inside of docker-compose. Which will run a bash instance inside the
docker-compose run app bash
npm run migrate up