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์ ์ ํ ์ค์ ๋ช ๋ น์ด๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์์ต๋๋ค.
