Aplicação web completa desenvolvida para gerenciar o agendamento de cursos presenciais ministrados por instrutores parceiros da escola de gastronomia Maria Chocolate.
| Portal | Link |
|---|---|
| 🗓️ Portal do Instrutor | instrutores.html |
| 🔧 Painel Administrativo | admin.html |
ℹ️ O painel administrativo requer credenciais de acesso — configure suas próprias via Firebase Authentication para testar.
Este sistema foi desenvolvido do zero para resolver um problema real: a escola Maria Chocolate precisava de uma forma organizada para que seus instrutores parceiros agendassem datas para ministrar cursos — sem depender de planilhas, WhatsApp ou agendamento manual.
O resultado foi uma aplicação com dois portais distintos: um calendário interativo para os instrutores e um painel administrativo completo para a equipe da escola.
| Decisão | Justificativa |
|---|---|
| Vanilla JS sem frameworks | Projeto de escopo definido, sem necessidade de reatividade complexa. Menor bundle, mais rápido. |
| Firebase Firestore | Banco de dados em tempo real sem necessidade de backend próprio. Gratuito para o volume de uso. |
| Firebase Authentication | Solução segura para proteger o painel admin sem implementar backend de autenticação. |
| Cloudinary | Upload direto do browser com URL pública para as fotos, sem servidor intermediário. |
| EmailJS | Disparo de e-mails transacionais direto do frontend, sem backend. |
| GitHub Pages | Hospedagem estática gratuita, ideal para aplicações sem servidor. |
| SHA-256 → Firebase Auth | Migração da autenticação por hash local para autenticação real em nuvem, aumentando a segurança. |
Manhã: 09h às 12h30 | Terça a Sábado
Tarde: 13h30 às 17h | Segunda a Sexta
Dia inteiro: 09h às 17h | Segunda a Sexta
2 dias seguidos: 09h às 17h | 1º dia: Segunda a Quinta
Prazo mínimo: 20 dias de antecedência
Limite mensal: 5 cursos por instrutor
Aprovação: até 5 dias úteis
Fotos: 2 a 5 · JPG ou PNG · mín. 1080×1080 px
Frontend: HTML5 · CSS3 · JavaScript (ES Modules)
Banco de dados: Firebase Firestore
Autenticação: Firebase Authentication
Storage: Cloudinary
E-mail: EmailJS
Hospedagem: GitHub Pages
git clone https://github.com/heberthaugusto/portfolio-calendario-agendamento-cursos.git
// instrutores.html e admin.html
const firebaseConfig = {
apiKey: "SUA_FIREBASE_API_KEY",
authDomain: "SEU_PROJETO.firebaseapp.com",
projectId: "SEU_PROJETO_ID",
...
};
const CLOUDINARY_CLOUD = 'SEU_CLOUDINARY_CLOUD_NAME';
agendamentos, datas_bloqueadas, datas_liberadasUnsigned com pasta maria-chocolateinstrutores.html no navegador ou publique via GitHub Pagesrules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /agendamentos/{id} {
allow create: if true;
allow read: if true;
allow update, delete: if request.auth != null;
}
match /datas_bloqueadas/{id} {
allow read: if true;
allow write: if request.auth != null;
}
match /datas_liberadas/{id} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
calendario-cursos-maria-chocolate/
├── instrutores.html Portal de agendamento para instrutores
├── admin.html Painel administrativo
├── logo.png Logomarca
└── README.md Este arquivo




Desenvolvido por Heberth Augusto
Projeto desenvolvido utilizando a Claude IA como assistente de desenvolvimento.