Aplicação full-stack de agenda semanal inspirada no Google Calendar, com frontend em SvelteKit, API em .NET e persistência em MongoDB.
O projeto foi construído para rodar 100% com Docker Compose e cobre os fluxos principais de uma agenda semanal:
- Criar compromisso
- Editar título, horário, cor e recorrência
- Excluir compromisso (simples ou recorrente com escopo)
- Drag and drop para mover compromisso com salvamento no backend
- Troca de semana por borda durante drag (edge-week) com animação
- Persistência enquanto os containers estão ativos
- Reset completo de dados após
docker compose down+up
frontend: SvelteKit (SPA estática comadapter-static) servida por Nginxapi: ASP.NET Core Web API (C#)mongo: MongoDB 7 (armazenamento temporário viatmpfs)
| Serviço | Porta | Função |
|---|---|---|
frontend |
5174 |
UI web e proxy /api |
api |
8080 |
Endpoints REST de compromissos |
mongo |
interna | Persistência dos compromissos |
- Docker Desktop (ou Docker Engine + Compose v2)
- Node.js 20+ (para Playwright local)
- npm
Na raiz do projeto:
docker compose up --buildA aplicação ficará disponível em:
http://localhost:5174
Para parar:
docker compose downO Mongo está configurado com tmpfs em /data/db (sem volume em disco do host).
Isso significa:
- enquanto o compose está ativo, os dados persistem normalmente
- após
docker compose down, os dados são descartados
Base path: /api/appointments
GET /api/appointments?from=<iso>&to=<iso>POST /api/appointmentsPUT /api/appointments/{id}DELETE /api/appointments/{id}?scope=single|following|all
title: stringstart: string (ISO UTC)end: string (ISO UTC)color: string(ex.:#3b82f6)recurrence: "none" | "daily" | "weekly" | "monthly"recurrenceUntil: string | null(ISO UTC)
Os testes estão no arquivo raiz browser.spec.ts, com execução serial (workers: 1) e navegador visível (headless: false).
npm ci
npx playwright installnpx playwright test browser.spec.tsObservações:
- o
playwright.config.tsusawebServercomdocker compose up -d --build - os testes estão desacelerados para visualização (
slowMo+ pausa entre cenários) - há teste explícito que roda
docker compose down/upe valida reset do banco
.
├── backend/
│ ├── Dockerfile
│ └── CalendarApi/
├── frontend/
│ ├── Dockerfile
│ ├── nginx.conf
│ └── src/
├── browser.spec.ts
├── playwright.config.ts
└── docker-compose.yml
Subir em segundo plano:
docker compose up -d --buildVer status dos serviços:
docker compose psDerrubar tudo:
docker compose down