| docs | ||
| models | ||
| routes | ||
| seeds | ||
| Tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| app.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| extensions.py | ||
| README.md | ||
| requirements.txt | ||
| TODO.txt | ||
| utils.py | ||
| wait-for-it.sh | ||
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
-
Clone o repositório:
git clone <URL_DO_REPOSITORIO> cd <nome_do_repositorio> -
Crie um ambiente virtual (opcional, mas recomendado):
python3 -m venv venv source venv/bin/activate # No Windows use venv\Scripts\activate -
Instale as dependências:
pip install -r requirements.txt -
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.
- O banco de dados será criado automaticamente quando você rodar as migrações, mas você pode definir a URI do banco no arquivo
Execução da Aplicação
Rodando Manualmente (sem Docker)
-
Rodar a aplicação localmente:
Para rodar a aplicação manualmente, você pode usar o comando abaixo:
python app.pyA API estará disponível em
http://127.0.0.1:5000/. -
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):
flask db init -
Gerar as migrações:
flask db migrate -m "Descrição da migração" -
Aplicar as migrações:
flask db upgrade -
Rodar o seed de dados:
python seed.py
-
Rodando com Docker
Se você preferir rodar a aplicação em um container Docker, siga os passos abaixo.
-
Construir a imagem Docker:
Se ainda não construiu a imagem, execute o seguinte comando para construir a imagem Docker a partir do
Dockerfile:docker build -t flask-app . -
Rodar a aplicação com Docker Compose:
Se você tiver o arquivo
docker-compose.ymlconfigurado corretamente, basta executar o comando abaixo para iniciar a aplicação com o Docker Compose:docker-compose upIsso 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
-
Iniciar o repositório de migrações:
Se for a primeira vez que você está configurando as migrações no projeto, execute:
flask db init -
Gerar migração:
Sempre que você modificar o modelo do banco de dados (como adicionar uma nova tabela ou coluna), execute:
flask db migrate -m "Descrição da migração" -
Aplicar migrações:
Para aplicar as migrações e atualizar o banco de dados:
flask db upgrade
Seed de Banco de Dados
Para popular o banco de dados com dados iniciais, execute o seguinte comando:
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:
{
"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:
{
"name": "admin"
}
- Respostas:
- 201: Grupo criado com sucesso.
- 400: Nome de grupo já existe.
- 422: Dados inválidos.
Contribuindo
- Faça um fork deste repositório.
- Crie uma branch com suas mudanças:
git checkout -b minha-nova-feature. - Faça commit das suas mudanças:
git commit -am 'Adicionando nova feature'. - Envie para o repositório remoto:
git push origin minha-nova-feature. - Abra um pull request.
Licença
Este projeto está licenciado sob a MIT License.