English | Castellano
Una aplicacion web moderna y segura para gestionar fiestas de la demoscene, competiciones, producciones, sistemas de votacion y presentacion en directo (StageRunner).
DPMS es un sistema de gestion de partys diseñado con un enfoque en la seguridad, la gestion de usuarios y la capacidad de funcionar online antes, durante y despues de la party.
Apasionado de la informatica desde 1984. Organice la RadyKal Party en Granada, España en 1998 (mas videos) y visito cada año otras Amiga Parties por España. Los ultimos años he colaborado con Posadas Party y Capacitor Party. Comence a desarrollar una aplicacion web para gestionar la siguiente Capacitor Amiga Party pero la pandemia cancelo el proyecto. El verano pasado (2022), Posadas Party celebro una nueva edicion y necesitabamos una herramienta para que la gente votara las competiciones. Usamos wuhu, un conocido Party Management System (PMS) escrito en PHP. Me gustaron sus funciones, como gestiona los datos de las competiciones y su sistema de "beamer". Inspirado por wuhu, decidi construir DPMS usando tecnologias web modernas con un enfoque en la seguridad y la capacidad de mantenerse online en internet.
- Gestion de usuarios: Sistema seguro de registro y autenticacion con verificacion por email
- Gestion de ediciones: Crear ediciones de party con logo, cartel y efectos glow configurables
- Gestion de competiciones (Compos): Crear y gestionar diferentes categorias de competicion
- Envio de producciones: Permitir a los sceners enviar sus producciones (demos, musica, graficos, etc.)
- Sistema de votacion: Permitir a los asistentes votar las entradas de las competiciones
- StageRunner: Sistema de presentacion a pantalla completa para mostrar producciones en proyector/pantalla grande durante eventos
- Control de acceso por roles: Diferentes permisos para Admins, Organizadores y Sceners
- Soporte multi-idioma: Desarrollado con soporte i18n (actualmente castellano/ingles)
- Fondos 3D animados: Multiples efectos WebGL (Hyperspace, Wave, Energy Grid, TRON Grid) con rotacion automatica
- Branding dinamico: Logo de edicion con efecto glow configurable en login, signup y aplicacion principal
- Landing Page SEO-friendly: Pagina publica con informacion del evento, cuenta atras y fondos animados
- Panel de administracion: Panel completo para gestionar ediciones, competiciones, producciones y usuarios
- API REST: API completa con documentacion Swagger
- Backend: Django 4.x + Django REST Framework + PostgreSQL
- Frontend: React 18 + Material-UI + React Router v6
- Graficos 3D: Three.js para efectos de fondo WebGL
- Contenedores: Docker & Docker Compose
- Autenticacion: Autenticacion basada en tokens (DRF Token + JWT)
- Docker y Docker Compose
git clone https://github.com/yourusername/DPMS.git
cd DPMSCrear los archivos de entorno en el directorio .envs/:
.envs/.django
# Django
DJANGO_SECRET_KEY=tu-clave-secreta-cambiar-en-produccion
# SceneID OAuth (opcional, para login con SceneID)
SCENE_CLIENT_ID=tu-sceneid-client-id
SCENEID_CLIENT_SECRET=tu-sceneid-client-secret.envs/.postgres
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=dpms
POSTGRES_USER=dpms_user
POSTGRES_PASSWORD=dpms_passworddocker compose -f local.yml up -dEsto iniciara:
- Base de datos PostgreSQL
- API backend Django en http://localhost:8000
- Frontend React en http://localhost:3000
docker compose -f local.yml exec backend_party python manage.py createsuperuserAcceder al panel de administracion Django:
http://localhost:8000/admin/Ver documentacion de la API (Swagger):
http://localhost:8000/docs/Ejecutar migraciones:
docker compose -f local.yml exec backend_party python manage.py migrateCrear nuevas migraciones:
docker compose -f local.yml exec backend_party python manage.py makemigrationsEjecutar tests del backend:
docker compose -f local.yml exec backend_party pytestAcceder al shell de Django:
docker compose -f local.yml exec backend_party python manage.py shellEl frontend se ejecuta dentro de Docker. Los archivos fuente en frontend/src/ y frontend/public/ estan montados como volumenes, por lo que los cambios se reflejan inmediatamente via hot reload.
Ejecutar tests:
docker compose -f local.yml exec frontend yarn testCompilar para produccion:
docker compose -f local.yml exec frontend yarn buildVer logs del frontend:
docker compose -f local.yml logs -f frontendDetener todos los servicios:
docker compose -f local.yml downPara el despliegue en produccion, usar el archivo Docker Compose de produccion:
docker compose -f production.yml up -dConsideraciones de seguridad importantes:
- Cambiar
DJANGO_SECRET_KEYpor un valor aleatorio fuerte - Establecer
DJANGO_DEBUG=False - Configurar
DJANGO_ALLOWED_HOSTScorrectamente - Usar contraseñas de base de datos fuertes
- Configurar certificados HTTPS/SSL
- Configurar los ajustes de CORS correctamente
Variables de entorno adicionales para produccion (.envs/.django):
# Configuracion de email (necesario para verificacion de usuarios)
EMAIL_HOST=smtp.tu-proveedor.com
EMAIL_HOST_USER=tu-email@dominio.com
EMAIL_HOST_PASSWORD=tu-contraseña-email
EMAIL_PORT=587
# URL del frontend (para enlaces en emails)
FRONTEND_URL=https://tu-dominio.com/appDPMS/
├── backend/ # API REST Django
│ ├── config/ # Configuracion Django y URLs principales
│ ├── dpms/ # Apps principales de Django
│ │ ├── users/ # Autenticacion y gestion de usuarios
│ │ ├── compos/ # Competiciones y producciones
│ │ ├── website/ # Landing page (SSR)
│ │ └── utils/ # Utilidades compartidas
│ └── requirements/ # Dependencias Python
├── frontend/ # Aplicacion React (SPA)
│ ├── src/
│ │ ├── @dpms-freemem/ # Componentes UI principales (MainBar, Content)
│ │ ├── components/ # Componentes React
│ │ │ ├── admin/ # Componentes del panel de administracion
│ │ │ │ └── common/ # Componentes admin compartidos (LoadingSpinner, StatusChip, etc.)
│ │ │ ├── common/ # Componentes compartidos (ThreeBackground, backgroundEffects)
│ │ │ ├── user/ # Componentes de autenticacion (Login, Signup)
│ │ │ └── productions/ # Gestion de producciones
│ │ ├── pages/ # Componentes de pagina
│ │ │ └── admin/ # Paginas de administracion (Editions, Compos, Productions)
│ │ ├── effects/ # Efectos visuales (ParticleEffects)
│ │ ├── utils/ # Utilidades frontend (AxiosWrapper, dateFormatting)
│ │ └── routes.js # Enrutamiento de la aplicacion
│ └── package.json
├── stagerunner/ # App de presentacion StageRunner (app React separada)
│ ├── src/
│ │ ├── components/ # Componentes de presentacion
│ │ ├── screens/ # Pantallas de visualizacion
│ │ ├── services/ # Cliente API con cache
│ │ └── hooks/ # Hooks personalizados (teclado, slideshow)
│ └── package.json
├── docker/ # Configuraciones Docker
├── .envs/ # Variables de entorno (en gitignore)
├── local.yml # Docker Compose para desarrollo local
├── production.yml # Docker Compose para produccion
├── TECHNICAL_SPEC.md # Especificacion tecnica completa
├── STAGERUNNER_SPEC.md # Especificacion detallada de StageRunner
└── CLAUDE.md # Directrices de desarrollo- Landing Page:
http://localhost:8000/(Django SSR) - Aplicacion de usuario:
http://localhost:3000/app/(React SPA - desarrollo) - Panel de administracion:
http://localhost:8000/admin/(Django admin) - Documentacion API:
http://localhost:8000/docs/(Swagger) - StageRunner:
http://localhost:3001/(React - cuando este implementado)
Endpoints principales de la API:
POST /api/users/signup/- Registro de usuarioPOST /api/users/login/- Autenticacion de usuarioGET /api/users/verify?token=<token>- Verificacion de emailGET /api/editions/- Listar edicionesGET /api/compos/- Listar competicionesGET /api/productions/- Listar produccionesGET /api/productions/my_productions/- Producciones del usuario (autenticado)GET /api/files/- Listar archivosPOST /api/files/- Subir archivo (multipart, autenticado)GET /api/files/{id}/download/- Descargar archivoGET /docs/- Documentacion Swagger completa
Las contribuciones son bienvenidas. No dudes en enviar un Pull Request.
Este proyecto esta licenciado bajo la Licencia MIT - consulta el archivo LICENSE para mas detalles.
FreeMem - Entusiasta de la demoscene y organizador de partys desde 1984
- Equipo de Wuhu: Agradecimiento especial al equipo de desarrollo del Party Management System wuhu por su excelente trabajo. Wuhu ha sido una inspiracion y una referencia para este proyecto, mostrandome lo que un sistema de gestion de partys deberia ser. Espero contribuir a la demoscene con nuevas tecnologias construyendo sobre la solida base que ellos establecieron.
- Hecho con cariño para la comunidad de la demoscene
- Agradecimiento especial a los organizadores de Posadas Party y Capacitor Party por su apoyo y feedback