Skip to content

LuizPiresS/iTeacher

Repository files navigation

iTeacher

O iTeacher é uma plataforma inovadora que conecta alunos e professores, facilitando o agendamento de aulas presenciais e, futuramente, remotas. O sistema foi projetado para promover a educação personalizada, aproximando quem quer aprender de quem pode ensinar, com foco em qualidade, segurança e experiência do usuário.

A plataforma permite que alunos encontrem professores por proximidade, área de conhecimento, avaliação e especialidade, utilizando recursos de geolocalização para recomendações inteligentes. Professores podem criar perfis detalhados, cadastrar horários disponíveis, definir preços e receber avaliações dos alunos, promovendo um ambiente meritocrático e transparente.

O iTeacher diferencia-se por:

  • Sistema de avaliação robusto, com critérios diferenciados para professores verificados e não verificados.
  • Busca inteligente baseada em localização e ranking.
  • Processo seguro de cadastro e validação de usuários.
  • Gestão de agenda e bloqueio automático de horários.
  • Foco inicial em aulas presenciais, com arquitetura preparada para expansão para aulas remotas e recursos multimídia.

O público-alvo são estudantes de todas as idades que buscam reforço escolar, aulas particulares ou desenvolvimento de novas habilidades, e professores/autônomos que desejam ampliar sua rede de alunos e profissionalizar seu serviço.

O MVP contempla:

  • Cadastro e validação de alunos e professores
  • Busca e agendamento de aulas presenciais
  • Sistema de avaliação
  • Gestão de perfis e agenda
  • Geolocalização para recomendações

A visão de futuro inclui integração com plataformas de vídeo, aulas remotas, pagamentos online, notificações e muito mais.

Build License Node

Sistema backend modular para gestão de usuários, perfis e aulas, baseado em NestJS, Prisma e PostgreSQL, com foco em educação, avaliações e geolocalização. O projeto segue princípios de arquitetura limpa e escalável.


Sumário


Sobre o Projeto

O iTeacher é uma API backend para conectar alunos e professores, permitindo marcação de aulas presenciais, avaliações, busca por proximidade e gerenciamento de perfis. O sistema foi desenhado para ser seguro, escalável e fácil de evoluir, com regras de negócio claras para cada perfil de usuário.

Principais Regras de Negócio

  • MVP: Inicialmente, apenas aulas presenciais podem ser marcadas.
  • Cadastro de Aluno: Inclui endereço (convertido em coordenadas geográficas), telefone, e-mail (com validação via token) e senha hasheada.
  • Cadastro de Professor: Dois tipos (verificado e não verificado), com envio de documentação para verificação e perfil público detalhado.
  • Sistema de Avaliação:
    • Notas de 0 a 5 estrelas.
    • Professores verificados: avaliação ponderada (peso extra).
    • Professores não verificados e alunos: média simples.
  • Busca e Listagem:
    • Alunos podem buscar professores por nome, disciplina, assunto, proximidade e avaliação.
    • Professores listados por proximidade e ranking.
  • Geolocalização: Endereços são convertidos em coordenadas para recomendações e visualização no mapa.
  • Agenda do Professor: Professores cadastram horários livres; horários ocupados são bloqueados automaticamente.
  • Avaliação: Alunos avaliam professores e vice-versa.
  • Desativação e Exclusão de Conta: Alunos podem desativar (reversível) ou deletar (irreversível) suas contas.
  • Valores monetários: Sempre salvos como inteiros (ex: centavos).

Fluxos de Aluno

  • Cadastro, validação de e-mail, login, edição de dados, desativação/exclusão de conta.
  • Cadastro e edição de perfil (bio, data de nascimento, site, imagem, etc).
  • Busca e avaliação de professores.
  • Escolha entre professores verificados ou não, filtro por proximidade e avaliação.

Fluxos de Professor

  • Cadastro (verificado ou não), envio de documentação, criação de perfil público.
  • Cadastro de agenda e horários disponíveis.
  • Cadastro de aulas gravadas (exemplo via YouTube).
  • Avaliação de alunos.
  • Definição de pontuação mínima de alunos para aceitar aulas.

Tecnologias

Instalação

  1. Clone o repositório:
    git clone <url-do-repo>
    cd iTeacher
  2. Copie o arquivo de variáveis de ambiente:
    cp .env.example .env
  3. Suba os containers Docker:
    docker compose up -d
  4. Instale as dependências:
    npm install
  5. Gere o client do Prisma:
    npx prisma generate
  6. Rode as migrações:
    npx prisma migrate deploy

Como Usar

  • Inicie a aplicação em modo desenvolvimento:
    npm run start:dev
  • Acesse a documentação Swagger em: http://localhost:3000/api

Estrutura do Projeto

├── src
│   ├── main.ts
│   ├── app.module.ts
│   └── modules
│       ├── users
│       │   ├── domain
│       │   ├── application
│       │   ├── infrastructure
│       │   └── presentation
│       └── profiles
│           ├── domain
│           └── http
├── prisma
│   ├── schema.prisma
│   └── migrations
├── test
├── docs
├── Dockerfile
├── docker-compose.yml
└── ...

Testes

  • Para rodar todos os testes:
    npm run test
  • Para rodar testes de cobertura:
    npm run test:cov

Documentação

Contribuição

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nome-feature)
  3. Commit suas alterações (git commit -m 'feat: minha feature')
  4. Push para a branch (git push origin feature/nome-feature)
  5. Abra um Pull Request

Consulte os guias internos para:

Licença

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •