Sistema de gestión de blog completo con soporte multiidioma, SEO automático y gestión de roles.
-Vikract NestJS Backend is a based on Nest framework TypeScript starter repository.
Versión: 0.0.1
Estado: ✅ Funcionando completamente
Servidor: http://localhost:3000/api
Para ver el historial completo de cambios, consulta el CHANGELOG.md.
npm install
npm run start:dev- 🔐 Autenticación JWT: Sistema completo con tokens JWT y API Keys en base de datos
- Gestión de Usuarios y Roles: Admin, Author, Editor, Translator
- Sistema Multiidioma: Soporte para múltiples idiomas (español e inglés por defecto)
- SEO Automático: Generación automática de meta tags, JSON-LD y URLs amigables
- Gestión de Contenido: Blogs, artículos, categorías y tags
- Estados de Artículo: Publicado, borrador, no publicado, eliminado (soft delete)
- Base de Datos: PGlite integrada para portabilidad
- Validación: Validación automática de datos con class-validator
# Instalar dependencias
npm install
# Construir el proyecto
npm run build
# Iniciar en modo desarrollo
npm run start:dev
# Iniciar en modo producción
npm run start:prodPOST /api/auth/register- Registro de usuariosPOST /api/auth/login- Login con JWTGET /api/auth/profile- Perfil del usuario (requiere auth)
POST /api/api-keys- Crear nueva API KeyGET /api/api-keys/my-keys- Mis API KeysPATCH /api/api-keys/:id/deactivate- Desactivar tokenDELETE /api/api-keys/:id- Eliminar token
GET /api/users- Listar usuarios (requiere auth)POST /api/users- Crear usuario (requiere auth)GET /api/users/:id- Obtener usuario (requiere auth)PATCH /api/users/:id- Actualizar usuario (requiere auth)DELETE /api/users/:id- Eliminar usuario (requiere auth)
GET /api/roles- Listar rolesPOST /api/roles- Crear rolGET /api/roles/:id- Obtener rol
GET /api/languages- Listar idiomasGET /api/languages/active- Idiomas activosPOST /api/languages- Crear idioma
GET /api/blogs- Listar blogsPOST /api/blogs- Crear blogGET /api/blogs/slug/:slug- Obtener blog por slugGET /api/blogs/:id- Obtener blog
GET /api/articles- Listar artículos (requiere auth)GET /api/articles/published- Artículos publicados (público)POST /api/articles- Crear artículo (requiere auth)GET /api/articles/slug/:slug- Obtener artículo por slug (público)PATCH /api/articles/:id/status- Cambiar estado del artículo (requiere auth)
GET /api/categories?lang=es- Listar categorías por idiomaPOST /api/categories- Crear categoríaGET /api/categories/slug/:slug?lang=es- Obtener categoría por slug
GET /api/tags?lang=es- Listar tags por idiomaPOST /api/tags- Crear tag
Email: admin@example.com
Password: admin123
Roles: [Admin]
Nota: Cambia las credenciales en producción para mayor seguridad.
El proyecto utiliza PGlite (PostgreSQL embebido) para máxima portabilidad:
- ✅ No requiere instalación de PostgreSQL
- ✅ Base de datos incluida en el proyecto
- ✅ Setup inmediato para desarrollo local
- ✅ Tabla
api_keyspara gestión avanzada de tokens JWT
Para detalles técnicos de configuración, consulta docs/CHANGELOG.md y docs/PGLITE_ANALYSIS.md
- JWT Tokens: Para sesiones de usuario (24 horas de duración)
- API Keys: Tokens persistentes en base de datos con gestión avanzada
- Validación Dual: Acepta tanto JWT estándar como API Keys
# Registro
curl -X POST http://localhost:3000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","firstName":"John","lastName":"Doe","username":"johndoe","password":"password123"}'
# Login
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"password123"}'
# Usar token en headers
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://localhost:3000/api/users# Crear API Key (requiere JWT)
curl -X POST http://localhost:3000/api/api-keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Mi Aplicación","expiresAt":"2025-12-31T23:59:59.000Z"}'
# Usar API Key
curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:3000/api/usersGET /api/- Información del APIGET /api/articles/published- Artículos publicadosGET /api/articles/slug/:slug- Artículo por slugPOST /api/auth/register- RegistroPOST /api/auth/login- Login
- docs/CHANGELOG.md - Historial completo de cambios y versiones
- docs/PGLITE_ANALYSIS.md - Análisis técnico de configuración PGlite
- docs/JWT_TESTS_SUMMARY.md - Resumen de tests de autenticación JWT
- postman/README.md - Guía de testing con Postman
- postman/TEST_DATA.md - Datos de prueba para APIs
Guías completas para integrar con frameworks modernos:
- docs/REACT-IMPLEMENTATION.md - React 19+ con Zustand y React Query
- docs/ANGULAR-IMPLEMENTATION.md - Angular 19+ con servicios y guards
- docs/VUE-IMPLEMENTATION.md - Vue 3+ con Pinia y Composition API
- docs/FRONTEND-IMPLEMENTATION.md - Guía general multiplataforma
- Author - Maximiliano José Sorribas
- Website - https://naimara.com/vikract
- Twitter - @naimarasoftware
Vikract is MIT licensed.