- Docker
- Python 3.11
- FastAPI 0.109
- Pydantic 2.8
- Jinja2Fragments 1.2
- Motor 3.1
- HTMX 2.0
- Bootstrap 5.3
- MongoDB 7.0
- Mongo-Express
O projeto foi criado utilizando tecnologías simples e que entregam, assim facilitando a velocidade de desenvolvimento e adição de novas funcionalidades. Tudo isso dentro da container do Docker para facilitar o desenvolvimento em ambientes diferentes.
No front-end foi utilizado Bootstrap para estilização e responvidade da aplicação. Jinja2Fragments é utilizado para o backend retornar a pagina HTML ao usuário, diferente do Jinja ele pode retornar sómente blocos de HTML gerados no Jinja fazendo com que seja possivel criar junto com HTMX paginas que consigam conectar com o backend diretamente sem a necessidade de ter uma aplicação separada para o front-end já que HTMX te da acesso a AJAX, transições CSS, WebSockets e Server Sent Events direto no HTML.
No back-end foi utilizado FastAPI um framework moderno de alta performance para construção de APIs, junto com ele também é utilizado o framework Pydantic para validação de dados e por ultimo Motor para conexão asyncrona com banco de dados para poder aproveitar a asyncronissidade do FastAPI.
Imagem docker utilizada no desenvolvimento para facilitar o desenvolvimento com mongodb.
O projeto utiliza de algumas variáveis de ambiente que ficam no arquivo .env
. No repositório existe um arquivo de exemplo com nome de .env_example
que contem as variáveis de ambiente necessárias para rodar o projeto que são MONGO_INITDB_ROOT_USERNAME
e MONGO_INITDB_ROOT_PASSWORD
para uso do banco de dados.
Para rodar o projeto é necessário ter o docker instalado e rodar os seguintes comandos:
docker compose build
docker compose up
depois só acessar localhost na porta 8777 http://localhost:8777/persons/
No projeto existem testes criados com PyTest para os endpoints da API, todos os testes testam status code e a template retornada ao acessar o endpoint.
Para rodar os testes dentro do docker basta rodar o comando:
docker compose exec web pytest -v