Skip to content

Projeto para criar uma aplicação Web simples usando Python com o framework Flask. Já implementado tests, logging, docker, .env, dev/prod

Notifications You must be signed in to change notification settings

CaioSimioni/default-flask-app

Repository files navigation

Default Flask APP

Repositorio padrão para desenvolvimento de páginas WEB usando Flask


Um projeto Flask organizado com:

  • Rotas separadas
  • Sistema de logs
  • Templates (HTML + CSS)
  • Estrutura escalável
  • Suporte a variáveis de ambiente (.env)
  • Docker e Docker Compose prontos para DEV/PROD

🛠️ Como Rodar o Projeto

Pré-requisitos

  • Python 3.8+
  • Pip (gerenciador de pacotes)
  • Docker (opcional, mas recomendado)

Passo a Passo

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/meu_flask_app.git
    cd meu_flask_app
  2. (Opcional) Crie um ambiente virtual (recomendado):

    python -m venv venv
    
    # Ative o ambiente:
    
    # Linux/Mac:
    source venv/bin/activate
    
    # Windows:
    venv\Scripts\activate
  3. Instale as dependências:

    pip install -r requirements.txt
  4. Configure variáveis de ambiente:

    • Copie o arquivo de exemplo:

      cp .env.example .env
    • Edite o arquivo .env conforme necessário.

  5. Execute o servidor:

    python server.py
  6. Acesse no navegador:


🚀 Rodando com Docker

Ambiente de Desenvolvimento

  1. Build e up do container de desenvolvimento:

    docker compose -f docker-compose.dev.yml up --build
  2. Acesse no navegador:

Ambiente de Produção

  1. Build e up do container de produção:

    docker compose -f docker-compose.prod.yml up --build
  2. Acesse no navegador:


📦 Gerenciamento de Dependências

  • Use requirements-dev.txt para desenvolvimento e testes.
  • Use requirements-prod.txt para produção (inclui Gunicorn).

📂 Estrutura do Projeto

meu_flask_app/
├── server.py          # Ponto de entrada
├── requirements.txt   # Dependências
├── Dockerfile         # Imagem Docker
├── docker-compose.yml # Orquestração Docker
├── .env.example       # Exemplo de variáveis de ambiente
├── app/
│   ├── __init__.py    # Configuração do Flask
│   ├── routes.py      # Rotas principais
│   └── logging_config.py  # Configuração de logs
│   └── static/        # CSS/Imagens
│   └── templates/     # Páginas HTML/componentes
├── logs/              # Arquivos de log
└── tests/             # Testes automatizados

🎯 Próximos Passos (Opcionais)

  • Adicionar Blueprints: Para rotas modulares.
  • Banco de Dados: SQLAlchemy + SQLite/PostgreSQL.

📜 Licença

MIT (use como quiser!)


🔍 Explicação dos Arquivos Adicionais

1. .env e python-dotenv

  • O projeto usa variáveis de ambiente para segredos e configurações.

  • Exemplo de .env:

    SECRET_KEY=sua-chave-secreta
    FLASK_ENV=development
  • O arquivo .env.example serve como modelo.

2. Docker e Docker Compose

  • O Dockerfile usa Debian 12 e Python 3.12.
  • O docker-compose já mapeia variáveis do .env e faz bind do código para hot reload em DEV.

3. Como Testar os Logs

  • Tente acessar uma rota inexistente (ex: http://localhost:5000/rota-que-nao-existe).
  • Verifique o arquivo logs/erros.log – ele registrará o erro 404 automaticamente.

4. Gerando uma SECRET_KEY segura

  • Para produção, gere uma chave secreta forte com o comando abaixo:

    python -c "import secrets; print(secrets.token_urlsafe(32))"

    Copie o valor gerado e coloque no seu .env:

    SECRET_KEY=coloque_aqui_o_valor_gerado

5. Protegendo a aplicação em produção

  • Nunca use FLASK_ENV=development em produção.
  • Use um servidor WSGI robusto, como Gunicorn ou uWSGI, em vez do servidor embutido do Flask.
  • Configure variáveis de ambiente seguras e nunca exponha seu .env.
  • Considere usar um proxy reverso (Nginx, Traefik) para HTTPS e balanceamento de carga.
  • Mantenha suas dependências atualizadas e monitore vulnerabilidades.
  • Desabilite o modo debug em produção (FLASK_DEBUG=0).

About

Projeto para criar uma aplicação Web simples usando Python com o framework Flask. Já implementado tests, logging, docker, .env, dev/prod

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published