Sistema desenvolvido como principal atividade da disciplina de Engenharia de Software II e Banco de Dados II do Instituto Federal de Educação, Ciência e Tecnologia do Piauí (IFPI), durante o terceiro módulo de Análise e Desenvolvimento de Sistemas.
Um agente inteligente para organizar cronogramas de estudo, lembretes e quizzes personalizados, utilizando Inteligência Artificial para criar conteúdo educativo adaptado às necessidades do usuário.
- Quizzes Personalizados: Questões automáticas sobre qualquer tema
- Cronogramas Adaptativos: Planejamento estruturado baseado em objetivos
- Textos Educativos: Resumos e explicações didáticas
- Conversas Contínuas: Chat interativo sobre conteúdo gerado
- Formato intuitivo "acertos/total" em vez de percentuais complexos
- Prevenção inteligente de respostas duplicadas
- Reset automático de estado visual entre sessões
- Tracking completo de progresso por usuário
- Criação manual ou automática via IA
- Visualização detalhada de atividades
- Acompanhamento de progresso por período
- Interface organizada por datas
- Sistema de textos e resumos gerados por IA
- Conversas contínuas para aprofundamento
- Sistema de favoritos para conteúdo importante
- Renderização inteligente de markdown
- Visão geral de progresso em tempo real
- Estatísticas detalhadas de desempenho
- Navegação intuitiva em cards coloridos
- Interface responsiva e moderna
Frontend: TypeScript + Tailwind CSS + Parcel
Backend: Supabase (PostgreSQL + Auth)
IA: Google Gemini API (gemini-1.5-flash)
Testes: Jest + TypeScript
Deploy: Vercel
src/
├── model/ # Modelos de dados (Usuario, Quiz, Cronograma, etc.)
├── repository/ # Camada de acesso a dados (CRUD + Supabase)
├── view/ # Interface do usuário (Views + Componentes)
│ ├── components/ # Componentes de tela individuais
│ └── utils/ # Utilitários de interface
├── llm/ # Cliente Gemini AI + tipos
├── supabase/ # Configuração e autenticação
└── index.ts # Ponto de entrada da aplicação
- Repository Pattern: Abstração da camada de dados
- Single Page Application (SPA): Navegação fluida entre telas
- Component-Based: Componentes reutilizáveis e modulares
Cada seção possui sua identidade visual única:
- 🟢 Metas:
emerald- Foco e objetivos - 🟣 Quizzes:
violet- Conhecimento e avaliação - 🔵 Cronogramas:
sky- Planejamento e organização - 🟡 Textos:
amber- Conteúdo e aprendizado - 🟪 Gerador:
fuchsia- Criatividade e IA
usuarios # Autenticação e perfis
├── cronogramas # Planejamentos de estudo
│ └── atividades # Tarefas específicas
├── metas # Objetivos de aprendizado
├── textos # Conteúdo gerado por IA
│ └── conversas # Chat contínuo
└── quizzes # Avaliações interativas
├── questoes # Perguntas individuais
└── respostas # Histórico de respostas- Relacionamentos Complexos: Foreign keys + joins otimizados
- Validação de Dados: Constraints e triggers automáticos
- Auditoria Temporal: Timestamps em todas as operações
- Índices Performáticos: Consultas otimizadas para escala
# Testes unitários
npm run test
# Modo watch para desenvolvimento
npm run test:watch
# Relatório de cobertura
npm run test:coverage
# Pipeline CI/CD
npm run test:ci- Unitários: Lógica de negócio e repositories
- Integração: Fluxos completos com Supabase
- Configuração: Jest + TypeScript + ES Modules
- Node.js 18+
- Conta Supabase
- API Key do Google Gemini
# Clone o repositório
git clone https://github.com/watusalen/foco.git
cd foco
# Instale dependências
npm install
# Configure variáveis de ambiente
cp .env.example .env
# Adicione suas chaves no arquivo .env
# Execute em desenvolvimento
npm run dev
# Build para produção
npm run buildSUPABASE_URL=sua_url_supabase
SUPABASE_ANON_KEY=sua_chave_anonima
GEMINI_API_KEY=sua_chave_geminiO projeto está configurado para deploy automático na Vercel:
- Push na branch
main→ Deploy em produção - Pull requests → Preview deploys automáticos
✅ Sistema completo de Quizzes com IA
✅ Geração de Textos e Cronogramas
✅ Dashboard com estatísticas
✅ Autenticação e perfis de usuário
✅ Interface responsiva moderna
🔄 Metas: Sistema completo de objetivos e tracking
🔄 Gamificação: Pontuação, níveis e conquistas
🔄 Colaboração: Compartilhamento de cronogramas
🔄 Mobile App: Versão nativa iOS/Android
🔄 Relatórios: Analytics avançados de desempenho
- Fork o projeto
- Crie sua feature branch (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Commits: Conventional Commits (
feat:,fix:,docs:) - Code Style: TypeScript + ESLint
- Testes: Cobertura mínima de 80%
- Documentação: JSDoc em funções públicas
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- IFPI - Instituto Federal de Educação, Ciência e Tecnologia do Piauí
- Disciplinas: Engenharia de Software II, Banco de Dados II
Sistema FOCO - Transformando estudos com Inteligência Artificial