fastify-boilerplate
Fastify 5 application boilerplate based on clean architecture, domain-driven design, CQRS, functional programming, vertical slice architecture for building production-grade applications π
νμΌ νμκΈ°
μ΅μ’ λ²μ λ€μ΄λ‘λ (.zip)- codeql-analysis.yml
- release.yml
- commit-msg
- pre-commit
- package.json
- 20240415225644_create_users_table.sql
- 20240415231037_users.seed.sql
- fastify-boilerplate.png
- fastify_logo.png
- CQRS.md
- dependency-graph.svg
- codegen.ts
- generate-types.sh
- env.ts
- index.ts
- create-settings.event-handler.ts
- create-user.graphql-schema.ts
- create-user.handler.ts
- create-user.resolver.ts
- create-user.route.ts
- create-user.schema.ts
- delete-user.handler.ts
- delete-user.route.ts
- user.repository.port.ts
- user.repository.ts
- user.domain.spec.ts
- user.domain.ts
- user.errors.ts
- user.events.ts
- user.types.ts
- user.graphql-schema.ts
- user.paginated.response.dto.ts
- user.response.dto.ts
- find-users.graphql-schema.ts
- find-users.handler.ts
- find-users.resolver.ts
- find-users.route.ts
- find-users.schema.ts
- index.ts
- user.action-creator.ts
- user.mapper.ts
- index.ts
- index.ts
- util.spec.ts
- util.ts
- cqrs.ts
- error-handler.ts
- gql.ts
- request-context.ts
- swagger.ts
- index.ts
- api-error.response.ts
- id.response.dto.ts
- paginated-query.request.dto.ts
- paginated.response.base.ts
- response.base.ts
- app-request-context.ts
- action-creator.spec.ts
- action-creator.ts
- bus.types.ts
- command-bus.ts
- event-bus.spec.ts
- event-bus.ts
- index.ts
- middlewares.ts
- otel-middleware.ts
- query-bus.ts
- request-bus.spec.ts
- request-bus.ts
- postgres.ts
- repository.port.ts
- sql-repository.base.ts
- aggregate.spec.ts
- aggregate.ts
- mapper.interface.ts
- query.base.ts
- exception-base.ts
- exceptions.ts
- index.ts
- compose-middlewares.spec.ts
- compose-middlewares.ts
- index.ts
- validator.util.ts
- declarations.d.ts
- index.ts
- instrumentation.ts
- common.steps.ts
- common-hooks.ts
- custom-world.ts
- server.ts
- create-user.feature
- create-user.k6.ts
- delete-user.feature
- user.steps.ts
- .dependency-cruiser.cjs
- .dockerignore
- .editorconfig
- .env.example
- .gitattributes
- .gitignore
- .nvmrc
- .releaserc
- AGENTS.md
- biome.json
- CHANGELOG.md
- CLAUDE.md
- commitlint.config.cjs
- cucumber.mjs
- docker-compose.yml
- Dockerfile
- LICENSE
- package.json
- pnpm-lock.yaml
- pnpm-workspace.yaml
- README.md
- renovate.json
- tsconfig.json
# μ€μΉ κ°μ΄λ
git clone https://github.com/marcoturi/fastify-boilerplate
κΉνλΈμμ νλ‘μ νΈ μ½λ μ 체λ₯Ό λ΄ μ»΄ν¨ν°λ‘ λ΄λ €λ°μ΅λλ€.
cd fastify-boilerplate
λ°©κΈ λ΄λ €λ°μ νλ‘μ νΈ ν΄λ μμΌλ‘ μ΄λν©λλ€.
2. Docker
μ¬μ μΆμ²- Git GitHubμμ νλ‘μ νΈ μ½λλ₯Ό λ΄λ €λ°μΌλ €λ©΄ νμν©λλ€.
- Docker Desktop 컨ν μ΄λλ₯Ό λΉλνκ³ μ€ννλ €λ©΄ νμν©λλ€. μ€μΉ ν μ€νν΄μ λ°±κ·ΈλΌμ΄λμ μΌλμΈμ.
docker compose up postgres -d # via Docker Compose
μ μλ λͺ¨λ 컨ν μ΄λ(μλ², DB λ±)λ₯Ό ν λ²μ λΉλνκ³ λ°±κ·ΈλΌμ΄λμμ μ€νν©λλ€.
docker compose up # builds the app image and starts all services
μ μλ λͺ¨λ 컨ν μ΄λ(μλ², DB λ±)λ₯Ό ν λ²μ λΉλνκ³ λ°±κ·ΈλΌμ΄λμμ μ€νν©λλ€.
docker build -t fastify-boilerplate .
Dockerfileμ κΈ°λ°μΌλ‘ μ€ν κ°λ₯ν μ΄λ―Έμ§λ₯Ό λΉλν©λλ€.
docker run -p 3000:3000 --env-file .env -e HOST=0.0.0.0 fastify-boilerplate
λΉλλ μ΄λ―Έμ§λ₯Ό μ€μ 컨ν μ΄λλ‘ μ€νν©λλ€.
μ΄ λ ν¬μ READMEμ μ ν μ€μ λͺ λ Ήμ΄λ₯Ό κ·Έλλ‘ κ°μ Έμμ΅λλ€.
3. Node.js
μ¬μpnpm install
package.jsonμ λͺ μλ λΌμ΄λΈλ¬λ¦¬λ€μ λ΄λ €λ°μ μ€μΉν©λλ€.
pnpm create:env # copies .env.example β .env
μ΄ λͺ λ Ήμ΄λ₯Ό ν°λ―Έλμ κ·Έλλ‘ μ λ ₯ν΄ μ€ννμΈμ.
pnpm db:migrate
μ΄ λͺ λ Ήμ΄λ₯Ό ν°λ―Έλμ κ·Έλλ‘ μ λ ₯ν΄ μ€ννμΈμ.
pnpm start
κ°λ°/μ€ν μλ²λ₯Ό μΌλλ€.
pnpm create:env # create .env from .env.example (if not done already)
μ΄ λͺ λ Ήμ΄λ₯Ό ν°λ―Έλμ κ·Έλλ‘ μ λ ₯ν΄ μ€ννμΈμ.
μ΄ λ ν¬μ READMEμ μ ν μ€μ λͺ λ Ήμ΄λ₯Ό κ·Έλλ‘ κ°μ Έμμ΅λλ€.
