API REST desenvolvida com Ruby/Sinatra para autenticação de usuários utilizando JWT token e PostgreSQL.
- Ruby
- Sinatra (Framework Web)
- PostgreSQL (Banco de dados)
- JWT (Autenticação)
- BCrypt (Criptografia de senhas)
- ActiveRecord (ORM)
- Ruby 3.0+
- PostgreSQL
- Bundler
- Clone o repositório
git clone <url-do-repositorio>
cd rika-app
- Instale as dependências
bundle install
- Configure as variáveis de ambiente
cp .env.example .env
- Edite o arquivo
.env
com suas configurações:
# API Configs
API_NAME=Rika App
CORS_URL=http://localhost:3000
TIMEZONE=America/Recife
# Database Configs
DB_ADAPTER=postgresql
DB_HOST=localhost
DB_NAME=rika_db
DB_USERNAME=seu_usuario_postgres
DB_PASSWORD=sua_senha_postgres
DB_PORT=5432
# JWT Config
JWT_SECRET=sua_chave_secreta_jwt
- Crie e configure o banco de dados
rake db:create
rake db:migrate
Para iniciar o servidor:
ruby app.rb
Por padrão a API estará disponível em http://localhost:4567
POST /register
Content-Type: application/json
{
"email": "[email protected]",
"password": "senha123",
"name": "Nome Completo",
"phone": "81999999999"
}
Resposta de sucesso:
{
"id": 1,
"email": "[email protected]",
"name": "Nome Completo",
"phone": "81999999999"
}
POST /login
Content-Type: application/json
{
"email": "[email protected]",
"password": "senha123"
}
Resposta de sucesso:
{
"token": "eyJhbGciOiJIUzI1NiJ9..."
}
Para rotas protegidas, inclua o token JWT no header:
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
O token tem validade de 1 hora.
.
├── app.rb # Arquivo principal
├── Gemfile # Dependências
├── .env # Variáveis de ambiente
├── .env.example # Exemplo de variáveis de ambiente
├── config/
│ └── database.yml # Configuração do banco
├── controllers/
│ └── auth_controller.rb # Controller de autenticação
├── models/
│ └── user.rb # Modelo de usuário
├── middlewares/
│ └── auth_middleware.rb # Middleware de autenticação
└── db/
└── migrate/ # Migrações do banco
rake db:create_migration NAME=nome_da_migracao
rake db:rollback STEP=1
Antes de colocar em produção:
- Configure uma chave JWT_SECRET forte
- Ajuste as configurações de CORS
- Configure as variáveis de ambiente do banco de dados
- Use um servidor de produção (ex: Puma)
- Configure SSL/TLS
- Faça um fork do projeto
- Crie sua branch de feature (
git checkout -b feature/nova-feature
) - Commit suas alterações (
git commit -am 'Adiciona nova feature'
) - Push para a branch (
git push origin feature/nova-feature
) - Abra um Pull Request
Este projeto está sob a licença MIT.