rich-domain

Fastify DDD Project

Projeto base usando Fastify, Prisma, Zod e Domain-Driven Design (DDD).

Estrutura do Projeto

src/
├── domain/                 # Camada de Domínio
│   ├── user/
│   │   ├── user.entity.ts       # Agregado User
│   │   └── user.repository.ts   # Interface do repositório
│   └── post/
│       ├── post.entity.ts       # Agregado Post
│       └── post.repository.ts   # Interface do repositório
├── application/            # Camada de Aplicação
│   └── use-cases/
│       ├── user/                # Casos de uso de User
│       └── post/                # Casos de uso de Post
├── infrastructure/         # Camada de Infraestrutura
│   ├── database/
│   │   └── prisma.ts            # Cliente Prisma
│   ├── repositories/
│   │   ├── prisma-user.repository.ts
│   │   └── prisma-post.repository.ts
│   └── http/
│       └── routes/
│           ├── user.routes.ts
│           └── post.routes.ts
└── server.ts              # Arquivo principal do servidor

Requisitos

Configuração

  1. Instalar dependências:
npm install
  1. Copiar o arquivo de ambiente:
cp .env.example .env
  1. Iniciar o banco de dados PostgreSQL:
docker-compose up -d
  1. Gerar o Prisma Client:
npm run prisma:generate
  1. Executar as migrations:
npm run prisma:migrate

Executar o Projeto

Desenvolvimento:

npm run dev

Build:

npm run build
npm start

API Endpoints

Users

Posts

Health Check

Tecnologias