Base de trabajo para una aplicación de escritorio con Electron + React + Vite en el cliente y Laravel como API, con entorno backend apoyado en Docker.
Este repositorio está preparado para que varios equipos trabajen en paralelo con el menor número de bloqueos posible: Documentación en español, flujo de ramas, plantillas de incidencias y PRs, y comprobaciones automáticas básicas en GitHub Actions.
- Frontend de escritorio: Electron, React, Vite, Tailwind CSS, Three.js
- Backend: Laravel 12
- Infraestructura local: Docker, Nginx, MySQL, Redis, MongoDB
- Gestión de código: GitHub
.
|-- backend/ # API Laravel
|-- desktop/ # App Electron + React + Vite
|-- docker/ # Dockerfiles y configuracion local
|-- docs/ # Documentacion interna del equipo
|-- .github/ # Plantillas, CI y ownership
`-- docker-compose.yml # Orquestacion local de backend
Este repositorio está preparado para trabajar así:
- El repositorio puede mantenerse
public. - Sólo los leads del proyecto se añaden como colaboradores con permisos de escritura.
- El resto del equipo trabaja desde forks y abre Pull Requests contra este repositorio.
maindebe mantenerse protegida y no recibir pushes directos.
- Leads
- Crean ramas en el repositorio principal cuando hace falta
- Revisan y hacen merge de Pull Requests
- Pueden empujar cambios a ramas de trabajo no protegidas
- Resto del equipo
- Hace fork del repositorio principal
- Crea ramas en su fork
- Abre Pull Requests hacia
mainen este repositorio
Si cambia el grupo de leads, actualizad tambien .github/CODEOWNERS.
Herramientas recomendadas para todo el equipo:
- Git
- Docker Desktop
- Node.js 22 o superior
- PHP 8.2 o superior
- Composer 2
Herramientas por necesidad:
- MySQL client si alguien quiere inspeccionar base de datos fuera de Docker
- MongoDB Compass si alguien quiere inspeccionar los recursos visuales almacenados en MongoDB
- Editor con soporte para JS, JSX, PHP, Markdown y YAML
- Clonar el repositorio con .
- Abrir la carpeta del proyecto.
- Levantar el backend:
docker compose up -d --build
- Instalar dependencias del backend:
cd backend && composer install && composer require mongodb/laravel-mongodb
- Ejecutar migraciones:
docker compose exec app php artisan migrate --force
- Verificar MongoDB desde Laravel:
docker compose exec app php artisan mongo:check
- Copiar
backend/.env.exampley crearbackend/.env. - Crear la key en Docker:
docker exec csic_app php artisan key:generate
- Entrar en
desktop/e instalar dependencias:npm install
- Arrancar la app de escritorio:
npm run electron:dev
- Verificar que la API responde en:
http://localhost:8180/api/health
- Backend Docker:
docker compose up -d --builddocker compose downdocker compose exec app php artisan migrate --forcedocker compose exec app php artisan mongo:check
- Desktop:
cd desktop && npm installcd desktop && npm run electron:devcd desktop && npm run build
- Backend local:
cd backend && composer installcd backend && php artisan test
- Laravel / Nginx:
8180 - MySQL:
3106 - MongoDB:
27018desde tu equipo,27017dentro de Docker - Redis:
6179 - Vite dev server:
5173
MongoDB queda dedicado a los recursos visuales 3D o fotografias de sensores. MySQL sigue siendo la base principal para datos estructurados.
En backend/.env y backend/.env.example quedan disponibles estas variables:
MONGO_HOST=mongoMONGO_PORT=27017MONGO_DATABASE=csic_databaseMONGO_URI=como override opcional si alguna vez necesitas una URI completa
Desde Laravel, la conexion usa el host mongo porque el backend corre dentro de la red de Docker. Desde tu equipo host, MongoDB se expone por localhost:27018.
- Levanta el stack:
docker compose up -d --build
- Comprueba que Mongo esta levantado:
docker compose ps
- Ejecuta la comprobacion desde Laravel:
docker compose exec app php artisan mongo:check
Si el comando termina bien, Laravel puede conectarse, hacer ping a MongoDB y completar una escritura/lectura tecnica de prueba.
Usa esta conexion desde MongoDB Compass en tu equipo:
mongodb://localhost:27018
Datos importantes:
- Base esperada:
csic_database - Acceso desde host:
localhost:27018 - Acceso desde Docker:
mongo:27017 - Si Compass no conecta, revisa antes
docker compose psy confirma quecsic_mongoaparece levantado o healthy
Cuando entres con Compass, deberias ver la base csic_database. La coleccion visual_resources queda reservada para los recursos visuales del proyecto. El comando mongo:check usa una coleccion tecnica temporal llamada __smoke_tests.
backend/- API Laravel
- Lógica de negocio
- Acceso a datos
- Tests de backend
desktop/- Interfaz React
- Shell Electron
- Integración Three.js y futuras escenas 3D/360
docker/- Configuración de entorno local y backend
docs/- Acuerdos del equipo
- Onboarding
- Arquitectura
- Flujo de trabajo
- Definir flujos, arquitectura de información y diseño visual
- Mantener criterios de accesibilidad y consistencia
- Entregar especificaciones a Front End y 3D/360
- Implementar interfaces en
desktop/src - Integrar componentes, estados de pantalla y consumo de API
- Coordinarse con UI/UX y Back End
- Implementar endpoints, modelos, migraciones y lógica de negocio en
backend/ - Mantener contratos API estables
- Añadir y mantener tests de backend
- Trabajar la integración visual e interactiva en el cliente
- Mantener escenas, visores, assets y lógica de rendering
- Coordinarse con UI/UX para que la capa 3D encaje en la experiencia
- Validar requisitos funcionales
- Revisar flujos críticos antes de merge a
main - Documentar bugs con pasos de reproducción claros
- Mantener Docker, pipelines y configuración de despliegue
- Evolucionar la carpeta
.github/workflows/ - Preparar entornos de integración y producción más adelante
No se trabaja directamente sobre main.
Los leads pueden empujar a ramas de trabajo propias o compartidas, pero la integracion final en main debe pasar por Pull Request.
- Actualizar
mainen GitHub . - Si no eres lead, sincronizar primero tu fork con el repositorio principal.
- Crear una rama nueva desde
main. - Trabajar sólo en esa rama.
- Hacer commits pequeños y descriptivos.
- Publicar la rama.
- Abrir Pull Request contra este repositorio.
- Esperar revisión y checks automáticos.
- Hacer merge cuando esté aprobado.
feature/frontend-nombre-cortofeature/backend-nombre-cortofeature/3d-nombre-cortofix/nombre-cortodocs/nombre-cortochore/nombre-corto
No deben subirse:
backend/.envbackend/vendor/desktop/node_modules/desktop/dist/- Credenciales
- Secretos
- Archivos locales de editor o sistema operativo
El repositorio ya incluye reglas para evitar la mayoría de estos casos, pero cada persona debe revisar el panel de cambios antes de hacer commit en GitHub Desktop.
- La app arranca localmente
- El backend responde
cd desktop && npm run buildfuncionacd backend && php artisan testfunciona- La documentación se actualiza si el cambio afecta al flujo del equipo
- Guía de contribución
- Arquitectura
- Setup local
- Roles y flujo entre equipos
- Configuración del repositorio en GitHub
- UI/UX:
- Cerrar sistema visual, componentes base y estados vacíos
- Front End:
- Separar la app en carpetas por features y mover la URL de API a variables de entorno
- Back End:
- Crear primeros endpoints reales y documentar contratos
- 3D/360:
- Definir estructura de escenas, assets y rendimiento objetivo
- QA:
- Preparar checklist de validación por flujo
- Deployment:
- Extender CI y diseñar estrategia de despliegue
- Activar protección de rama en
maindesde GitHub web - Exigir Pull Request para merge
- Exigir que el workflow de CI esté en verde
- Configurar reviewers automaticos con
CODEOWNERS - Mantener los cambios pequeños y orientados a un solo objetivo
- Mantener como colaboradores sólo a los leads del proyecto
- Pedir al resto del equipo que contribuya desde forks
La parte que se configura en GitHub web esta resumida en docs/github-repo-setup.md.