https://github.com/Joao-Pedro-P-Holanda/flask-boilerplate
template for simple web applications made with flask, using SQLAlchemy ORM and Flask-migrate
https://github.com/Joao-Pedro-P-Holanda/flask-boilerplate
Last synced: 23 days ago
JSON representation
template for simple web applications made with flask, using SQLAlchemy ORM and Flask-migrate
- Host: GitHub
- URL: https://github.com/Joao-Pedro-P-Holanda/flask-boilerplate
- Owner: Joao-Pedro-P-Holanda
- License: mit
- Created: 2024-02-20T23:20:09.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-03T00:29:49.000Z (over 1 year ago)
- Last Synced: 2024-11-16T11:10:47.278Z (11 months ago)
- Language: Python
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-pt-br.md
- License: LICENSE
Awesome Lists containing this project
README
# Schema Migration com Flask
Este repositório template fornece a estrutura do projeto para configurar uma aplicação web Flask, usando SQLAlchemy, Flask-Migrate, Flask-Marshmallow e Pytest.
As migrações do Alembic são armazenadas na pasta `migrations` por padrão.
Este projeto foi inspirado e segue a mesma estrutura de outro exemplo feito pelo youtuber Eduardo Mendes. Meu objetivo é expandir com configurações mais avançadas, incluindo Docker e CI/CD.
[Video original](https://youtu.be/WzaKIRJBGXo)
[Canal do Eduardo no youtube](https://www.youtube.com/@Dunossauro)
[Repositório dele](https://github.com/dunossauro/crudzin)
## Estrutura do Projeto
Este template contém uma aplicação Flask, definida como um pacote no arquivo **init**.py, a função _create_app_ atua como uma \_application_factory\* e é detectada automaticamente quando `flask run` é executado (consulte o [tutorial do Flask](https://flask.palletsprojects.com/en/3.0.x/tutorial/factory/) para mais detalhes).
Todas as tabelas do banco de dados são expressas como classes no arquivo models.py, a função para configurar o banco de dados também é definida neste arquivo.
serializer.py contém os esquemas do Marshmallow para serializar cada modelo.
hello_world.py define uma blueprint, que contém suas próprias rotas que podem ser registradas no aplicativo.
Por fim, o HTML que é renderizado na rota inicial está incluído na pasta templates.
## Configurar o projeto
1. Definir as variáveis de ambiente
Você pode utilizar um arquivo `.env` para definir todas as variáveis, ou criá-las para a sua sessão do terminal.
Para gerar uma chave secreta segura você pode utilizar o seguinte comando:
```console
openssl rand -hex 64
```Depois escreva no arquivo .env:
```.env
DATABASE_URI=""
SECRET_KEY=""
```Ou exporte apenas em uma sessão do terminal:
- **Linux**
```shell
export DATABASE_URI=""
export SECRET_KEY=""
```- **Windows**
```cmd
setx DATABASE_URI=""
```2. Instalar dependências
```shell
pip install -r dev_requirements.txt
```3. Atualizar o banco para a última migração
`flask db upgrade`
4. Criar seu certificado ssl auto-assinado para o ambiente de desenvolvimento
Para criar seu certificado auto-assinado você pode utilizar o seguinte comando do openssl:
```shell
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
```Você pode responder às questões que são feitas com . (para um valor vazio) ou qualquer outro que você prefira, já que serão utilizados apenas no desenvolvimento.
5. Inicializar a aplicação em modo de desenvolvimento
`flask run --debug --cert cert.pem --key key.pem`
## TODO
- [x] Containerizar a aplicação
- [x] Configurar o dependabot
- [ ] Configurar docker compose com Nginx
- [ ] Configurar logging da aplicação
- [ ] Estilizar a página de hello