Instalação ========== Formas de Usar o Velox ----------------------- O Velox oferece **duas modalidades** de desenvolvimento: 1. **Arquivo único** - Para projetos rápidos e APIs simples 2. **Projeto completo** - Para aplicações modulares com estrutura organizada --- Modo 1: Arquivo Único (Single File) ----------------------------------- O Velox permite criar uma aplicação completa em **um único arquivo Python**. Ideal para: - APIs simples - Microserviços - Protótipos rápidos - Scripts automatizados ### Instalação .. code-block:: bash pip install velox-web ### Criar arquivo ``app.py``: .. code-block:: python from velox import Velox app = Velox(__name__) @app.get('/') def home(req, res): res.html('

Olá Mundo!

') @app.get('/api/users') def users(req, res): res.json([ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, ]) @app.post('/api/create') def create(req, res): data = req.json res.json({'created': data}, status=201) if __name__ == '__main__': app.run() ### Executar: .. code-block:: bash # Modo simples python app.py # Com auto-reload (reinicia ao salvar) velox run --reload # Porta customizada velox run --port 5000 --reload **Resultado:** .. code-block:: text ✓ Velox [WSGI/threading] http://localhost:8000 ### Estrutura gerada: :: projeto/ └── app.py --- Modo 2: Projeto Completo (CLI) ------------------------------ Para projetos maiores, use o CLI do Velox para scaffolding automático. ### Criar projeto: .. code-block:: bash # Cria projeto completo com estrutura velox init meu-projeto # Entrar na pasta cd meu-projeto # Rodar servidor com auto-reload velox run --reload ### Estrutura gerada: :: meu-projeto/ ├── app.py # ponto de entrada ├── templates/ # templates HTML │ └── base.html ├── static/ # arquivos estáticos │ ├── css/style.css │ └── js/app.js ├── db/ # banco de dados │ └── app.db ├── views/ # suas rotas │ └── __init__.py ├── models/ # modelos ORM │ └── __init__.py ├── .env # configurações └── requirements.txt ### Arquivo ``app.py``: .. code-block:: python from velox import Velox from views import router app = Velox(__name__) app.template('templates') app.static('static') # Incluir rotas modulares app.include(router) if __name__ == '__main__': app.run() ### Criar apps modulares: .. code-block:: bash # Criar módulo blog velox startapp blog # Criar módulo API velox startapp api --api ### Estrutura com apps: :: meu-projeto/ ├── app.py ├── blog/ │ ├── __init__.py │ ├── views.py │ └── models.py ├── api/ │ ├── __init__.py │ └── views.py ├── templates/ └── static/ --- Comparativo: Arquivo Único vs Projeto ------------------------------------- +------------------------+-------------------+-------------------+ | Aspecto | Arquivo Único | Projeto Completo | +========================+===================+===================+ | Uso ideal | APIs simples | Apps modulares | +------------------------+-------------------+-------------------+ | Estrutura | 1 arquivo | Múltiplos módulos | +------------------------+-------------------+-------------------+ | Rotas | No mesmo arquivo | Arquivos separada | +------------------------+-------------------+-------------------+ | Models | No mesmo arquivo | Pasta models/ | +------------------------+-------------------+-------------------+ | Templates | Opcional | Recomendado | +------------------------+-------------------+-------------------+ | Deploy | Rápido | Organizado | +------------------------+-------------------+-------------------+ --- Instalação de Drivers de Banco ------------------------------ .. code-block:: bash # SQLite (padrão, zero dependências) pip install velox-web # PostgreSQL pip install velox-web[postgres] # ou: pip install psycopg2-binary # MySQL pip install velox-web[mysql] # ou: pip install mysql-connector-python # MariaDB (mesmo driver do MySQL) pip install velox-web[mariadb] # Async (todos os drivers) pip install velox-web[async] # aiosqlite + asyncpg + aiomysql # Tudo pip install velox-web[full] --- Configuração via .env --------------------- Crie um arquivo ``.env`` no projeto: .. code-block:: text # Servidor APP_HOST=0.0.0.0 APP_PORT=8000 APP_DEBUG=true # Segurança VELOX_SECRET_KEY=sua-chave-secreta-aleatoria # Admin VELOX_ADMIN_USER=admin VELOX_ADMIN_PASSWORD=senha-segura VELOX_ADMIN_PREFIX=/admin # Banco de dados DATABASE_URI=db/app.db # DATABASE_URI=postgresql://user:pass@localhost/mydb # DATABASE_URI=mysql://user:pass@localhost/mydb # Cache CACHE_BACKEND=memory # CACHE_BACKEND=redis # CACHE_REDIS_URL=redis://localhost:6379/0 # Sessions SESSION_COOKIE_NAME=velox_sid SESSION_EXPIRE_SECONDS=86400 --- Deploy em Produção ------------------ ### Gunicorn (WSGI): .. code-block:: bash pip install gunicorn gunicorn app:app -w 4 -b 0.0.0.0:8000 ### uvicorn (ASGI): .. code-block:: bash pip install uvicorn uvicorn app:app --workers 4 --host 0.0.0.0 --port 8000 ### Docker: .. code-block:: dockerfile FROM python:3.11 WORKDIR /app RUN pip install velox-web gunicorn COPY . . EXPOSE 8000 CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"] ### Platforms testadas: - ✅ Railway, Render, Heroku - ✅ DigitalOcean App Platform - ✅ AWS Elastic Beanstalk - ✅ VPS (Ubuntu/CentOS)