Initialize the backend repository for the Book Store API using Node.js and Express. The project should include development tooling, linting/formatting, SQLite with an ORM, auto-reloading, Swagger docs, and a Dockerfile for deployment.
Goals
Set up a clean, consistent, and production-ready base project.
Tech Decisions
- DB: SQLite (lightweight, file-based)
- ORM: Prisma (modern, beginner-friendly, great DX)
Tasks
Core Setup
Express App
Database Setup (SQLite + Prisma)
Linting & Formatting
Staged Linting (Pre-commit)
Dev Experience
Swagger Setup
Scripts
Docker (App Only)
Acceptance Criteria
Definition of Done
Optional (Nice to Have)
Initialize the backend repository for the Book Store API using Node.js and Express. The project should include development tooling, linting/formatting, SQLite with an ORM, auto-reloading, Swagger docs, and a Dockerfile for deployment.
Goals
Set up a clean, consistent, and production-ready base project.
Tech Decisions
Tasks
npm init)Core Setup
Install core dependencies:
express@prisma/clientInstall dev dependencies:
nodemoneslintprettiereslint-config-prettiereslint-plugin-prettierlint-stagedhuskyprismaExpress App
app.jsorserver.js)GET /healthDatabase Setup (SQLite + Prisma)
Initialize Prisma:
Configure SQLite in
schema.prismaCreate
Bookmodel:id(Int, primary key)name(String)author(String or JSON)price(Float)publisher(String, optional)Run migration:
Generate Prisma client
Test DB connection
Linting & Formatting
Configure ESLint:
.eslintignoreConfigure Prettier:
.prettierrc.prettierignoreStaged Linting (Pre-commit)
Initialize Husky
Add pre-commit hook
Configure
lint-staged:.jsfilesEnsure commits fail on lint errors
Dev Experience
.gitignorenodemon.jsonor scriptSwagger Setup
swagger-ui-expressswagger-jsdoc/api-docsrouteScripts
startdevlintlint:fixformatprisma:migrateprisma:generateDocker (App Only)
DockerfileAcceptance Criteria
/api-docsDefinition of Done
Optional (Nice to Have)
Add
dotenvAdd folder structure:
/src/routes/src/controllers/src/middlewares/src/servicesAdd README