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.

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.

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.
RoleToken expiryWhat they can do
User7 daysRegister, log in, view all public data (matches, standings, stats, team and player profiles), vote on match outcomes, follow teams, manage their own profile
Referee6 hoursAll user capabilities, plus lock matches for exclusive editing, record match events (goals, cards), update match status, and finalize matches
Admin6 hoursAll 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.

Build docs developers (and LLMs) love