- Backend: FastAPI + Python 3.14
- Base de Datos: PostgreSQL (Railway.app free tier)
- Frontend: HTML + Jinja2 Templates
- Motor de Precios: Cálculo matemático real (sin IA por ahora)
- Deploy: Railway.app
- Total: $0/mes (Railway free tier)
- Base de datos: 1GB PostgreSQL gratis
- Límite: Suficiente para MVP con 3 clientes piloto
python3 -m venv venv
source venv/bin/activate # Mac/Linux
# venv\Scripts\activate # Windowspip install -r requirements.txtcp .env.example .env
# Editar .env con tus variables (DATABASE_URL de Railway)python main.py
# Acceder a http://localhost:8000- Ir a https://railway.app
- Crear cuenta con GitHub (gratis)
- Railway tiene $5 gratis al inicio, suficiente para este proyecto
- Click "New Project"
- Seleccionar "Deploy from GitHub repo"
- Autorizar Railway a acceder a tu GitHub
- Seleccionar este repositorio
- Railway detectará automáticamente que es Python
- En el proyecto Railway, click "New Service"
- Seleccionar "Database"
- Elegir "PostgreSQL"
- Click "Add PostgreSQL"
- En el servicio PostgreSQL, click "Variables"
- Copiar el valor de
DATABASE_URL - En el servicio web (app), click "Variables"
- Agregar variable:
DATABASE_URL= (pegar valor copiado)
- En el servicio PostgreSQL, click "Query"
- Copiar todo el contenido de
schema.sql - Pegar en el editor de Railway
- Click "Execute"
- Railway hará deploy automático
- Esperar a que esté "Healthy"
- Click en el dominio generado (ej: tu-app.railway.app)
- Abrir el dominio en navegador
- Deberías ver el chat de WorldGlass
- Probar:
/healthdebe retornar{"status":"healthy"} - Probar chat: "cancel 150x190 negro" debe cotizar
curl http://localhost:8000/healthcurl -X POST http://localhost:8000/api/chat \
-H "Content-Type: application/json" \
-d '{"msg": "cancel 150x190 negro"}'- Abrir http://localhost:8000/docs
- FastAPI genera Swagger UI automáticamente
worldglass/
├── main.py # Entry point FastAPI
├── database.py # Conexión PostgreSQL
├── schema.sql # Esquema de base de datos
├── requirements.txt # Dependencias Python
├── railway.toml # Configuración Railway
├── routes/ # Endpoints API
│ ├── chat.py # Chatbot cotizador
│ └── quotes.py # Cotizaciones (Fase 2)
├── utils/ # Lógica de negocio
│ └── calculator.py # Motor de precios
├── templates/ # HTML Jinja2
│ └── chat.html # Interfaz chat
└── static/ # CSS, JS, imágenes
- Migrar Flask → FastAPI
- Implementar motor de precios real
- Crear esquema de base de datos multi-tenant
- Configurar estructura de proyecto
- Deploy en Railway
- Configurar PostgreSQL en Railway
- Ejecutar schema.sql
- Implementar sistema de registro (skill.md)
- Agregar autenticación JWT
- Implementar endpoints multi-tenant
- Los passwords se hashean con bcrypt (Fase 2)
- Las variables de entorno están en Railway (no en código)
- Conexión a BD con asyncpg (seguro y async)
- Railway tiene logs gratis
- Health check en
/health - Métricas en dashboard de Railway
- Costos: Railway free tier = $0. Si excedes límites, te avisará antes de cobrar.
- Multi-tenant: El esquema soporta múltiples talleres desde día 1.
- Escalabilidad: Cuando necesites más, Railway hace upgrade transparente.
- No Docker: Usamos Nixpacks de Railway (más simple para MVP)
- Solución: Agregar variable DATABASE_URL en Railway (ver Paso 4)
- Solución: Ejecutar schema.sql en Railway Query (ver Paso 5)
- Solución:
pip install -r requirements.txt
- Normal en Railway free tier. Se despierta en ~30s al recibir request.
Última actualización: 2026-05-24 Fase 1 MVP - Costo: $0/mes