jeandv /
solid-clean-code
Apuntes y practica sobre los fundamentos de la arquitectura y desarrollo de software, principios SOLID y clean code.
32/100 healthLoading repository data…
fabianbele2605 / repository
practica sobre los aprendido de la ruta NestJS y typeScript Riwi
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Práctica sobre lo aprendido de la ruta NestJS y TypeScript - Riwi
Sistema completo de gestión de torneos deportivos desarrollado con NestJS, TypeScript, Prisma y PostgreSQL. Incluye autenticación JWT, autorización por roles y CRUD completo para todas las entidades.
Gestión completa de usuarios del sistema.
/users (GET, POST, PATCH, DELETE)Sistema de autenticación y autorización.
/auth/login, /auth/register, /auth/profileGestión de torneos deportivos.
/tournaments (GET, POST, PATCH, DELETE)Gestión de equipos participantes.
/teams (GET, POST, PATCH, DELETE)Gestión de jugadores de los equipos.
/players (GET, POST, PATCH, DELETE)Gestión completa de partidos entre equipos.
/matches (GET, POST, PATCH, DELETE)Sistema de comunicación en tiempo real.
Sistema de integración y despliegue continuo.
Suite completa de testing automatizado.
model User {
id String @id @default(cuid())
email String @unique
password String
name String
role Role @default(USER)
tournaments Tournament[]
}
model Tournament {
id String @id @default(cuid())
name String
description String?
startDate DateTime
endDate DateTime
maxTeams Int
status TournamentStatus @default(UPCOMING)
organizer User @relation(fields: [organizerId], references: [id])
teams Team[]
matches Match[]
}
model Team {
id String @id @default(cuid())
name String
description String?
tournament Tournament @relation(fields: [tournamentId], references: [id])
players Player[]
homeMatches Match[] @relation("HomeTeam")
awayMatches Match[] @relation("AwayTeam")
}
model Player {
id String @id @default(cuid())
name String
position String?
number Int?
team Team @relation(fields: [teamId], references: [id])
}
model Match {
id String @id @default(cuid())
matchDate DateTime
homeScore Int?
awayScore Int?
status MatchStatus @default(SCHEDULED)
tournament Tournament @relation(fields: [tournamentId], references: [id])
homeTeam Team @relation("HomeTeam", fields: [homeTeamId], references: [id])
awayTeam Team @relation("AwayTeam", fields: [awayTeamId], references: [id])
}
// Público
POST /auth/login
POST /auth/register
POST /users
// Autenticado (JWT requerido)
GET /auth/profile
GET /users, /tournaments, /teams, /players, /matches
// Solo ADMIN
POST /tournaments, /teams, /matches
PATCH /tournaments, /teams, /matches
DELETE /tournaments, /teams, /matches, /users
# Registro
curl -X POST http://localhost:3000/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"admin123","name":"Admin User","role":"ADMIN"}'
# Login
curl -X POST http://localhost:3000/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"admin123"}'
# Crear torneo (requiere token ADMIN)
curl -X POST http://localhost:3000/tournaments \
-H "Authorization: Bearer [JWT_TOKEN]" \
-H "Content-Type: application/json" \
-d '{"name":"Copa 2024","startDate":"2024-06-01","endDate":"2024-06-30","maxTeams":16}'
# Crear equipo (requiere token ADMIN)
curl -X POST http://localhost:3000/teams \
-H "Authorization: Bearer [JWT_TOKEN]" \
-H "Content-Type: application/json" \
-d '{"name":"Real Madrid","tournamentId":"tournament_id_123"}'
# Crear partido (requiere token ADMIN)
curl -X POST http://localhost:3000/matches \
-H "Authorization: Bearer [JWT_TOKEN]" \
-H "Content-Type: application/json" \
-d '{"matchDate":"2025-12-15T20:00:00Z","tournamentId":"tournament_id","homeTeamId":"team1_id","awayTeamId":"team2_id"}'
# Listar partidos con filtros
curl "http://localhost:3000/matches?tournamentId=tournament_id&status=SCHEDULED" \
-H "Authorization: Bearer [JWT_TOKEN]"
// Conexión desde cliente
import { io } from 'socket.io-client';
const socket = io('http://localhost:3000');
socket.on('connect', () => console.log('Connected'));
socket.emit('message', 'Hello from client');
# Ejecutar tests unitarios
npm run test
# Ejecutar tests E2E
npm run test:e2e
# Generar reporte de cobertura
npm run test:cov
# Ejecutar linting
npm run lint
# Los pipelines se ejecutan automáticamente:
# - CI: En cada push a feature branches
# - CD: En cada push a main
# - Security: Semanalmente y en PRs
# Build para producción
docker-compose -f docker-compose.prod.yml up -d
Clonar el repositorio:
git clone https://github.com/fabianbele2605/PracticaRutaAvanzada_NetsJS.git
cd PracticaRutaAvanzada_NetsJS
Configurar variables de entorno:
cd backend
cp .env.example .env
# Editar .env con tus configuraciones
Levantar la base de datos:
docker-compose up -d postgres
Instalar dependencias:
npm install
Ejecutar migraciones:
npx prisma migrate dev
npx prisma generate
Iniciar el servidor:
npm run start:dev
backend/
├── src/
│ ├── auth/ # Módulo de autenticación
│ ├── users/ # Módulo de usuarios
│ ├── tournaments/ # Módulo de torneos
│ ├── teams/ # Módulo de equipos
│ ├── players/ # Módulo de jugadores
│ ├── matches/ # Módulo de partidos
│ ├── websockets/ # Módulo de WebSockets
│ ├── reporting/ # Módulo de reportes
│ ├── prisma/ # Servicio de Prisma
│ ├── app.module.ts # Módulo principal
│ └── main.ts # Punto de entrada
├── prisma/
│ ├── schema.prisma # Esquema de base de datos
│ └── migrations/ # Migraciones
├── test/ # Tests e2e
├── Dockerfile # Docker para producción
├── package.json
├── docker-compose.yml
└── docker-compose.prod.yml
.github/
├── workflows/
│ ├── ci.yml # Pipeline de CI
│ ├── cd.yml # Pipeline de CD
│ └── security.yml # Pipeline de seguridad
.env.prod # Variables de producción
main: Rama principal (producción)develop: Rama de desarrollo (integración)feature/users-module: Módulo de usuariosfeature/authentication: Sistema de autenticaciónfeature/tournaments-module: Módulo de torneosfeature/teams-module: Módulo de equiposfeature/players-module: Módulo de jugadoresfeature/matches-module: Módulo de partidosfeature/realtime-websockets: Sistema de WebSocketsfeature/postman-collection: Colección de Postman para testingfeature/ci-cd: Pipeline deSelected from shared topics, language and repository description—not editorial ratings.
jeandv /
Apuntes y practica sobre los fundamentos de la arquitectura y desarrollo de software, principios SOLID y clean code.
32/100 healthArturoCarrilloJimenez /
En este repositorio encontramos varias practicas de un curso de Udemy sobre angular, la gran mayoría de los proyectos esta echo mediante módulos
29/100 health