Skip to content

Guia de entorno local

Objetivo

Este documento explica como ejecutar SEO Growth Engine en desarrollo y que piezas son opcionales o necesarias segun el nivel de realismo que se quiera alcanzar.

Preparacion inicial

El repositorio no debe incluir el archivo .env real porque contiene secretos locales, claves API y configuracion privada de cada maquina. Para preparar el entorno:

cp .env.example .env

Para una revision local basica, DATABASE_URL puede quedarse comentado y OPENAI_API_KEY vacia. La aplicacion arranca con SQLite, cola local por hilo y correo por consola.

Opciones de trabajo local

Opcion 1: modo minimo

Pensado para revisar backend y vistas con la menor configuracion posible.

  • Base de datos: SQLite
  • Cola: thread
  • Frontend: assets ya compilados servidos por Django

Variables minimas recomendadas:

DJANGO_DEBUG=1
DJANGO_SECRET_KEY=change-me-with-a-long-random-local-secret
DJANGO_ADMIN_URL=admin/
DJANGO_TASK_QUEUE_BACKEND=thread
OPENAI_API_KEY=

Comandos base:

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py bootstrap_dashboard --username tutor --password tutor123 --email tutor@example.com
python manage.py runserver

Opcion 2: stack completo sin contenedores

Pensado para acercarse mas al comportamiento real de produccion.

  • Base de datos: PostgreSQL
  • Cola: Redis + RQ
  • Frontend: build de Vite o servidor de desarrollo

Variables recomendadas:

DJANGO_DEBUG=1
DJANGO_SECRET_KEY=tu-clave-local
DJANGO_ADMIN_URL=admin/
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/seo_growth_engine
DJANGO_DB_SSL_REQUIRE=0
REDIS_URL=redis://127.0.0.1:6379/0
DJANGO_TASK_QUEUE_BACKEND=rq
OPENAI_API_KEY=sk-...
OPENAI_AI_VISIBILITY_MODEL=gpt-5-mini

Comandos base:

python manage.py migrate
python manage.py runworker
python manage.py runserver

Frontend:

cd frontend
npm install
npm run build:tailwind

Opcion 3: stack local con Docker

El repositorio incluye:

  • Dockerfile
  • .dockerignore
  • docker-compose.yml
  • deploy/entrypoint.sh

Comandos base:

cp .env.example .env
docker compose up --build

Para entrar al workspace despues de levantar los contenedores:

docker compose exec web python manage.py bootstrap_dashboard --username tutor --password tutor123 --email tutor@example.com

Estado actual:

  • validado localmente el 2026-05-18
  • web, worker, db y redis arrancan correctamente
  • la web responde en http://127.0.0.1:8000/

Mas detalle en docker.md y deployment-evidence.md.

Variables importantes

  • DJANGO_SECRET_KEY: obligatoria; en produccion debe ser larga y secreta.
  • DJANGO_ADMIN_URL: en produccion no debe quedarse en admin/.
  • DATABASE_URL: activa Postgres cuando existe.
  • REDIS_URL: activa la cola externa cuando se usa rq.
  • DJANGO_TASK_QUEUE_BACKEND: auto, thread o rq.
  • OPENAI_API_KEY: necesaria para AI Visibility real.
  • DJANGO_USE_X_FORWARDED_HOST y DJANGO_USE_SECURE_PROXY_SSL_HEADER: necesarias si hay NGINX o proxy delante.

Limitaciones reales

  • Sin dependencias Python instaladas localmente no es posible ejecutar manage.py fuera de Docker.
  • Sin node_modules no es posible regenerar localmente el build de Vue.
  • NGINX sigue documentado, pero no validado todavia con nginx -t.
  • No hay evidencia remota real de despliegue en VPS desde este repositorio.