$ ./devurity --serve
Plataforma web del Semillero de Ciberseguridad e Ingeniería Devurity
Universidad Surcolombiana, Colombia.
DevurityWeb es la plataforma web de Devurity, semillero de investigación en ciberseguridad e ingeniería de la Universidad Surcolombiana. Cubre dos frentes desde una misma base de código: la cara pública, que comunica quién es el semillero y qué construye, y la operación interna, que gestiona membresías, asistencia, proyectos y contenido.
Nació para resolver un problema concreto, el semillero coordinaba todo por hojas de cálculo y WhatsApp, sin presencia digital propia. Llegó a producción, tras meses de desarrollo y más de 130 pull requests.
Público. cualquier visitante:
├── landing institucional: misión, equipo, eventos
├── perfiles públicos de miembros en /@usuario, con habilidades y enlaces sociales
├── catálogo de proyectos del semillero, con página propia por proyecto
├── noticias y eventos vía sistema de gestión de contenido
├── galería de imágenes
└── registro con validación de correo institucional (@usco.edu.co)
Semillero. miembros autenticados y administradores:
├── control de acceso por rol: administrador, gestor de contenido, líder de proyecto, miembro
├── panel administrativo: usuarios, roles, aprobación de registros
├── gestión, trazabilidad y seguimiento de proyectos: estado, hitos, equipo asignado
├── asistencias por código QR dinámico: genera, escanea, registra
├── gestión de contenido: noticias, eventos, destacados
├── edición de perfil: habilidades, plataformas, biografía
└── recuperación de contraseña por correo, con token de un solo uso
Bajo el capó >_
├── JWT con verificación de firma criptográfica en el edge
├── CSRF mediante patrón de doble token en cada mutación
├── rate limiting en intentos de login
├── patrón Repository entre lógica de negocio y acceso a datos
├── ISR en páginas públicas
└── middleware que aplica RBAC antes de que la solicitud llegue a la página
| Capa | Elección |
|---|---|
| Framework | Next.js 15, App Router, React 19 |
| Lenguaje | TypeScript (modo estricto) |
| Base de datos | PostgreSQL |
| ORM | Prisma |
| Estilos | Tailwind CSS v4 |
| Auth | JWT propio + CSRF + RBAC |
| Despliegue | Vercel (serverless, edge middleware) |
| Gestor de paquetes | pnpm |
Un stack bien pensado. SSR para un SEO vital. App Router sin necesidad de un backend separado. Prisma ofrece acceso tipado a la base de datos sin escribir SQL a mano. Vercel permitió desplegar a producción con un sano mantenimiento.
git clone https://github.com/trbureiyan/DevurityWeb
cd DevurityWeb
corepack enable
pnpm install
cp .env.example .env
pnpm exec prisma db push
pnpm run devRequiere Node 18+, pnpm y una instancia de PostgreSQL. El proyecto usa pnpm con lockfile versionado para builds deterministas; npm no es compatible.
Note
Si vienes de una configuración con npm, ejecuta node scripts/migrate.mjs para limpiar artefactos antiguos y sincronizar con pnpm.
app/ Rutas (App Router)
(public)/ Páginas públicas: landing, sobre nosotros, galería, auth, proyectos
(protected)/ Páginas autenticadas: perfil, panel de administración
api/ Manejadores de rutas (API)
components/ UI reutilizable
landing/ Secciones de la landing page
admin/ Componentes del panel de administración
ui/ Primitivas base
lib/ Lógica de negocio, configuración de auth, utilidades
repositories/ Capa de acceso a datos (Prisma)
prisma/ Esquema, migraciones, datos semilla
middleware.ts Autenticación, RBAC, seguridad
La base de código sigue una arquitectura en capas: los componentes consumen repositorios, los repositorios hablan con Prisma, Prisma habla con Postgres. Middleware intercepta cada solicitud antes de que llegue a la página.
req ─→ middleware ─→ route ─→ component ─→ repository ─→ prisma ─→ pg
Abierto a miembros del semillero y colaboradores externos autorizados.
- Rama nueva desde
dev - Changes
- Pull request con descripción clara
- Si aplica, actualiza
/docs
Convenciones: conventional commits, ESLint + TypeScript estricto, pruebas donde tengan sentido. Ejecuta pnpm run build antes de subir cambios.
- Brayan Toro Bustos
- Alexander Lozada Caviedes
- Manuel Felipe Rojas Yasno
- Juan Camilo Mora Castañeda
GNU GPL-3.0. El proyecto pertenece a la comunidad Devurity: úsalo, modifícalo, y mantenlo abierto.
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌