Skip to content

piotrkabacinski/node-starter

Repository files navigation

Hello, Node.js!

Dockerized Node.js project starter using following stack:

Setup

# Clone repo:
git clone [email protected]:piotrkabacinski/node-starter.git --depth 1

# Create .env file based on template file:
cp .env.template .env

docker compose build

# Install dependencies:
docker compose run --rm app pnpm i

# Create Prisma client:
docker compose run --rm app pnpm run prisma -- generate

# Run migrations:
docker compose run --rm app pnpm run migration:deploy

# Run server:
docker compose up

When installing new dependencies locally do it within container as well:

docker compose run --rm app pnpm i

Prisma ORM

Docs

If using VS Code try prisma extension for better DX.

When changing prisma's schema (src/db/schema.prisma) run migration command:

# Create and run migration:
pnpm run migration <migration name>

# Apply migrations on production server after deploy:
pnpm run migration:deploy

Tests

docker compose run --rm app pnpm t

Postgres

docker exec -it <container name prefix>_db_1 psql -U postgres

\l # List all data bases
\c <db name> # Connect to DB
\dt # Show data base tables

Redis

docker exec -it <container name prefix>_redis_1 redis-cli

Insomnia

For manual tests of Todo API example you can import Insomnia workspace from insomnia.json.

Deployment

Don't forget to generate prisma files first and then actuall build command:

pnpm install --frozen-lockfile && \
pnpm run prisma -- generate && \ 
pnpm run migration:deploy && \ 
pnpm run build