# Project Features This document outlines the main features of the Tourn.me application, a comprehensive platform for managing padel tournaments. The project is divided into a frontend application (`app.tourn.me`) and a backend service (`padeltour`). ## Backend Features (padeltour) The backend is built with Python and FastAPI, providing a robust API for the frontend. ### Core APIs - **Authentication**: Handles user login, token refresh, and other authentication-related tasks. - **Companies**: Manages company information, including admin creation and password changes. - **Courts**: Provides endpoints for creating, retrieving, updating, and deleting court information. - **Dashboard**: Offers endpoints to fetch data for the main dashboard, including statistics and overviews. - **Password Reset**: Manages the password reset process, including token validation and password updates. - **Players**: Handles player management, including creation, deletion, and association with tournaments. - **Registration**: Manages the company registration process, including email verification. - **Tournaments**: Provides comprehensive management of tournaments, from creation to player and court assignments. - **Tournament Staging**: Manages the different stages of a tournament, including: - **Brackets**: Handles the creation and management of tournament brackets. - **Groups**: Manages player groups within a tournament. - **Matches**: Provides endpoints for match management and scheduling. - **Scheduling**: Automates the scheduling of matches. - **Stages**: Manages the different stages of a tournament (e.g., group stage, knockout stage). - **Stats**: Provides statistics for tournaments. ## Frontend Features (app.tourn.me) The frontend is a Next.js application that provides a user-friendly interface for managing tournaments. ### Main Sections - **Dashboard**: The main landing page after login, providing an overview of key metrics. - **Overview**: Displays statistics related to sales, user activity, and more. - **Courts**: Allows for the management of padel courts. - **Players**: A section for managing players, including creation and viewing. - **Products**: Manages products or services offered. - **Profile**: Allows users to manage their company profile and settings. - **Tournament**: The core section for managing tournaments. ### Tournament Management - **Tournament Creation**: A step-by-step process to create new tournaments. - **Tournament Overview**: A view of all ongoing and past tournaments. - **Tournament Details**: A detailed view of a specific tournament, including: - Player management - Court assignments - Match scheduling - Bracket visualization ### User Authentication - **Sign In/Register**: Standard user authentication pages. - **Forgot/Reset Password**: A complete flow for password recovery. ### Other Features - **Email Service**: Integrated email notifications for events like registration and password recovery. - **Internationalization (i18n)**: The application supports multiple languages. - **Real-time Updates**: The application is set up for real-time data fetching and updates. - **API Documentation**: The project includes a `collection` folder with API requests for easier testing and integration. - **Monitoring**: The `grafana` folder suggests that the application is set up for monitoring with Grafana dashboards. - **Database Migrations**: Uses `alembic` for handling database schema migrations. - **Containerization**: Both the frontend and backend applications are containerized using Docker.