Este é um projeto de uma aplicação TODO List Full-Stack desenvolvido para a disciplina de Tópicos Especiais (BRATOPI) do curso de Análise e Desenvolvimento de Sistemas do IFSP - Câmpus de Bragança Paulista.
O principal objetivo do projeto é demonstrar a aplicação de conceitos de DevOps e arquitetura de software limpa (Clean Architecture), utilizando containers Docker para criar um ambiente de desenvolvimento e produção desacoplado, escalável e fácil de gerenciar.
Em Desenvolvimento 🚧
A aplicação permite o gerenciamento de tarefas com as seguintes funcionalidades planejadas:
- Autenticação de Usuário: Tela de login com mock de usuário e persistência de sessão.
- CRUD Básico: Criar, listar, atualizar e deletar tarefas.
- Hierarquia: Suporte para tarefas e sub-tarefas aninhadas.
- Progresso: Cálculo de porcentagem de conclusão para tarefas "pai".
- Tags: Sistema de tags (etiquetas) para categorizar tarefas.
- Calendário: Visualização das tarefas com prazo em um calendário.
- Suporte a Temas: Alternância entre temas claro e escuro.
A aplicação agora conta com uma tela de login moderna e minimalista, protegendo o acesso às funcionalidades principais.
- Mock de Usuário: Para fins de desenvolvimento, um usuário mockado é utilizado para o login.
- Email:
test@example.com - Senha:
password
- Email:
- Persistência de Sessão: A sessão do usuário é persistida no
localStoragedo navegador, mantendo o usuário logado mesmo após recarregar a página. - Visualização de Senha: O campo de senha possui um ícone de olho para permitir visualizar ou ocultar a senha digitada.
Aqui estão algumas capturas de tela da aplicação:
A arquitetura do projeto é dividida em várias camadas e tecnologias:
- Angular: Framework para a construção da interface de usuário reativa (SPA).
- TypeScript: Superset do JavaScript que adiciona tipagem estática.
- Python: Linguagem de programação para a lógica do servidor.
- Flask: Microframework para a criação da API REST.
- SQLAlchemy: ORM para mapeamento objeto-relacional com o banco de dados.
- Gunicorn: Servidor WSGI para rodar a aplicação em produção.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Neon: Provedor de banco de dados PostgreSQL serverless na nuvem.
- Docker: Plataforma de containerização para isolar e empacotar as aplicações.
- Docker Compose: Ferramenta para definir e gerenciar a aplicação multi-container.
- Nginx: Servidor web de alta performance para servir a aplicação Angular.
- Docker Swarm: Ferramenta de orquestração para clusterização e escalonamento.
Siga os passos abaixo para executar a aplicação em seu ambiente local.
Antes de começar, você vai precisar ter as seguintes ferramentas instaladas:
-
Clone o repositório:
git clone https://github.com/ArthurDeFaria/docker-flask-angular-todo.git
-
Navegue até a pasta raiz do projeto:
cd docker-flask-angular-todo -
Configure as Variáveis de Ambiente: A aplicação backend precisa da URL de conexão do banco de dados para funcionar.
- Vá até a pasta
backend/. - Crie uma cópia do arquivo
.env.examplee renomeie para.env. - Abra o arquivo
.enve substitua o valor deDATABASE_URLpela sua URL de conexão do Neon DB.
- Vá até a pasta
Este é o método mais simples para subir a aplicação completa.
-
Suba os containers: A partir da pasta raiz do projeto, execute o comando a seguir. Ele irá construir as imagens e iniciar os containers.
docker-compose up --build
-
Acesse a aplicação: Abra seu navegador e acesse
http://localhost:4200. Você será redirecionado para a tela de login. Utilize as credenciais mockadas para acessar:- Email:
test@example.com - Senha:
password
- Email:
Para demonstrar a capacidade de orquestração e escalonamento.
-
Inicialize o Swarm:
docker swarm init
-
Faça o deploy da stack:
docker stack deploy -c docker-compose.yml todoapp
-
Verifique os serviços:
docker service ls
-
Demonstre o escalonamento (Exemplo):
docker service scale todoapp_backend=3
O projeto está organizado em um monorepo, com o backend seguindo os princípios da Clean Architecture:
.
├── backend/ # Contém a aplicação Flask (API)
│ ├── app/ # Pacote principal da aplicação
│ │ ├── application/ # Camada de casos de uso e interfaces
│ │ ├── domain/ # Camada de entidades de negócio
│ │ └── infrastructure/ # Camada de frameworks (web, db)
│ ├── run.py # Ponto de entrada da aplicação
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/ # Contém a aplicação Angular (UI)
│ ├── src/
│ ├── Dockerfile
│ └── nginx.conf
└── docker-compose.yml # Orquestra os containers
Este projeto está sob a licença MIT. Veja o arquivo LICENSE.md para mais detalhes.



