Backend / AI / WebACTIVE· según último push

DnD Backend

API que genera personajes y campañas de rol medieval fantástico con IA para una plataforma web de mesas de rol

lang
TypeScript 56%
files
36
since
2025.07

Descriptionfuente: README.md

Backend para una plataforma web de mesas de rol al estilo D&D. Su parte más vistosa: si eres un jugador que se quedó en blanco o un DM que necesita improvisar en 30 segundos, el sistema te genera personajes completos (con atributos, trasfondo, alineamiento) y campañas originales (con antagonistas, facciones, ubicaciones) usando un modelo LLM. Además cubre la fontanería clásica de la app: registro/login de usuarios, salas de juego y personajes propios.

Featuresfuente: README.md

  1. 01Nombre, género, raza (Humano, Elfo, Enano, Orco…), clase (Guerrero, Mago, Pícaro…), edad.
  2. 026 atributos base D&D (fuerza, destreza, constitución, inteligencia, sabiduría, carisma) balanceados 1–20.
  3. 03Rasgos físicos y de personalidad, trasfondo, habilidades, rasgos únicos.
  4. 04Alineamiento (Legal Bueno … Caótico Malvado) y religión coherentes con el trasfondo.
  5. 05POST /api/auth/register — alta de usuario.
  6. 06POST /api/auth/login — login y emisión de JWT.
  7. 07middleware.ts — verifica el JWT en las rutas protegidas.
  8. 08POST /api/room/createRoom — crea una sala privada o pública.

Technologyfuente: manifiestos · topics · lenguajes

Languages
TypeScriptJavaScript
Frontend
ReactNext.js
Backend
Node.jsJWT
Data
Supabase
AI
GroqReplicate
  • TypeScript 56.0 %
  • JavaScript 32.0 %
  • CSS 12.0 %

Architecturefuente: README.md

DnDBackend/
├── pages/api/
│   ├── auth/          # register, login
│   ├── character/     # createHero, summonHero
│   ├── histories/     # createHistory, continueHistory
│   └── room/          # createRoom, join, list
├── utils/
│   ├── Client.ts      # cliente Supabase
│   ├── prompts.js     # prompts detallados para Groq (summonHero, summonCampaign)
│   └── functions.js
├── Interfaces/        # Tipos TS (Auth, Characters, Rooms, Campaings)
├── lib/Const.ts
└── middleware.ts      # Auth + CORS

Hecho con ❤️ por Sack.

README.md

Leer documento fuente →

DnDBackend — Generador de personajes y campañas de rol con IA

Backend para una plataforma web de mesas de rol al estilo D&D. Su parte más vistosa: si eres un jugador que se quedó en blanco o un DM que necesita improvisar en 30 segundos, el sistema te genera personajes completos (con atributos, trasfondo, alineamiento) y campañas originales (con antagonistas, facciones, ubicaciones) usando un modelo LLM. Además cubre la fontanería clásica de la app: registro/login de usuarios, salas de juego y personajes propios.


Qué hace

🧙 Generación de héroes con IA

POST /api/character/summonHero → pide a Groq un personaje medieval fantástico coherente. Devuelve un JSON estricto con:

  • Nombre, género, raza (Humano, Elfo, Enano, Orco…), clase (Guerrero, Mago, Pícaro…), edad.
  • 6 atributos base D&D (fuerza, destreza, constitución, inteligencia, sabiduría, carisma) balanceados 1–20.
  • Rasgos físicos y de personalidad, trasfondo, habilidades, rasgos únicos.
  • Alineamiento (Legal Bueno … Caótico Malvado) y religión coherentes con el trasfondo.

🏰 Creación y guardado de personajes propios

POST /api/character/createHero → guarda el personaje en la tabla characters de Supabase. Valida los campos y devuelve el registro creado.

📚 Generación de campañas

POST /api/histories/createHistory → arma una campaña con título, ambientación, trama, NPCs clave, ubicaciones, antagonista principal, facciones, elementos únicos, dificultad y duración estimada.

POST /api/histories/continueHistory → continúa una historia existente a partir del último estado.

🔐 Auth

  • POST /api/auth/register — alta de usuario.
  • POST /api/auth/login — login y emisión de JWT.
  • middleware.ts — verifica el JWT en las rutas protegidas.

🎲 Salas de juego

  • POST /api/room/createRoom — crea una sala privada o pública.
  • (Más endpoints en pages/api/room/ para unirse / listar).

Cómo se usa (ejemplo)

# Generar un héroe con IA
curl -X POST https://<tu-deploy>/api/character/summonHero \
  -H "Authorization: Bearer $JWT"

# Registrar ese héroe en tu cuenta
curl -X POST https://<tu-deploy>/api/character/createHero \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{"nombre":"Aelric","raza":"Elfo","clase":"Explorador", ... }'

Bajo el capó

  • Framework: Next.js 15 (API Routes) sobre React 19.
  • DB: Supabase (PostgreSQL) — tablas characters, rooms, histories, users, friends.
  • IA: Groq SDK para generación de texto (personajes / campañas); Replicate disponible para imágenes.
  • Auth: JWT.
  • Rate limiting: rate-limiter-flexible — protege los endpoints de IA contra abuso.
  • CORS: activado desde middleware.ts para que cualquier frontend pueda conectarse.

Setup local

git clone https://github.com/DarkSack/DnDBackend.git
cd DnDBackend
npm install
npm run dev            # http://localhost:3000

Variables de entorno

SUPABASE_URL=https://xxxx.supabase.co
SUPABASE_ANON_KEY=eyJhbGciOi...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOi...

JWT_SECRET=una_clave_muy_larga

GROQ_API_KEY=gsk_...
REPLICATE_API_TOKEN=r8_...

NEXTAUTH_URL=http://localhost:3000

Estructura

DnDBackend/
├── pages/api/
│   ├── auth/          # register, login
│   ├── character/     # createHero, summonHero
│   ├── histories/     # createHistory, continueHistory
│   └── room/          # createRoom, join, list
├── utils/
│   ├── Client.ts      # cliente Supabase
│   ├── prompts.js     # prompts detallados para Groq (summonHero, summonCampaign)
│   └── functions.js
├── Interfaces/        # Tipos TS (Auth, Characters, Rooms, Campaings)
├── lib/Const.ts
└── middleware.ts      # Auth + CORS

Hecho con ❤️ por Sack.

Next project RPGRoll