Crear tu Primer Proyecto

Guía paso a paso para crear un nuevo proyecto

Usando el Scaffold

La forma más rápida de crear un proyecto es usando el scaffold automatizado.

Sintaxis

python /srv/projects/infra-tools/new_project.py \
  --slug mi-proyecto \
  --port 81XX \
  --domain mi-proyecto.illanes00.cl \
  --register-monitor

Parámetros

Parámetro Descripción Ejemplo
--slug Nombre único del proyecto mi-proyecto
--port Puerto de la aplicación (8101-8199) 8105
--domain Dominio público mi-proyecto.illanes00.cl
--register-monitor Agregar a monitoring (opcional) flag

Ejemplo Completo

ssh vps-dev
python /srv/projects/infra-tools/new_project.py \
  --slug ejemplo-api \
  --port 8110 \
  --domain ejemplo-api.illanes00.cl \
  --register-monitor

Estructura Generada

ejemplo-api/
├── app/
│   ├── main.py              # FastAPI entry point
│   └── __init__.py
├── tests/
│   └── test_main.py         # Pruebas iniciales
├── deploy/
│   ├── systemd.service      # Definición del servicio
│   └── caddy.caddy          # Config reverse proxy
├── .github/
│   └── workflows/
│       ├── ci.yml           # Pipeline CI
│       └── cd.yml           # Pipeline CD
├── run.py                   # Entry point desarrollo
├── requirements.txt         # Dependencias Python
├── requirements-test.txt    # Dependencias de testing
├── .env.example             # Template de variables
├── .gitignore
├── README.md
├── LOCAL-AGENT-CONTEXT.md   # Contexto local (gitignored)
└── AGENT-CONTEXT.md         # Symlink → global

Pasos Post-Creación

1. Configurar Variables de Entorno

cd /srv/projects/ejemplo-api
cp .env.example .env
nano .env

Contenido mínimo:

HOST=0.0.0.0
PORT=8110
APP_NAME=ejemplo-api
APP_ENV=development

2. Crear Entorno Virtual

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

3. Probar Localmente

python run.py
# En otra terminal:
curl http://localhost:8110/healthz

4. Instalar Servicio systemd

sudo cp deploy/systemd.service /etc/systemd/system/ejemplo-api.service
sudo systemctl daemon-reload
sudo systemctl enable --now ejemplo-api.service

5. Configurar Caddy

sudo ln -s /srv/projects/ejemplo-api/deploy/caddy.caddy /etc/caddy/sites.d/
sudo systemctl reload caddy

6. Crear Repositorio GitHub

cd /srv/projects/ejemplo-api
git init
git add -A
git commit -m "feat: initial project setup"
gh repo create illanes00/ejemplo-api --private --source=. --push

7. Configurar Secrets de GitHub

En GitHub → Settings → Secrets → Actions: - DEPLOY_HOOK_URL - DEPLOY_TOKEN

Verificar Deploy

# Estado del servicio
systemctl status ejemplo-api.service

# Health check local
curl http://localhost:8110/healthz

# Health check via dominio (después de configurar DNS)
curl https://ejemplo-api.illanes00.cl/healthz

Próximos Pasos