API REST para a plataforma falae.dev - um forum focado em desenvolvedores.
- Java 25 + Spring Boot 3.5.6
- PostgreSQL com Flyway migrations
- JWT para autenticacao (+ Google OAuth)
- AWS S3 para armazenamento de arquivos
- Testcontainers para testes de integracao
Arquitetura Hexagonal (Ports and Adapters) com 3 modulos Maven:
core (dominio) → application (use cases) → infrastructure (adapters)
| Modulo | Responsabilidade |
|---|---|
| core | Entidades de dominio puras (Article, Author, Comment, Topic, Admin) |
| application | Use cases, ports (interfaces) e DTOs |
| infrastructure | Spring Boot, controllers, JPA, servicos externos |
# Build
./mvnw clean install
# Build sem testes
./mvnw clean install -DskipTests
# Rodar a aplicacao
./mvnw spring-boot:run -pl infrastructure
# Rodar testes
./mvnw test- Autores: Cadastro, login, perfil, foto de perfil
- Artigos: CRUD, upload de conteudo (md/html), capa e imagens
- Topicos: Discussoes no forum
- Comentarios: Aninhados, suporte a replies
- Interacoes: Like, dislike, save
- BugCoins: Sistema de gamificacao para recompensar contribuicoes
- Admin: Moderacao de conteudo
Documentacao completa das rotas em API_ROUTES.md.
| Controller | Base Path | Descricao |
|---|---|---|
| Auth | /auth |
Login, logout, Google OAuth, verificacao de email |
| Authors | /api/authors |
Perfil e conteudo do autor |
| Articles | /article |
CRUD de artigos |
| Topics | /api/topic |
CRUD de topicos |
| Comments | /api/comment |
CRUD de comentarios |
| Feed | /api/feed |
Feed unificado |
| Search | /api/search |
Busca por tags |
| Admin | /api/admin |
Operacoes administrativas |
# Database
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/falae
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=postgres
# JWT
JWT_SECRET=your-secret-key
# AWS S3 / R2
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_S3_BUCKET=...
AWS_S3_ENDPOINT=...
# Google OAuth
GOOGLE_CLIENT_ID=...
# Email (opcional)
RESEND_API_KEY=...front: https://falae.dev
back: https://api.falae.dev
front: https://test.falae.dev
back: https://test-api.falae.dev
OBS: o back do ambiente de homologação tem um cold start de 1min