Skip to content
jairocodesPublic

About

CLI + API REST que permite a equipos definir, compartir y levantar entornos de desarrollo reproducibles con Docker Compose. El "GitHub Codespaces" self-hosted para equipos pequeños.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

71 Commits

Folders and files

Repository files navigation

DevEnv Hub

Gestor de entornos de desarrollo: CLI + API REST que permite a equipos definir, compartir y levantar entornos de desarrollo reproducibles con Docker Compose. El "GitHub Codespaces" self-hosted para equipos pequeños.

Stack

Python · FastAPI · Docker SDK · Docker Compose · PostgreSQL · Redis · JWT Auth · WebSockets

Estado

v1.0.0 — core funcional completo. Progreso:

  • Scaffolding: API FastAPI, CLI Click, Docker Compose de desarrollo (Postgres/Redis), tests, Gitflow.
  • Template de entorno end-to-end (Node): templates/node/ + ComposeService/DockerService reales, creación/listado/borrado de entornos, logs en vivo por WebSocket.
  • Auth JWT real: registro/login (/auth/register, /auth/login), entornos protegidos y aislados por usuario (devenv login, devenv register).
  • Template Django (proyecto Django minimal real, SQLite por defecto).
  • Template Laravel (entorno PHP listo para recibir un proyecto Laravel real; starter con servidor built-in de PHP).
  • Template Spring (Spring Boot minimal real con Maven).
  • Métricas de uso en vivo (CPU/memoria/uptime por contenedor vía Docker stats, WebSocket + devenv stats).
  • Multi-tenant a nivel de infraestructura:
    • Namespaces: cada entorno usa su propio Compose project name (devenv-{user_id}-{name}), lo que le da red/contenedores/volúmenes aislados por entorno (más fino que por usuario) desde el primer template.
    • Quotas: tope de entornos concurrentes y límites de CPU/memoria por contenedor, con override opcional por usuario (users.max_environments/cpu_limit/mem_limit_mb, NULL = default global en Settings).
  • Personalización interactiva de templates (estilo Spring Initializr, solo CLI — no hay UI web):
    • template.yaml declara options (versión de runtime, incluir Postgres/Redis, y en Laravel el servidor: PHP built-in simple vs. Nginx+PHP-FPM real).
    • devenv up pregunta cada opción interactivamente, o se puede fijar sin prompts con --set key=value / --yes.
    • El servidor valida las opciones contra lo declarado en el template y renderiza el docker-compose.yml/Dockerfile condicionalmente con Jinja2.
  • Rol admin para gestionar quotas por usuario:
    • Bootstrap sin UI: ADMIN_EMAILS (allowlist por email) promueve automáticamente a admin en el siguiente login — sin endpoint de "promover a admin" para no abrir superficie de escalamiento de privilegios.
    • GET /admin/users / PATCH /admin/users/{id}/quota (protegidos, 403 si no es admin) y devenv admin users / devenv admin set-quota <email> en el CLI.
  • Documentación completa: manual de usuario y manual técnico (ver abajo).

Documentación

  • Manual de usuario — todas las acciones del CLI, para cuentas normales y admin.
  • Manual técnico — arquitectura completa, modelo de datos, API, orquestación de Docker, flujo interno.

Flujo de ramas

Este repositorio usa Gitflow:

  • main: releases estables.
  • develop: rama de integración.
  • feature/*, release/*, hotfix/*: trabajo en curso.

About

CLI + API REST que permite a equipos definir, compartir y levantar entornos de desarrollo reproducibles con Docker Compose. El "GitHub Codespaces" self-hosted para equipos pequeños.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages