Uma plataforma colaborativa de tutoria entre pares que conecta estudantes que precisam de ajuda com aqueles que podem ensinar. Desenvolvida com React e Node.js.
- Visão Geral
- Funcionalidades
- Arquitetura
- Pré-requisitos
- Instalação
- Configuração
- Referência da API
- Uso
- Contribuição
- Licença
Tutor Connect é uma aplicação web projetada para facilitar a tutoria entre estudantes. A plataforma permite que usuários se registrem como tutores, definam sua disponibilidade e se conectem com alunos que buscam ajuda em disciplinas específicas. As sessões são agendadas com integração automática ao Google Meet para tutorias online.
- Buscar tutores por disciplina e disponibilidade
- Visualizar perfis, avaliações e comentários dos tutores
- Agendar sessões de tutoria
- Participar de sessões via links integrados do Google Meet
- Avaliar e comentar sessões concluídas
- Receber notificações sobre sessões e avaliações
- Cadastrar disciplinas que pode ensinar com níveis de proficiência
- Definir disponibilidade por data e horário
- Confirmar ou recusar solicitações de sessão
- Acompanhar histórico de sessões e avaliações
- Gerenciar agenda de tutorias
- Receber notificações sobre agendamentos, avaliações e alterações
- Autenticação via Google OAuth
- Criação automática de eventos no Google Calendar
- Geração de link do Google Meet para cada sessão
- Gerenciamento de status das sessões em tempo real
- Sistema de avaliação e comentários
- Sistema de notificações para alunos e tutores
- Exibição de estatísticas rápidas (quantidade de alunos e tutores)
- Termos de Uso e Política de Privacidade exibidos no sistema
tutor-connect/
├── backend/
│ ├── models/
│ │ ├── Avaliacao.js
│ │ ├── Notificacao.js
│ │ ├── Sessao.js
│ │ └── User.js
│ ├── routes/
│ │ ├── auth.js
│ │ ├── notificacoes.js
│ │ ├── sessoes.js
│ │ └── users.js
│ ├── helpers/
│ │ └── notificacaoHelper.js
│ ├── server.js
│ ├── package.json
│ └── .env.example
│
└── frontend/
├── public/
│ └── index.html
├── src/
│ ├── components/
│ │ ├── ui/
│ │ ├── Agendamento.js
│ │ ├── Avaliacao.js
│ │ ├── Dashboard.js
│ │ ├── Login.js
│ │ ├── Notifications.js
│ │ ├── Profile.js
│ │ └── ProfileSetup.js
│ ├── lib/
│ │ └── utils.js
│ ├── App.js
│ └── index.js
├── package.json
└── tailwind.config.js
Backend
- Node.js
- Express.js
- MongoDB com Mongoose
- JSON Web Tokens (JWT)
- Google APIs (OAuth2, Calendar)
- Sistema de notificações (backend)
Frontend
- React 18
- React Router v7
- Tailwind CSS
- Biblioteca de componentes shadcn/ui
- Axios
- Lucide Icons
- Sistema de notificações (frontend)
- Modal de Termos de Uso e Política de Privacidade
Antes de começar, certifique-se de ter instalado:
- Node.js (versão 18.0.0 ou superior)
- npm (versão 9.0.0 ou superior)
- MongoDB (versão 6.0 ou superior)
- Git
Você também precisará de:
- Uma conta no Google Cloud Platform com credenciais OAuth 2.0
- Google Calendar API habilitada
git clone https://github.com/eduardoamorim-dev/tutor-connect.git
cd tutor-connectcd backend
npm install
cp .env.example .envEdite o arquivo .env com suas configurações (veja Configuração).
npm run devO servidor iniciará em http://localhost:5001.
cd frontend
npm install
npm startA aplicação abrirá em http://localhost:3000.
Crie um arquivo .env no diretório backend com as seguintes variáveis:
# Banco de Dados
MONGO_URI=mongodb://localhost:27017/tutor-connect
# Autenticação
JWT_SECRET=sua-chave-secreta-jwt
# Google OAuth
GOOGLE_CLIENT_ID=seu-google-client-id
GOOGLE_CLIENT_SECRET=seu-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:5001/auth/google/callback
# Servidor
PORT=5001- Acesse o Google Cloud Console
- Crie um novo projeto ou selecione um existente
- Habilite as seguintes APIs:
- Google+ API
- Google Calendar API
- Navegue até "APIs e Serviços" > "Credenciais"
- Crie credenciais de ID do cliente OAuth 2.0
- Configure a tela de consentimento OAuth
- Adicione URI de redirecionamento autorizado:
http://localhost:5001/auth/google/callback - Copie o Client ID e Client Secret para seu arquivo
.env
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /auth/google |
Inicia fluxo de OAuth do Google |
| GET | /auth/google/callback |
Callback do OAuth |
| GET | /auth/verify |
Valida token JWT |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /users/profile |
Obtém perfil do usuário atual |
| PUT | /users/profile |
Atualiza perfil do usuário |
| GET | /users/tutores |
Lista tutores disponíveis |
| GET | /users/tutor/:id |
Obtém detalhes do tutor |
| GET | /users/tutor/:id/disponibilidade |
Obtém disponibilidade do tutor |
| POST | /users/disponibilidade |
Adiciona horário de disponibilidade |
| DELETE | /users/disponibilidade/:id |
Remove horário de disponibilidade |
| GET | /users/contagem |
Retorna quantidade de alunos e tutores cadastrados |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /sessoes/create |
Cria nova sessão |
| GET | /sessoes/minhas-sessoes |
Lista sessões do usuário |
| GET | /sessoes/:id |
Obtém detalhes da sessão |
| PUT | /sessoes/:id/confirmar |
Confirma sessão (tutor) |
| PUT | /sessoes/:id/concluir |
Marca sessão como concluída |
| PUT | /sessoes/:id/cancelar |
Cancela sessão |
| POST | /sessoes/avaliar |
Envia avaliação da sessão |
| GET | /sessoes/avaliacoes/tutor/:tutorId |
Lista avaliações e comentários de um tutor |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /notificacoes |
Lista notificações do usuário |
| GET | /notificacoes/count |
Retorna quantidade de notificações não lidas |
| PUT | /notificacoes/:id/ler |
Marca notificação como lida |
| PUT | /notificacoes/ler-todas |
Marca todas como lidas |
| DELETE | /notificacoes/:id |
Remove notificação |
| DELETE | /notificacoes |
Remove todas notificações lidas |
Criar Sessão
POST /sessoes/create
Authorization: Bearer <token>
{
"tutorId": "64abc123def456",
"disciplina": "Cálculo I",
"data_hora_inicio": "2024-01-15T14:00:00.000Z",
"data_hora_fim": "2024-01-15T15:00:00.000Z",
"observacoes": "Preciso de ajuda com derivadas"
}Atualizar Perfil
PUT /users/profile
Authorization: Bearer <token>
{
"bio": "Estudante de Ciência da Computação",
"localizacao": "São Paulo, SP",
"isTutor": true,
"disciplinas_dominadas": [
{ "disciplina": "Programação I", "nivel": "Avançado" }
],
"disciplinas_precisa": [
{ "disciplina": "Cálculo II", "nivel_desejado": "Intermediário" }
]
}- Autenticação: Usuários fazem login usando sua conta Google
- Configuração do Perfil: Novos usuários completam o processo de onboarding
- Selecionam papel (apenas aluno ou aluno e tutor)
- Adicionam disciplinas que precisam de ajuda
- Se tutor: adicionam disciplinas que podem ensinar
- Dashboard: Usuários podem buscar tutores e gerenciar sessões
- Agendamento: Alunos selecionam horários disponíveis e solicitam sessões
- Gerenciamento de Sessões: Tutores confirmam sessões; ambas as partes entram via Google Meet
- Avaliação: Após conclusão, alunos podem avaliar e comentar sobre tutores
- Notificações: Alunos e tutores recebem notificações sobre sessões, avaliações e lembretes
Pendente -> Confirmada -> Concluída
| |
v v
Cancelada Cancelada
Contribuições são bem-vindas! Leia o Guia de Contribuição para informações detalhadas sobre:
- Como configurar o ambiente de desenvolvimento
- Fluxo de trabalho com Git e GitHub
- Padrões de código e commits
- Como abrir Pull Requests
- Como reportar problemas
Se você nunca contribuiu com um projeto open source antes, nosso guia foi feito especialmente para te ajudar a dar os primeiros passos.
Eduardo Amorim - Criador e Mantenedor Principal
- GitHub: @eduardoamorim-dev
Este projeto foi desenvolvido como parte de uma pesquisa acadêmica durante a graduação.
Agradecemos a todas as pessoas que contribuem para este projeto! ✨
Quer aparecer aqui? Veja nosso Guia de Contribuição!
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para detalhes.
- Prof. Junio Moreira - Orientador da pesquisa acadêmica que originou este projeto
- Meus pais - Pelo apoio incondicional durante toda a graduação