Resumen rápido: Para usar el proyecto tienes que hacer deploy del backend en
app.pyusando las variables correctas necesarias para el proyecto. Para el front es únicamenteindex.html, y debe tener la conexión con la URL del back.
- Python 3.10+ (recomendado 3.11)
pipy (opcional)venv- Un servidor estático simple para el front (puede ser abrir el
index.htmlen el navegador o servir conpython -m http.server)
Configura las variables necesarias para el backend. Crea un archivo .env en la raíz (o usa tu proveedor de hosting) con, por ejemplo:
# URL pública donde se servirá el backend (útil para CORS/logs)
APP_BASE_URL=https://tu-dominio-o-render
# Clave secreta / tokens (ejemplos, ajusta según tu app)
SECRET_KEY=super-secreto
API_KEY_EXTERNA=
# Config de CORS (separa por comas)
CORS_ORIGINS=https://tu-front.com,http://localhost:5500
# Puerto y host (si los usas)
HOST=0.0.0.0
PORT=8000Importante: Las variables exactas dependen de tu
app.py. Revisa las lecturas deos.environ[...]dentro del código y completa lo que corresponda.
-
Crear entorno e instalar dependencias
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt
-
Configurar variables de entorno
- Crea
.env(o configura variables en tu proveedor de hosting).
- Crea
-
Correr en local para probar
-
Si es Flask:
export FLASK_APP=app.py # Windows: set FLASK_APP=app.py flask run --host=0.0.0.0 --port=8000
-
O directamente:
python app.py
-
Producción (opcional):
# Flask (gunicorn) gunicorn -w 2 -b 0.0.0.0:8000 app:app # FastAPI/Starlette (si aplica) # uvicorn app:app --host 0.0.0.0 --port 8000 --workers 2
-
-
Deploy en un hosting (ejemplos)
- Render / Railway / Fly.io / VPS: sube el repo, define variables de entorno y comando de start.
- Asegúrate de exponer el puerto configurado (ej.:
8000).
Recordatorio: “para usar el proyecto tienes que hacer deploy en
app.py, usando las variables correctas necesarias para el proyecto”.
El front es un único archivo index.html que debe apuntar a la URL pública del backend.
- Define la URL del back dentro del
index.html(o en unconfig.js). Por ejemplo:
<script>
// Cambia esto por la URL real de tu backend en producción
const BACKEND_URL = "https://tu-backend-publico.com";
// En desarrollo, podrías usar:
// const BACKEND_URL = "http://localhost:8000";
</script>- Ejemplo de consumo (fetch):
<script>
async function ping() {
const r = await fetch(`${BACKEND_URL}/ping`, { method: 'GET' });
const data = await r.json();
console.log('Ping:', data);
}
async function enviarFormulario(payload){
const r = await fetch(`${BACKEND_URL}/api/endpoint`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (!r.ok) throw new Error('Error en la solicitud');
return await r.json();
}
ping();
</script>-
Servir el front
-
Abre
index.htmldirectamente en el navegador o -
Sirve la carpeta con:
python -m http.server 5500 # Navega a: http://localhost:5500/index.html
-
Recordatorio: “para el front es únicamente el
index, este debe tener la conexión con la URL del back”.
- Configura variables → 2. Levanta backend (
app.py) → 3. AjustaBACKEND_URLenindex.html→ 4. Pruebafetchdesde el front.
.
├─ app.py
├─ requirements.txt
├─ .env # (no commitear)
├─ index.html # Front mínimo
├─ static/ # (opcional) assets estáticos
└─ README.md
- Backend local:
http://localhost:8000 - Front local: abre
index.htmlo sirve conhttp.server - Asegúrate de que
BACKEND_URLapunte al backend local cuando desarrolles.
- CORS: si el navegador bloquea la solicitud, agrega el origen del front en
CORS_ORIGINSo configura CORS enapp.py. - Variables faltantes: verifica el
.envy losprint()/logs de inicialización. - Ruta del backend: confirma que
BACKEND_URLtermina sin/para evitar dobles//. - Puerto/host: el puerto expuesto del host debe coincidir con el que escucha tu app.
Elige tu licencia (MIT/Apache-2.0/GPL-3.0). Añade el archivo LICENSE si corresponde.
Si necesitas que deje plantillas exactas de index.html o un app.py base (Flask o FastAPI) con CORS listo, avísame y lo sumo aquí.