front_ponto_eletronico/README.md
2025-03-17 15:00:51 -03:00

208 lines
4.8 KiB
Markdown

# API de Usuários e Grupos
Esta é uma API simples construída com Flask, SQLAlchemy e JWT para autenticação. Ela permite a criação de usuários, grupos, e a gestão desses dados.
## Tecnologias
- **Flask**: Framework web em Python.
- **SQLAlchemy**: ORM para interação com o banco de dados.
- **JWT**: Autenticação baseada em tokens JWT.
- **SQLite**: Banco de dados leve e simples para desenvolvimento.
## Instalação
---
### Pré-requisitos
- Python 3.12 ou superior
- Pip (gerenciador de pacotes Python)
### Passos para instalar
1. **Clone o repositório**:
```bash
git clone <URL_DO_REPOSITORIO>
cd <nome_do_repositorio>
```
2. **Crie um ambiente virtual (opcional, mas recomendado)**:
```bash
python3 -m venv venv
source venv/bin/activate # No Windows use venv\Scripts\activate
```
3. **Instale as dependências**:
```bash
pip install -r requirements.txt
```
4. **Configure o banco de dados**:
- O banco de dados será criado automaticamente quando você rodar as migrações, mas você pode definir a URI do banco no arquivo `config.py`.
## Execução da Aplicação
### Rodando Manualmente (sem Docker)
1. **Rodar a aplicação localmente**:
Para rodar a aplicação manualmente, você pode usar o comando abaixo:
```bash
python app.py
```
A API estará disponível em `http://127.0.0.1:5000/`.
2. **Executar as migrações e seed**:
Se você precisar rodar as migrações e seed de banco de dados, siga os passos abaixo antes de rodar a aplicação:
- **Inicializar o banco de dados** (se necessário):
```bash
flask db init
```
- **Gerar as migrações**:
```bash
flask db migrate -m "Descrição da migração"
```
- **Aplicar as migrações**:
```bash
flask db upgrade
```
- **Rodar o seed de dados**:
```bash
python seed.py
```
### Rodando com Docker
Se você preferir rodar a aplicação em um container Docker, siga os passos abaixo.
1. **Construir a imagem Docker**:
Se ainda não construiu a imagem, execute o seguinte comando para construir a imagem Docker a partir do `Dockerfile`:
```bash
docker build -t flask-app .
```
2. **Rodar a aplicação com Docker Compose**:
Se você tiver o arquivo `docker-compose.yml` configurado corretamente, basta executar o comando abaixo para iniciar a aplicação com o Docker Compose:
```bash
docker-compose up
```
Isso irá iniciar a aplicação no container e a API estará disponível em `http://127.0.0.1:5000/`.
## Migrações e Seed
### Migrações com Flask-Migrate
1. **Iniciar o repositório de migrações**:
Se for a primeira vez que você está configurando as migrações no projeto, execute:
```bash
flask db init
```
2. **Gerar migração**:
Sempre que você modificar o modelo do banco de dados (como adicionar uma nova tabela ou coluna), execute:
```bash
flask db migrate -m "Descrição da migração"
```
3. **Aplicar migrações**:
Para aplicar as migrações e atualizar o banco de dados:
```bash
flask db upgrade
```
### Seed de Banco de Dados
Para popular o banco de dados com dados iniciais, execute o seguinte comando:
```bash
python -m app.seeds.run_seeds
```
Isso vai inserir dados padrão no banco de dados, como um usuário administrador, se o script `seed.py` estiver configurado corretamente.
## Endpoints
### Criar Usuário
- **Método**: `POST`
- **URL**: `/users/`
- **Autenticação**: Bearer Token (JWT)
- **Requisição**:
```json
{
"username": "novo_usuario",
"password": "senha_segura",
"group_id": 1
}
```
- **Respostas**:
- **201**: Usuário criado com sucesso.
- **400**: Usuário já existe.
- **404**: Grupo não encontrado.
- **422**: Dados ausentes ou inválidos.
### Listar Usuários
- **Método**: `GET`
- **URL**: `/users/`
- **Autenticação**: Bearer Token (JWT)
- **Respostas**:
- **200**: Lista de usuários.
### Criar Grupo
- **Método**: `POST`
- **URL**: `/groups/`
- **Autenticação**: Bearer Token (JWT)
- **Requisição**:
```json
{
"name": "admin"
}
```
- **Respostas**:
- **201**: Grupo criado com sucesso.
- **400**: Nome de grupo já existe.
- **422**: Dados inválidos.
## Contribuindo
1. Faça um fork deste repositório.
2. Crie uma branch com suas mudanças: `git checkout -b minha-nova-feature`.
3. Faça commit das suas mudanças: `git commit -am 'Adicionando nova feature'`.
4. Envie para o repositório remoto: `git push origin minha-nova-feature`.
5. Abra um pull request.
## Licença
Este projeto está licenciado sob a [MIT License](LICENSE).