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.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.
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
| Role | Description |
|---|---|
admin | Full access to all platform features. Can manage seasons, teams, players, matches, users, and fields. All actions are audit-logged. |
referee | Can access and control assigned matches. Records in-game events (goals, cards) through the referee panel. Cannot modify league structure or users. |
user | Read-only access to fixtures, standings, and statistics. Can follow teams, submit match predictions, and view personal points on the leaderboard. |
Tech stack
| Layer | Technology |
|---|---|
| Frontend | Angular 20, Bootstrap 5, Bootstrap Icons, jsPDF |
| Backend | Node.js, Express 4, body-parser, multer |
| Database | PostgreSQL (via pg connection pool) |
| Cache | Redis (ioredis, rate-limit-redis) |
| Auth | JSON Web Tokens (jsonwebtoken), bcrypt |
| Storage | Cloudinary v2, Sharp (image optimization) |
| Nodemailer | |
| Scheduling | node-cron |
| Testing | Cypress (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.