Skip to content

Beto1821/TFC

Repository files navigation

⚽ TFC - Trybe Futebol Clube

Uma aplicação full-stack para gerenciamento de partidas e classificação de times de futebol, com sistema de autenticação e painel administrativo.

📋 Sobre o Projeto

O TFC é uma plataforma web completa que permite:

  • Visualização de partidas: Acompanhe partidas em andamento e finalizadas
  • Classificação (Leaderboard): Veja a classificação geral, mandante e visitante dos times
  • Gestão de partidas: Administradores podem adicionar, editar e finalizar partidas
  • Autenticação JWT: Sistema seguro de login para administradores
  • Dashboard interativo: Interface moderna e responsiva em React

🛠️ Tecnologias Utilizadas

Backend

  • Node.js com TypeScript
  • Express.js - Framework web
  • Sequelize - ORM para MySQL
  • JWT - Autenticação segura
  • bcrypt.js - Criptografia de senhas
  • MySQL - Banco de dados relacional

Frontend

  • React - Biblioteca JavaScript
  • React Router DOM - Navegação SPA
  • Axios - Cliente HTTP
  • CSS3 - Estilização

DevOps & Ferramentas

  • Docker & Docker Compose - Containerização
  • Jest - Testes unitários e de integração
  • Mocha & Chai - Testes backend
  • Puppeteer - Testes E2E
  • ESLint - Linting de código
  • Nyc - Cobertura de testes

🚀 Como Executar

Pré-requisitos

  • Docker e Docker Compose instalados
  • Node.js (versão 16 ou superior)
  • npm ou yarn

Instalação

  1. Clone o repositório:
git clone https://github.com/Beto1821/TFC.git
cd TFC
  1. Instale as dependências:
npm install
  1. Suba os containers com Docker Compose:
npm run compose:up

A aplicação estará disponível em:

Scripts Disponíveis

# Subir aplicação em produção
npm run compose:up

# Derrubar containers
npm run compose:down

# Subir aplicação em modo desenvolvimento
npm run compose:up:dev

# Ver logs dos containers
npm run logs

# Executar testes
npm test

# Executar testes com navegador visível
npm run test:browser

# Executar testes em modo debug
npm run test:debug

📁 Estrutura do Projeto

TFC/
├── app/
│   ├── backend/                 # API REST em Node.js + TypeScript
│   │   ├── src/
│   │   │   ├── controllers/     # Controladores da aplicação
│   │   │   ├── services/        # Lógica de negócio
│   │   │   ├── middlewares/     # Middlewares de autenticação
│   │   │   ├── routes/          # Rotas da API
│   │   │   ├── database/        # Migrations, seeders e models
│   │   │   ├── interfaces/      # Interfaces TypeScript
│   │   │   └── tests/           # Testes unitários
│   │   └── Dockerfile
│   │
│   ├── frontend/                # Interface em React
│   │   ├── src/
│   │   │   ├── components/      # Componentes reutilizáveis
│   │   │   ├── pages/           # Páginas da aplicação
│   │   │   ├── services/        # Serviços de API
│   │   │   └── styles/          # Estilos CSS
│   │   └── Dockerfile
│   │
│   └── docker-compose.yml       # Orquestração dos containers
│
└── __tests__/                   # Testes E2E e de integração

🔑 Funcionalidades

Para Usuários

  • ✅ Visualizar todas as partidas (em andamento e finalizadas)
  • ✅ Filtrar partidas por status
  • ✅ Consultar tabela de classificação geral
  • ✅ Consultar classificação de times mandantes
  • ✅ Consultar classificação de times visitantes

Para Administradores

  • ✅ Login com email e senha
  • ✅ Criar novas partidas
  • ✅ Editar placar de partidas em andamento
  • ✅ Finalizar partidas

🔐 Autenticação

O sistema utiliza JWT (JSON Web Token) para autenticação. As rotas administrativas requerem token válido no header:

Authorization: Bearer <seu-token-jwt>

🧪 Testes

O projeto possui cobertura completa de testes:

  • Testes unitários no backend (Mocha + Chai + Sinon)
  • Testes de integração da API
  • Testes E2E com Puppeteer
  • Cobertura de código com Nyc

Execute os testes:

npm test

📊 API Endpoints

Times

  • GET /teams - Lista todos os times
  • GET /teams/:id - Busca time por ID

Partidas

  • GET /matches - Lista todas as partidas
  • GET /matches?inProgress=true - Partidas em andamento
  • GET /matches?inProgress=false - Partidas finalizadas
  • POST /matches - Cria nova partida (autenticação necessária)
  • PATCH /matches/:id - Atualiza placar (autenticação necessária)
  • PATCH /matches/:id/finish - Finaliza partida (autenticação necessária)

Classificação

  • GET /leaderboard - Classificação geral
  • GET /leaderboard/home - Classificação mandantes
  • GET /leaderboard/away - Classificação visitantes

Autenticação

  • POST /login - Realiza login
  • GET /login/role - Valida token e retorna role

🐳 Docker

O projeto utiliza três containers:

  1. frontend: Aplicação React (porta 3000)
  2. backend: API Node.js (porta 3001)
  3. db: Banco MySQL (porta 3002)

📝 Variáveis de Ambiente

O backend utiliza as seguintes variáveis (já configuradas no docker-compose):

APP_PORT=3001
JWT_SECRET=jwt_secret
DB_USER=root
DB_PASS=123456
DB_HOST=db
DB_PORT=3306

👨‍💻 Desenvolvedor

Desenvolvido por Beto1821


TFC - Trybe Futebol Clube - Gerenciamento completo de campeonatos de futebol

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •