Aplicação de lista de tarefas com front-end React e API Rails, organizada em uma única raiz de projeto para desenvolvimento local com Docker.
Este repositório é composto por:
web/: interface React responsiva para login, listas, tarefas e tags.api/: API Rails responsável por autenticação, persistência e regras de negócio.docker-compose.yml: orquestração local comdb,apieweb.
Fluxo principal:
- Usuário acessa o front-end em
web/. - O front-end autentica o usuário e salva o token recebido da API.
- O front chama a API para listar, criar, editar e remover task lists, tasks e tags.
- A API valida a requisição, aplica as regras de negócio e persiste os dados no PostgreSQL.
- O usuário visualiza o estado atualizado sem precisar sair da interface.
Browser
|
| HTTP
v
Web Container (React)
|
| HTTP interno
v
API Container (Rails)
|
| PostgreSQL
v
Database Container
- Front-end: React 18, React Router, Axios, Material UI, Styled Components.
- Back-end: Ruby on Rails 7.2, JSON API, autenticação via token JWT.
- Banco: PostgreSQL.
- Infra: Docker e Docker Compose.
web/- aplicação React
- código-fonte em
web/src - configurações do front em
web/package.json
api/- aplicação Rails
- controllers, models e services em
api/app - configurações do Rails em
api/config
docker-compose.yml- sobe os três serviços locais
.env.example- exemplo de variáveis de ambiente da raiz
- Docker e Docker Compose.
- Node.js e npm, caso queira rodar o front fora do Docker.
- Ruby e Bundler, caso queira rodar a API fora do Docker.
- PostgreSQL, caso queira rodar a API fora do Docker.
- Crie o arquivo de ambiente na raiz:
copy .env.example .envNo PowerShell:
Copy-Item .env.example .env- Se quiser alterar os valores padrão, ajuste no
.env:
DB_USERNAMEDB_PASSWORDDB_PORTDEVELOPMENT_DATABASETEST_DATABASEREACT_APP_API_URL
- Suba os serviços:
docker compose up --build- Acesse:
- Web: http://localhost:3001
- API: http://localhost:3000
- Health check: http://localhost:3000/up
O compose sobe três containers:
db: PostgreSQL com volume persistente.api: Rails apontando para o bancodb.web: React consumindo a API pela variávelREACT_APP_API_URL.
O front usa http://localhost:3000 por padrão em desenvolvimento local.
Para facilitar o primeiro login, o projeto possui usuários de seed para ambiente de desenvolvimento:
- Email:
joao@example.comSenha:password123 - Email:
maria@example.comSenha:password456
Se os usuários ainda não existirem no banco, execute:
docker compose exec api bundle exec rails db:seedArquivo: .env
DB_USERNAME: usuário do PostgreSQL.DB_PASSWORD: senha do PostgreSQL.DB_PORT: porta exposta do banco.DEVELOPMENT_DATABASE: nome do banco de desenvolvimento.TEST_DATABASE: nome do banco de testes.REACT_APP_API_URL: URL base da API usada pelo front.
Arquivo: api/.env.example
DB_USERNAMEDB_PASSWORDDB_PORTDEVELOPMENT_DATABASETEST_DATABASEDATABASE_URLquando quiser apontar para um banco remoto.
Arquivo: web/.env.example
REACT_APP_API_URL
cd api
bundle install
bundle exec rails db:create db:migrate
bundle exec rails servercd web
npm install
npm startcd api
bundle exec rails test
bundle exec rails db:prepare
bundle exec rails routescd web
npm run build
npm run lintdocker compose up --build
docker compose down
docker compose logs -f api
docker compose logs -f webcd api
bundle exec rails testcd web
npm run lint- Backend: api/README.md
- Frontend: web/README.md
- Guia de endpoints da API: api/doc/usage.md
A documentação detalhada dos endpoints, payloads, regras de negócio e exemplos de resposta está em api/doc/usage.md.
- Front não consegue acessar a API: confirme
REACT_APP_API_URLe se o containerapiestá no ar. - Erro de banco no backend: confira
DB_USERNAME,DB_PASSWORDe o status do containerdb. - Aplicação não sobe no Docker: rode
docker compose logs -f apiedocker compose logs -f webpara ver o ponto exato da falha.