2025.04.03 (Qui)

✨ Resumo do GPT  

Um dia em que mudei a stack técnica para a combinação Flutter Web + Django e estabeleci o roadmap geral de desenvolvimento e um ambiente de desenvolvimento baseado em inglês.

🚀 Roadmap

Lista de tarefas passo a passo para as Fases 1-4 — cobrindo:

  1. 🧠 Planejamento do projeto, escolha da stack técnica e compra do domínio
  2. 🛠️ Build em Flutter Web + integração estática com Django (desenvolvimento local)
  3. 🔗 Implementação básica da API de gatilho
  4. 🌐 Deploy em VPS, configuração do Nginx e serviço seguro por domínio

✅ FASE 1 — Planejamento inicial e decisões estratégicas

  • 🧠 Definir escopo do projeto e estratégia de segurança
    • Público-alvo: desertores norte-coreanos indocumentados vivendo na China
    • Objetivo: fornecer uma ferramenta de comunicação segura, disfarçada e baseada em navegador
    • Estratégia de UX: imitar uma interface de calculadora para ocultar a funcionalidade real
  • 🤖 Escolher abordagem de desenvolvimento assistido por IA
    • Usar GPT-4o e o1 para auxiliar no desenho e na implementação
    • Aplicar um fluxo de “Vibe Coding” — usando linguagem natural e prototipagem iterativa com IA
  • ⚙️ Escolher stack técnica
    • Frontend: Flutter Web (para uma UI polida, com aparência de app, disfarçada de calculadora)
    • Backend: Django + Django REST Framework (para APIs estruturadas, admin embutido e segurança)
    • Deploy: um único contêiner em VPS servindo tanto os arquivos estáticos do Flutter quanto a API Django
  • 🌐 Comprar domínio de disfarce
    • Domínio: ___.net
    • Propósito: aparência plausível de utilitário de calculadora
    • Preço: ₩18,000/ano por registrador coreano

✅ FASE 2 — Desenvolvimento local: integração Flutter Web + Django

🔧 1. Configuração do ambiente do projeto

  • 🧱 Criar projeto Django
    • django-admin startproject stealthcore .
  • ⚙️ Criar app Django (para API)
    • python manage.py startapp api
  • 🧩 Adicionar 'api' e 'rest_framework' a INSTALLED_APPS
  • 🐍 Criar ambiente virtual e instalar dependências
    • python -m venv venv && source venv/bin/activate
    • pip install django djangorestframework whitenoise

🛠️ 2. Build do Flutter Web

  • 💻 Inicializar app Flutter
    • flutter create ____web
    • Substituir a UI padrão por um TextField e um botão Send
  • 🧪 Enviar entrada via http.post() para /api/check-trigger/
  • 🔨 Gerar build Web
    • flutter build web
  • 📁 Mover arquivos de build
    • Criar pasta frontend_static/ na raiz do Django
    • cp -r build/web/* frontend_static/

⚙️ 3. Serviço de arquivos estáticos no Django

  • 🧷 Atualizar settings.py:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [ BASE_DIR / 'frontend_static' ]
    
  • (Opcional) Ativar WhiteNoise
    • Adicionar 'whitenoise.middleware.WhiteNoiseMiddleware' a MIDDLEWARE
  • 🎛️ Copiar build/web/index.html para templates/index.html
  • 🛠️ Corrigir caminhos de assets em index.html:

    <script src="/static/main.dart.js"></script>
    

🔗 4. Conectar Flutter ao Django

  • 🧪 Criar endpoint /api/check-trigger/
    • Aceita POST { input: "..." }
    • Retorna { status: "success" } se a entrada for '1004'
  • 🔐 Garantir que nenhuma string de gatilho exista no código-fonte do frontend
  • 🧪 Confirmar integração do frontend com http.post(...)

✅ FASE 3 — Deploy em VPS (Vultr)

🛒 1. Configuração do servidor

  • Criar uma instância Vultr (Ubuntu 22.04, 1GB RAM)
  • 🔑 Configurar acesso SSH (ssh root@<ip>)
  • 📦 Instalar dependências:
    • sudo apt update && sudo apt upgrade
    • sudo apt install python3 python3-pip nginx git
    • sudo apt install certbot python3-certbot-nginx

🚀 2. Fazer deploy do Django

  • Enviar seu projeto (scp ou git clone)
  • Configurar ambiente virtual
    • python3 -m venv venv && source venv/bin/activate
    • pip install -r requirements.txt
  • 🔫 Instalar e testar Gunicorn
    • pip install gunicorn
    • gunicorn stealthcore.wsgi:application

🌐 3. Servir com Nginx

  • Criar configuração do Nginx:

    server {
        listen 80;
        server_name ___.net;
    
        location /static/ {
            alias /home/youruser/project/frontend_static/;
        }
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  • 🔐 Ativar HTTPS com Let’s Encrypt
    • sudo certbot --nginx -d ___.net
  • 🔄 Reiniciar Nginx:
    • sudo systemctl restart nginx

✅ FASE 4 — Testes finais e hardening

  • 💻 Acessar https://___.net
    • Confirmar que a UI de calculadora carrega corretamente
  • 🔍 Inserir '1004' no input do Flutter e enviar
    • O Django deve responder com { "status": "success" }
  • 🧪 Testar se uma entrada inválida retorna mensagem de negação

✅ Observações finais

  • 🧼 Remover toda lógica sensível do frontend
  • 🔒 Proteger futuros endpoints de API com validação de token de sessão
  • 🧊 Polir o disfarce: atualizar ícone do app, título da página e adicionar elementos falsos de utilitário
  • 🧠 Escrever documentação interna (deploy.md) para deploys repetíveis

💭 Diário

Houve grandes mudanças como estas.

  • Mudei o rumo para Flutter Web (Frontend) + Django (Backend).
    • Porque, quando eu desenvolver apps daqui em diante, pretendo seguir com essa mesma combinação.
    • E porque ambos são frameworks que já usei antes, então posso esperar uma produtividade muito mais rápida.
  • Decidi escrever toda Documentation, todos os Comments e todas as Commit Messages em inglês.
    • Porque escrever prompts em inglês pode trazer ao menos uma pequena melhoria de desempenho.
    • Porque a maior parte do conhecimento mais recente do mundo é tratada em inglês.
    • Porque preciso criar o hábito de usar inglês com frequência para me acostumar mais com ele.
  • Decidi que a Git Commit Message Convention deve seguir obrigatoriamente o formato padrão da indústria de desenvolvimento.
    • from

      * 21adba0 25.04.03 Thu <Hyuk Min> Chore | README.md: Add more details to roadmap
      
    • to

      * 21adba0 25.04.03 Thu <Hyuk Min> docs(README): add more details to roadmap
      
    • Porque, se eu não planejo viver para sempre como desenvolvedor solo, é correto criar desde cedo o hábito de seguir o padrão da indústria.
    • Porque, se no futuro eu usar algum programa relacionado a Change log, ele precisará do formato padrão para conseguir fazer parsing.

Olhando apenas para o roadmap em si, acho que saiu uma diretriz boa o suficiente para seguir.

Amanhã vou continuar recebendo feedback do GPT, refinar isso e depois tentar seguir exatamente assim.

Deixe um comentário