Repositório público é ok — não há segredos no código.
git init
git add .
git commit -m "chore: primeiro commit"
git branch -M main
git remote add origin https://github.com/gabrielcf55/study-plan-tracker.git
git push -u origin mainvercel.com → Add New… → Project → importe o repositório. Framework Preset: Other, sem build command. Deploy.
- No projeto na Vercel: Storage → Create Database → Upstash for Redis (Marketplace). Plano free.
- Conecte ao projeto — a Vercel injeta
UPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKEN(ouKV_REST_API_URL/KV_REST_API_TOKEN; o código aceita os dois nomes). - Redeploy. No app, o badge deve mudar para Sincronizado.
Sem este passo o app funciona normalmente em modo local (Local), guardando o progresso só no navegador.
⚠️ No tier grátis, o Vercel Authentication NÃO deixa a produção privada. A Standard Protection protege apenas os deployments de preview. A produção fica pública — tanto no domínio*.vercel.appde produção quanto em qualquer domínio/subdomínio custom (é a opção "Protect all except production Custom Domains"). Não importa o domínio: a produção no plano grátis é aberta.
Para deixar a produção privada:
- Grátis (recomendado): use o login por senha embutido deste template (Basic Auth via Edge Middleware). Funciona em qualquer domínio —
*.vercel.appou custom — porque roda no Edge, antes de servir a rota. Veja a seção 5 abaixo. - Pago: Pro + Advanced Deployment Protection (habilita "All Deployments" / Password Protection) ou Enterprise — aí a proteção nativa da Vercel passa a cobrir a produção também.
O demo público não precisa de nada disso — é aberto por definição.
O template inclui um Edge Middleware (middleware.js) que pede usuário e senha antes de servir qualquer rota (app + /api). Por rodar no Edge, protege qualquer domínio — inclusive um domínio/subdomínio custom (ex.: study.seudominio.com), onde o Vercel Authentication gratuito não atua. É a forma de manter sua instância pessoal privada de graça, evitando que alguém com a URL veja ou sobrescreva seu progresso.
Como ativar (Vercel → Settings → Environment Variables):
| Variável | Valor |
|---|---|
BASIC_AUTH_ENABLED |
true |
BASIC_AUTH_USER |
o usuário de login |
BASIC_AUTH_PASSWORD |
a senha de login |
Depois, Redeploy. O navegador pedirá login ao abrir o app.
- Desligado por padrão: sem
BASIC_AUTH_ENABLED=true, o app fica público — ideal para o demo e para quem não quer login. - Seguro sobre HTTPS: a Vercel força HTTPS, então as credenciais Basic Auth trafegam protegidas.
- Sem segredos no repositório: as credenciais vivem só em variáveis de ambiente (veja
.env.example). - É um login simples (um par usuário/senha compartilhado), pensado para uso pessoal — não é um sistema multiusuário.
O app usa ES Modules, então precisa de um servidor (não abra via file://):
npm run serve # estático em http://localhost:3000 (modo local, sem sync)
npm run dev # com a função /api (requer Vercel CLI + env vars)
npm test # testes da lógica de progresso + integridade do plano e exemplos