Prof. Jean Carlos Guzmán (Agile Coach ) | jeancguzman2050@gmail.com
- Samuel Rodríguez (Team Lead) | samuel.rodriguez16@hotmail.com
- Sergio Carrillo | 14-11315@usb.ve
- Jesús Cuéllar | jedave.co@gmail.com
- Abel Zabaleta | abelzavaleta08@gmail.com
- Blanyer Vielma | vblanyer@gmail.com
- Mauricio Fragachan | mfragachan11@gmail.com
- Anya Marcano (Team Lead) | anyanmf@gmail.com
- Rafael Valera | rafa.valera98@gmail.com
- Franco Murillo | murillo.franc@gmail.com
- Laura León | laura.leon.27121999@gmail.com
- David Pereira | djpb2000@gmail.com
- Carlo Herrera | carlomhd2001@gmail.com
- Leonardo Dolande | leodolande84@gmail.com
Universidad Simón Bolívar, Venezuela.
Este proyecto contiene:
- Frontend en React + TypeScript (Vite)
- Backend en Google Go (API en
backend/cmd/api/main.go) - Pruebas unitarias con Jest (frontend)
- Pruebas end-to-end con Cypress
- Colección de Postman para probar el API
- CI con GitHub Actions (archivo en
.github/workflows/ci.yml)
- Node.js 18+ (idealmente 20)
- Go 1.20+
cd frontend
npm install
npm run dev # iniciar Vite (desarrollo)
npm run build # construir
npm run preview # servir build en 5173
npm run test # Jest
npm run test:e2e # Cypress (requiere backend en :8080)cd backend
go run ./cmd/api # inicia el servidor en :8080
go test ./... # ejecuta pruebasEl backend envia correos usando una API privada local (mailer-api) con endpoint HTTP POST /send.
La API privada se conecta por SMTP a Gmail usando App Password.
- Inicia sesion en tu cuenta Google.
- Ve a Seguridad:
https://myaccount.google.com/security. - Activa
Verificacion en 2 pasos. - Entra a
Contrasenas de aplicaciones:https://myaccount.google.com/apppasswords. - Selecciona app
Maily dispositivoOtro(por ejemplo:Docker Mailer Local). - Copia la clave generada de 16 caracteres.
Notas:
- No uses la contraseña normal de Gmail en SMTP.
- Si no ves
Contraseñas de aplicaciones, normalmente falta 2FA o tu cuenta tiene una restricción administrativa.
Configura estas variables:
MAILER_API_URL=http://localhost:3000/send
MAILER_API_AUTH_KEY=dev-mailer-key
MAILER_FROM=tu_correo@gmail.com
MAILER_DEFAULT_CC=
MAILER_TIMEOUT_SECONDS=10
MAILER_SERVER_PORT=3000
MAILER_AUTHORIZATION_KEY=dev-mailer-key
MAILER_WHITELIST=
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=tu_correo@gmail.com
SMTP_FROM=tu_correo@gmail.com
SMTP_PASS=tu_app_password_de_16_caracteres
SMTP_SECURE=false
SMTP_CC=Para flujo completo local:
make dev localEse comando inicia:
- Postgres en Docker
- API privada de correo en Docker (
http://localhost:3000/send) - Backend Go en
:8080 - Frontend Vite en
:5173
Si solo quieres levantar Docker:
docker compose up -d db mailer-apiSi cambias .env.local, recrea el contenedor del mailer:
docker compose up -d --force-recreate mailer-apiHealthcheck:
curl http://localhost:3000/healthPrueba manual de envio:
curl -X POST http://localhost:3000/send \
-H 'Authorization: dev-mailer-key' \
-H 'Content-Type: application/json' \
-d '{
"from": "tu_correo@gmail.com",
"to": "destinatario@correo.com",
"subject": "Prueba SAGEC",
"text": "Correo de prueba",
"html": "<p>Correo de prueba</p>"
}'534-5.7.9 Application-specific password required:SMTP_PASSno es App Password valida.550 From header sender domain not verified: el remitente SMTP no esta permitido por tu proveedor.401 Unauthorizeden/send:MAILER_API_AUTH_KEYyMAILER_AUTHORIZATION_KEYno coinciden.
frontend/: app React + Vite (UI, rutas, servicios, estilos)backend/: API Go (entrypoint encmd/api/main.go)backend/internal/: modulos del dominio (handlers, servicios, repos, DTOs, validaciones)backend/prisma/: schema y migracionespostman/: coleccion de requests
Pasos recomendados:
- Crear carpeta en
backend/internal/<modulo>/con estructura similar ausersoevents:handler/para HTTP handlersservice/para logica de negociorepo/para acceso a datosdto/yvalidation/si aplica
- Registrar rutas en
backend/cmd/api/main.go. - Si hay cambios de datos, actualizar
backend/prisma/schema.prismay crear migracion. - Agregar pruebas unitarias en el modulo nuevo.
Este backend usa Prisma Client Go con Postgres.
Comandos Prisma (desde la raiz del proyecto):
npm run prisma:migrate:local # usa .env.local
npm run prisma:migrate:neon # usa .env.neon
npm run prisma:studio:local # Prisma Studio con .env.local
npm run prisma:studio:neon # Prisma Studio con .env.neon
npm run prisma:status:local # estado de migraciones con .env.local
npm run prisma:status:neon # estado de migraciones con .env.neon
npm run prisma:reset:local # reset DB con .env.local
npm run prisma:reset:neon # reset DB con .env.neonmake backend # inicia backend en :8080
make backend-test # pruebas Go
make frontend-install # instala deps frontend
make frontend-dev # Vite dev server (puerto por defecto 5173)
make frontend-build # build frontend
make frontend-test # Jest
make frontend-e2e # Cypress E2E tests
make dev local # backend + frontend, Postgres via Docker (usa .env.local en raiz)
make dev neon # backend + frontend contra Neon (usa .env.neon en raiz)
make dev server # frontend local, API remoto en Koyeb (usa .env en raiz)Importa postman/collection.json en Postman para probar los modulos principales del API.
Cobertura actual de la colección:
- Auth (registro, login, recuperación y logout)
- Users, Roles y Permissions
- Eventos, Inscripciones, Registrations
- Notifications, Paises, Sesiones
- Trabajos cientificos (participante, revisor y comité)
- Mensajes (conversaciones, mensajes, participantes, busqueda y adjuntos)
- SMTP utilitario (
/api/smtp/send,/api/smtp/sandbox)
Variable de entorno usada por Postman:
base_url = http://localhost:8080
Las rutas HTTP se registran en backend/cmd/api/main.go. Grupos principales:
/api/auth/*/api/users,/api/user/*,/api/roles*,/api/permissions*,/api/resources/api/eventos*,/api/inscripciones*,/api/registrations*/api/notifications*/api/paises,/api/ciudades,/api/sesiones*/api/trabajos-cientificos*/api/mensajes/*/api/smtp/*
- Ejecuta pruebas de Go y Jest
- Construye el frontend
- Corre Cypress contra
vite previewy el backend