<<<<<<< HEAD
=======
API desenvolvida em Ruby on Rails (API mode) com PostgreSQL, JWT, Docker/Compose e CI/CD.
O projeto implementa autenticação JWT e CRUD de usuários e tarefas, servindo como base para projetos mais complexos e como exemplo de boas práticas em Rails moderno.
- Linguagem: Ruby 3.3
- Framework: Rails 7.2 (API-only)
- Banco de dados: PostgreSQL 16
- Auth: JWT (Bearer Token)
- Testes: RSpec, FactoryBot, Faker, SimpleCov
- Qualidade: RuboCop (lint), Brakeman (segurança)
- Infra: Docker + Docker Compose
- CI/CD: GitHub Actions
.
├── app
│ ├── controllers # Controllers da API (Application, Auth, Users, Tasks)
│ ├── models # Models (User, Task, ApplicationRecord)
│ ├── serializers # Serialização de objetos (opcional)
│ └── ...
├── config
│ ├── application.rb # Configuração principal da aplicação
│ ├── database.yml # Configuração de banco
│ ├── environments/ # Configs por ambiente (dev/test/prod)
│ └── routes.rb # Rotas da API
├── db
│ ├── migrate/ # Migrations de schema
│ └── seeds.rb # Seeds iniciais (usuário demo + tasks)
├── spec # Testes RSpec
│ ├── requests # Testes de controllers/endpoints
│ ├── models # Testes de models
│ └── support # Helpers de testes
├── Dockerfile
├── docker-compose.yml
├── Gemfile
├── Rakefile
└── README.md
Método | Endpoint | Descrição | Auth |
---|---|---|---|
GET | /health |
Status da API | ❌ |
Método | Endpoint | Descrição | Body |
---|---|---|---|
POST | /auth/sign_in |
Login e gera JWT | { "email": "...", "password": "..." } |
Método | Endpoint | Descrição | Auth |
---|---|---|---|
POST | /users |
Criar usuário | ❌ |
GET | /users |
Listar usuários | ✅ |
GET | /users/:id |
Detalhar usuário | ✅ |
Método | Endpoint | Descrição | Auth |
---|---|---|---|
GET | /tasks |
Listar tasks do usuário | ✅ |
POST | /tasks |
Criar task | ✅ |
GET | /tasks/:id |
Detalhar task | ✅ |
PUT | /tasks/:id |
Atualizar task | ✅ |
DELETE | /tasks/:id |
Remover task | ✅ |
- Crie um usuário (
POST /users
). - Faça login (
POST /auth/sign_in
) → retorna umtoken
. - Use o token nas rotas protegidas:
Authorization: Bearer <TOKEN>
docker compose up --build -d
docker compose run --rm api bash -lc "bundle exec rails db:create db:migrate db:seed"
curl http://localhost:3000/health
bundle install
export DATABASE_URL="postgres://postgres:postgres@localhost:5432/rails_api_dev"
export JWT_SECRET="supersecretjwt"
bin/rails db:create db:migrate db:seed
bin/rails s -p 3000
# Testes
docker compose run --rm api bash -lc "bundle exec rspec"
# Cobertura de testes
open coverage/index.html
# Linter
docker compose run --rm api bash -lc "bundle exec rubocop"
# Segurança
docker compose run --rm api bash -lc "bundle exec brakeman -q"
- Importe o arquivo
Portfolio-Rails-API.postman_collection.json
. - Configure variáveis:
base_url = http://localhost:3000
jwt
será preenchido automaticamente após Sign In.
- Ordem sugerida:
- Criar usuário
- Sign In
- Criar/Listar/Atualizar/Deletar Tasks
Pipeline executa automaticamente em push
e pull_request
:
- RSpec (testes)
- Brakeman (segurança)
- RuboCop (lint)
9c5a663 (docs(readme): documentação completa (stack, rotas, setup, testes, CI))