API backend para a aplicação HabitFlow, um rastreador de hábitos. Construída com Ruby on Rails, esta API segue uma arquitetura API-First, servindo dados em formato JSON para qualquer cliente, seja web ou mobile.
- Autenticação Segura: Sistema de registro e login com tokens JWT (JSON Web Tokens), utilizando a gem Devise.
- CRUD de Hábitos: Endpoints completos para Criar, Ler, Atualizar e Apagar hábitos, sempre no escopo do usuário autenticado.
- CRUD de Check-ins: Endpoints aninhados para registrar e remover o progresso diário de um hábito.
- Gerenciamento de Perfil: Endpoint para o usuário visualizar e atualizar suas próprias informações.
- Ruby on Rails 8 (modo API-Only)
- PostgreSQL como banco de dados
- Puma como servidor web
- Devise & Devise-JWT para autenticação stateless
- RSpec para a suíte de testes
- Docker para um ambiente de desenvolvimento padronizado com PostgreSQL
A API está versionada e disponível sob o caminho /api/v1/. Todas as requisições (exceto login/cadastro) exigem um Bearer Token no cabeçalho Authorization.
| Verbo | Endpoint | Protegido? | Descrição |
|---|---|---|---|
| Autenticação | |||
POST |
/signup |
Não | Cria um novo usuário. |
POST |
/login |
Não | Autentica um usuário e retorna um token JWT. |
DELETE |
/logout |
Sim | Invalida o token JWT do usuário. |
| Hábitos | |||
GET |
/api/v1/habits |
Sim | Lista todos os hábitos do usuário logado. |
POST |
/api/v1/habits |
Sim | Cria um novo hábito. |
PUT/PATCH |
/api/v1/habits/:id |
Sim | Atualiza um hábito existente. |
DELETE |
/api/v1/habits/:id |
Sim | Apaga um hábito. |
| Check-ins | |||
POST |
/api/v1/habits/:id/checkins |
Sim | Cria um check-in para um hábito em uma data. |
| Perfil | |||
GET |
/api/v1/profile |
Sim | Retorna os dados do usuário logado. |
PUT/PATCH |
/api/v1/profile |
Sim | Atualiza os dados do usuário logado. |
- Pré-requisitos: Ruby (via
rbenv), Bundler e Docker instalados. - Clone o repositório:
git clone https://github.com/[seu-usuario]/habitflow-api.git - Instale as dependências:
bundle install - Inicie o banco de dados PostgreSQL com Docker:
docker compose up -d - Crie e configure o arquivo de credenciais para o segredo do JWT:
E adicione a linha:
EDITOR="code --wait" bin/rails credentials:editdevise_jwt_secret_key: 'COLE_AQUI_UMA_CHAVE_GERADA_COM_RAILS_SECRET' - Crie e migre o banco de dados:
bin/rails db:create db:migrate - Inicie o servidor:
bin/rails s
A API estará disponível em http://localhost:3000.
- [Pedro Urio] - [https://www.linkedin.com/in/pedro-henrique-u-4476aa257/]
Este projeto está sob a licença MIT.