Plataforma de estudos para Fisioterapia com foco em organização, revisão espaçada, IA assistiva e experiência PWA.
O Cinesia é um monorepo com frontend React/Vite e um backend Java legado mantido para compatibilidade histórica. A experiência principal da aplicação está no frontend/, com Firebase como camada de persistência e autenticação.
O sistema foi desenhado para apoiar estudos de Fisioterapia com:
- resumos editor rich text
- flashcards com repetição espaçada SM-2
- simulados gerados com IA
- KakaBot para apoio conversacional
- atlas 3D, lousa digital e pomodoro
- recursos sociais com grupos, chat e desafios
- PWA instalável e sincronização em tempo real
| Camada | Tecnologia |
|---|---|
| Interface | React 18 + Vite |
| Estilo | Tailwind CSS 4 + Framer Motion |
| Estado e dados | Firebase Auth, Firestore e Storage |
| IA | Google Gemini |
| Navegação | React Router DOM |
| Testes | Vitest + Testing Library |
| Build | Vite PWA |
.
├── frontend/ # Aplicação principal
├── backend/ # Backend Java legado
├── docs/ # Arquitetura, deploy e contribuição
├── firebase.json # Configuração do hosting
├── firestore.rules # Regras do Firestore
├── firestore.indexes.json # Índices do Firestore
└── scripts/ # Utilitários e scripts auxiliares
- autenticação com Google e email/senha
- matérias, resumos e flashcards por usuário
- revisão espaçada com SM-2
- simulados e apoio de IA
- comunidade com amigos, grupos, chat e desafios
- quadro branco e atlas 3D
- notificações, conquistas e métricas de estudo
- suporte a PWA e uso em dispositivos móveis
- Node.js 18+
- npm
- conta Firebase com projeto configurado
npm installnpm run dev:frontendOu, diretamente no frontend:
cd frontend
npm run devnpm run build:frontendnpm run lintcd frontend
npm run testAs credenciais do Firebase devem ser fornecidas nas variáveis VITE_* usadas em frontend/src/config/firebase-config.js.
Campos esperados:
VITE_FIREBASE_API_KEYVITE_FIREBASE_AUTH_DOMAINVITE_FIREBASE_PROJECT_IDVITE_FIREBASE_STORAGE_BUCKETVITE_FIREBASE_MESSAGING_SENDER_IDVITE_FIREBASE_APP_IDVITE_FIREBASE_MEASUREMENT_IDVITE_GEMINI_API_KEY
O fluxo oficial de deploy está documentado em docs/DEPLOY.md.
Resumo rápido:
- Firebase Hosting é o caminho recomendado
- GitHub Actions automatiza o deploy na branch principal
- Vercel também é suportado com
frontend/como root directory
- O backend Java existente é legado e foi mantido para compatibilidade com partes antigas do ecossistema.
- O fluxo principal de produto está concentrado no frontend e nos serviços Firebase.
- Variáveis
VITE_*entram no bundle no build e não devem conter segredos sensíveis fora do escopo esperado para frontend.
Antes de abrir PR ou enviar alterações:
- rode
npm run lint - rode
npm run build:frontend - valide o comportamento das rotas principais no navegador
Consulte docs/CONTRIBUTING.md para o processo completo.
- Vá em "Matérias"
- Clique em "Nova Matéria"
- Preencha nome, cor e descrição
- Dados salvos automaticamente no Firestore
- Vá em "Flashcards"
- Clique em "Novo Flashcard"
- Adicione pergunta e resposta
- (Opcional) Faça upload de imagem
- Associe a uma matéria
- Em Flashcards, clique em "Iniciar Estudo"
- Clique no card para revelar resposta
- Navegue com setas < >
- Vá em "Resumos"
- Use o editor rico para formatar conteúdo
- Suporta negrito, listas, cores, imagens inline
✅ Regras de Firestore:
- Usuários só acessam seus próprios dados
- Validação de
uidem todas operações
✅ Regras de Storage:
- Upload apenas na pasta do próprio usuário
- Leitura permitida para usuários autenticados
✅ Autenticação:
- Tokens JWT gerenciados pelo Firebase
- Auto-refresh de tokens
- Logout seguro
| Aspecto | Firebase | Backend Tradicional |
|---|---|---|
| Infraestrutura | ✅ Gerenciada pelo Google | ❌ Você configura tudo |
| Escalabilidade | ✅ Automática | ❌ Manual |
| Custo Inicial | ✅ Grátis até 1GB | ❌ Servidor sempre ligado |
| Manutenção | ✅ Zero | ❌ Alta |
| Deploy | ✅ Apenas frontend | ❌ Backend + Frontend |
| Tempo Real | ✅ Nativo | ❌ Requer WebSockets |
# Frontend
npm run dev # Desenvolvimento (Vite)
npm run build # Build de produção
npm run preview # Preview do build
npm run lint # Linter
# Firebase (após instalar firebase-tools)
firebase deploy # Deploy completo
firebase serve # Teste local# Instalar Firebase CLI
npm install -g firebase-tools
# Login
firebase login
# Inicializar
firebase init hosting
# Build do frontend
cd frontend
npm run build
# Deploy
firebase deploy --only hostingSeu app estará em: https://cinesia-72d45.web.app
- docs/ARCHITECTURE.md - Arquitetura e organização técnica
- docs/DEPLOY.md - Deploy em Firebase Hosting e Vercel
- docs/CONTRIBUTING.md - Fluxo de contribuição
- Firebase Docs
- React Docs
- Vite Docs
Solução: Verifique as regras de segurança do Firestore/Storage
Solução: Crie o Storage no Firebase Console
Solução: Clique no link do erro, Firebase cria índice automaticamente
Solução:
- Verifique regras de Storage
- Limite de 5MB por imagem
- Apenas imagens permitidas (jpg, png, gif)
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/NovaFuncionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/NovaFuncionalidade) - Abra um Pull Request
Este projeto está sob a licença MIT.
Desenvolvido com ❤️ para estudantes de Fisioterapia
Stack: React + Firebase (Serverless)
Última atualização: Abril de 2026