https://github.com/dunossauro/fastapi-do-zero
Curso básico de FastAPI
https://github.com/dunossauro/fastapi-do-zero
alembic brasil brazil fastapi pydantic python sqlalchemy
Last synced: 5 months ago
JSON representation
Curso básico de FastAPI
- Host: GitHub
- URL: https://github.com/dunossauro/fastapi-do-zero
- Owner: dunossauro
- Created: 2023-07-13T07:13:45.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-03T17:43:46.000Z (6 months ago)
- Last Synced: 2025-04-06T21:06:14.092Z (6 months ago)
- Topics: alembic, brasil, brazil, fastapi, pydantic, python, sqlalchemy
- Language: Python
- Homepage: https://fastapidozero.dunossauro.com/
- Size: 44 MB
- Stars: 768
- Watchers: 16
- Forks: 82
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# FastAPI do Zero
O site gerado por esse repositório está disponível em: [fastapidozero.dunossauro.com](https://fastapidozero.dunossauro.com).
O objetivo desse projeto é ensinar FastAPI para pessoas que queiram ter o seu primeiro contato com o mesmo. A ideia padrão é construir uma aplicação pequena e simples, mas executando todos os passos até o deploy.
As Aulas estão dividas em:
0. [Apresentação do curso](https://fastapidozero.dunossauro.com/)
1. [Configurando o Ambiente de Desenvolvimento](https://fastapidozero.dunossauro.com/01/)
2. [Introdução ao desenvolvimento WEB](https://fastapidozero.dunossauro.com/02/)
3. [Estruturando seu Projeto e Criando Rotas CRUD](https://fastapidozero.dunossauro.com/03/)
4. [Configurando Banco de Dados e Gerenciando Migrações com Alembic](https://fastapidozero.dunossauro.com/04/)
5. [Integrando Banco de Dados a API](https://fastapidozero.dunossauro.com/05/)
6. [Autenticação e Autorização](https://fastapidozero.dunossauro.com/06/)
7. [Refatorando a Estrutura do Projeto](https://fastapidozero.dunossauro.com/07/)
8. [Tornando o projeto assíncrono](https://fastapidozero.dunossauro.com/08/)
9. [Tornando o sistema de autenticação robusto](https://fastapidozero.dunossauro.com/09/)
10. [Criando Rotas CRUD para Tarefas](https://fastapidozero.dunossauro.com/10/)
11. [Dockerizando a aplicação](https://fastapidozero.dunossauro.com/11/)
12. [Automatizando os testes com integração contínua](https://fastapidozero.dunossauro.com/12/)
13. [Fazendo o deploy no fly.io](https://fastapidozero.dunossauro.com/13/)
14. [Despedida](https://fastapidozero.dunossauro.com/14/)---
### Caso precise reconstruir o ambiente para as páginas
#### Sobre o ambiente
Todo esse projeto é gerenciado pelo Poetry, a versão usada durante o momento da escrita é `2.1.3`:
```bash
pipx install poetry==2.1.2
pipx inject poetry poetry-plugin-shell
```A versão usada do python é a versão 3.13.2:
```
poetry python install 3.13
```para configurar todo o ambiente basta executar:
```bash
poetry install
```para ativar o ambiente virtual:
```bash
poetry shell
```#### Sobre os comandos
Os comandos para executar funções como deploy, servidor local, geração de slides, etc. Estão todas sendo feitas pelo `taskipy`:
```bash
task --list
serve Executa o servidor local do mkdocs
mserve Executa o servidor local do mkdocs via mike
deploy Faz o deploy da página em produção usando mike
slides Gera os slides em pdf
slides_html Gera os slides em html (formato usado nas aulas)
ruff ruff check
```Para executar qualquer comando, basta usar: `task `, como por exemplo `task serve`.
#### Sobre os slides
Todos os slides foram feitos usando marp. Versão do marp usada: `4.0.3`. O tema `rose-pine`, com algumas modificações, está dentro da pasta dos slides brutos.
## Passos para gerar nova release
> TODO: Deixar isso melhor documentado
### 1. Fazer o build dos changelogs
`towncrier build --version `, algo como:
```bash
towncrier build --version 4.0.2
```### 2. Atualizar o pyproject
A versão deve ser atualizada no campo `project.version`:
```toml
[project]
name = "fastapi-do-zero"
version = "4.0.2"
```### 3. Atualizar tag `current_version` no mkdocs
```yaml
# ... mkdocs.yml
extra:
current_tag: v4.0.2 # para tag
```### 4. Fazer o commit
```bash
git add .
git commit -m "Upadate para v4.0.2"
```### 5. Criar a tag do git
```bash
git tag v4.0.2
git push --tags
```### 6. Criar versão do mike
> TODO: Isso só vale para majors
### 7. Fazer o deploy atualizado
```bash
mike deploy --push 4.0 # atualizar a versão
```#### Caso a documentação antiga precise ser atualizada (> 4.0)
O `mike` foi introduzido após a v4.0. Você precisa aplicar o diff abaixo, caso precise atualizar algo:
Diff que precisa ser aplicado antes!
```diff
diff --git a/mkdocs.yml b/mkdocs.yml
index 38c5b9f..7ed5c54 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -67,14 +67,6 @@ plugins:
show_line_count: true
- git-revision-date-localized
- social
- - with-pdf:
- author: Eduardo Mendes (@dunossauro)
- cover_title: FastAPI do zero
- cover_subtitle: Uma introdução prática!
- copyright: CC BY-NC-SA
- toc_level: 6
- enabled_if_env: ENABLE_PDF_EXPORT
- toc_title: Índice
- exclude:
glob:
- "wip.md"
@@ -115,6 +107,8 @@ extra:
link: https://dunossauro.com
- icon: simple/codeberg
link: https://codeberg.org/dunossauro
+ version:
+ provider: mike
hooks:
- hooks/quiz_hook.py
```Exemplo do comando do mike:
```bash
mike deploy --push 4.0 --allow-empty
# onde 4.0 é a versão da tag da documentação
```