Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Danielsl4/TFG_DAM_2526/llms.txt

Use this file to discover all available pages before exploring further.

FutsalLeague Manager is a full-stack web application built to run competitive futsal leagues end-to-end. From scheduling matches and tracking player statistics to managing standings across multiple seasons and groups, it handles every layer of league administration in one platform. Fans can follow their teams, vote on match outcomes before kick-off, and compete in a prediction leaderboard — all without needing admin access. The platform is purpose-built for three types of users working at different privilege levels. Administrators control the full lifecycle of a season: creating groups, registering teams and players, assigning referees, and finalizing results. Referees use a dedicated in-app panel to record live match events — goals, yellow cards, and red cards — with pessimistic locking that prevents two referees from editing the same match simultaneously. Registered fans can browse fixtures, view standings, follow teams, and submit pre-match result predictions that earn points on a per-season leaderboard.

Key capabilities

  • Match management — Create, schedule, and finalize matches across group stages and knockout rounds. Match finalization atomically updates standings, player stats, and prediction points in a single database transaction.
  • Live standings — Per-group standings calculated from team stats, cached in Redis and invalidated automatically when match results change.
  • Player and team statistics — Per-season goals, cards, and matches played tracked for every player; per-group wins, losses, draws, goal difference, and discipline for every team.
  • Prediction game — Users vote local/draw/away before each match. Correct predictions earn points, displayed on a season leaderboard.
  • Admin panel — Full CRUD for seasons, groups, teams, players, fields, matches, and users. All admin actions are recorded in an audit log.
  • Referee tools — Dedicated match control panel with real-time event recording and a pessimistic 2-minute lock that prevents concurrent edits by multiple referees.
  • Image management — Team and player photos uploaded via Cloudinary with Sharp-based compression before storage.
  • Email workflows — Account verification and password reset emails sent via Nodemailer.

User roles

RoleDescription
adminFull access to all platform features. Can manage seasons, teams, players, matches, users, and fields. All actions are audit-logged.
refereeCan access and control assigned matches. Records in-game events (goals, cards) through the referee panel. Cannot modify league structure or users.
userRead-only access to fixtures, standings, and statistics. Can follow teams, submit match predictions, and view personal points on the leaderboard.

Tech stack

LayerTechnology
FrontendAngular 20, Bootstrap 5, Bootstrap Icons, jsPDF
BackendNode.js, Express 4, body-parser, multer
DatabasePostgreSQL (via pg connection pool)
CacheRedis (ioredis, rate-limit-redis)
AuthJSON Web Tokens (jsonwebtoken), bcrypt
StorageCloudinary v2, Sharp (image optimization)
EmailNodemailer
Schedulingnode-cron
TestingCypress (E2E), Karma + Jasmine (unit)

Where to go next

Quickstart

Run FutsalLeague Manager locally in minutes — backend, frontend, and database setup included.

Match management

Learn how matches are created, scheduled, locked, and finalized across group and knockout phases.

Authentication guide

Understand how JWT tokens, role middleware, and email verification work together.

Auth API reference

Explore the login, register, and token endpoints with full request and response schemas.

Build docs developers (and LLMs) love