FutsalManager is an open-source, full-stack futsal league management platform built with Angular 20 on the frontend and Node.js/Express on the backend. It gives league administrators the tools to create seasons, schedule matches, and manage teams and players. Referees get a real-time match console to record goals and cards. Fans can follow their favourite teams, vote on match outcomes, and track their prediction score on a global leaderboard — all from a single web application.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.
What FutsalManager does
Live match management
Referees lock matches for exclusive editing, record goals and cards event by event, and publish final results that instantly update all standings.
Automatic standings
League tables recalculate the moment a match is closed, with full tie-breaking logic applied per group and season.
Player & team statistics
Track top scorers, disciplinary records, and team performance across every season. Statistics are scoped per season so historical data is never overwritten.
Team following
Authenticated users can follow any team. Followed teams are highlighted in the schedule and on the user’s profile page.
Match outcome voting
Before each match starts, fans predict the result. Points are distributed after the match closes, and a global ranking tracks top predictors.
Role-based access control
Three distinct roles — admin, referee, and user — each with a clearly scoped set of permissions enforced at the API level.
Multi-season support
Create multiple seasons with independent groups, fixtures, standings, and player registrations. Import structure from a previous season to save setup time.
Image uploads via Cloudinary
Admins upload team and player photos directly from the admin panel. Images are optimised and stored in Cloudinary.
User roles
FutsalManager has three roles. Roles are stored in the JWT payload and enforced by server-side middleware on every protected route.| Role | Token expiry | What they can do |
|---|---|---|
| User | 7 days | Register, log in, view all public data (matches, standings, stats, team and player profiles), vote on match outcomes, follow teams, manage their own profile |
| Referee | 6 hours | All user capabilities, plus lock matches for exclusive editing, record match events (goals, cards), update match status, and finalize matches |
| Admin | 6 hours | All referee capabilities, plus create and manage seasons, groups, teams, players, fields, schedule matches, delete any content, and upload images |
There is no in-app registration flow for the
admin or referee roles. New users always register as user. To promote an account, an admin must update the role column directly in the database or via the admin panel if your deployment exposes that option.Next steps
Quickstart
Clone the repo, configure environment variables, and run both services locally in under ten minutes.
Architecture
Learn how the Angular SPA, Node.js API, PostgreSQL, and Redis fit together.
API reference
Explore every REST endpoint with request and response schemas.
Admin guide
Set up your first season, create groups, and schedule matches.