Apps activas
📦
Cargando apps…
Subir y desplegar app
Estructura requerida del ZIP
Comprime tu app en un .zip con la siguiente estructura de carpetas:
mi-app.zip
├── frontend/ # Archivos estáticos (HTML/CSS/JS o build de React/Vue)
│ ├── index.html # requerido si hay frontend
│ ├── style.css
│ └── ...
├── backend/ # API Python compatible con uvicorn
│ ├── main.py # requerido — debe exponer app = FastAPI()
│ ├── requirements.txt # requerido — dependencias Python
│ └── ...
└── database/ # opcional
└── app.db # SQLite preexistente (opcional)
💡 El ZIP puede tener las carpetas en la raíz o dentro de una carpeta contenedora
(ej:
mi-app/frontend/...). Ambos formatos son aceptados.
URLs asignadas por app
FRONT
http://{slug-de-la-app}.bryan.salchimonster.com
— servido por nginx como sitio estático (SPA compatible)
BACK
http://salchimonster.com:{puerto}
— puertos desde 9000 en adelante, uno por app
Reglas del backend
- El framework debe ser compatible con uvicorn (FastAPI, Starlette).
- El punto de entrada es
backend/main.pycon una variableapp. - Se crea un virtualenv automáticamente e instalan las dependencias.
- Se registra un servicio systemd para que el backend sobreviva reinicios.
Ejemplo de backend mínimo
# backend/main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["*"],
allow_methods=["*"], allow_headers=["*"])
@app.get("/")
def root():
return {"status": "ok"}