fastify-boilerplate

(โ˜… 461)

Fastify 5 application boilerplate based on clean architecture, domain-driven design, CQRS, functional programming, vertical slice architecture for building production-grade applications ๐Ÿš€

  • .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

# ์„ค์น˜ ๊ฐ€์ด๋“œ

1. ์ฝ”๋“œ ๋‚ด๋ ค๋ฐ›๊ธฐ
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

๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋ฅผ ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

โœ… ํ„ฐ๋ฏธ๋„์— docker compose ps ๋ฅผ ์ž…๋ ฅํ•ด ์ปจํ…Œ์ด๋„ˆ๋“ค์ด Up ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”. README์— ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:ํฌํŠธ๋ฒˆํ˜ธ ๋กœ ์ ‘์†ํ•ด๋ณด์„ธ์š”.

์ด ๋ ˆํฌ์˜ README์— ์ ํžŒ ์‹ค์ œ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

3. Node.js

์‰ฌ์›€
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Git GitHub์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Node.js npm ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ ค๋ฉด Node.js๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. LTS(์žฅ๊ธฐ์ง€์›) ๋ฒ„์ „์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
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)

์ด ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•ด ์‹คํ–‰ํ•˜์„ธ์š”.

โœ… ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ํ„ฐ๋ฏธ๋„์— ๋‚˜ํƒ€๋‚˜๋Š” ์ฃผ์†Œ(๋ณดํ†ต http://localhost:3000 ํ˜•ํƒœ)๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด์–ด๋ณด์„ธ์š”.

์ด ๋ ˆํฌ์˜ README์— ์ ํžŒ ์‹ค์ œ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

// repository documentation