Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✅ Tarefas+

Aplicação para organizar tarefas e estudos, com login pelo Google. Cada tarefa pode ser privada ou pública — as públicas ganham um link compartilhável e recebem comentários de outros usuários autenticados.

📸 Adicione aqui um print da home e do painel — de preferência um GIF curto mostrando o login com Google, a criação de uma tarefa pública e o compartilhamento do link.


Funcionalidades

  • Login com Google via NextAuth, com sessão disponível em toda a aplicação
  • Painel protegido: /dashboard valida a sessão no servidor e redireciona para a home quem não estiver autenticado
  • Criação de tarefas com opção de marcá-las como públicas
  • Atualização em tempo real: a lista usa o onSnapshot do Firestore, então qualquer alteração aparece na tela sem recarregar
  • Compartilhamento: as tarefas públicas geram um link copiado direto para a área de transferência
  • Comentários nas tarefas públicas, com exclusão restrita a quem escreveu
  • Home com contadores de tarefas e comentários, gerados estaticamente e revalidados a cada 60 segundos (ISR)
  • Exclusão de tarefas e comentários

Stack

Área Tecnologia
Framework Next.js 16 (Pages Router) · React 19 · TypeScript
Compilador React Compiler (reactCompiler: true)
Autenticação NextAuth com provider Google
Banco Cloud Firestore
Estilos CSS Modules
Ícones react-icons

Decisões técnicas

  • Três estratégias de renderização, cada uma onde faz sentido. A home usa getStaticProps com revalidate porque os contadores toleram estar 60 segundos desatualizados; o painel usa getServerSideProps porque precisa da sessão a cada requisição; a lista de tarefas é client-side com onSnapshot, porque precisa reagir na hora.

  • Proteção de rota no servidor. A verificação de sessão acontece antes da página existir, no getServerSideProps — não é um if de interface que o usuário poderia contornar.

  • Consulta escopada por usuário. As tarefas são buscadas com where("user", "==", email) e ordenadas por data de criação, então o cliente nunca recebe dados de outra pessoa.

  • Autorização dos comentários no cliente e no dado. O botão de excluir só aparece para o autor, e o campo user gravado junto ao comentário é o que permite validar isso do lado do banco.


Rodando localmente

Pré-requisitos

Instalação

git clone https://github.com/LuizMath/Tarefas.git
cd Tarefas
npm install

Variáveis de ambiente

Crie um .env.local na raiz:

GOOGLE_CLIENT_ID=seu_client_id
GOOGLE_CLIENT_SECRET=seu_client_secret
JWT_SECRET=uma_string_aleatoria_longa
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_URL=http://localhost:3000

No Google Cloud Console, cadastre http://localhost:3000/api/auth/callback/google como URI de redirecionamento autorizada.

Firestore

Crie as coleções tarefas e comments. Elas são preenchidas automaticamente no primeiro uso.

Subir o projeto

npm run dev

Disponível em http://localhost:3000.


Estrutura

src/
├── pages/
│   ├── index.tsx           # home com contadores (ISR)
│   ├── dashboard/          # painel protegido
│   ├── task/[id].tsx       # tarefa pública e comentários
│   └── api/auth/           # rota do NextAuth
├── components/
│   ├── Header/             # navegação e botão de login/logout
│   └── TextArea/
├── services/
│   └── firebaseConnection.ts
└── styles/

Próximos passos

  • Mover a configuração do Firebase para variáveis NEXT_PUBLIC_* em vez de deixá-la fixa no código
  • Cancelar a inscrição do onSnapshot no cleanup do useEffect, evitando listeners acumulados
  • Exibir erro na interface quando a criação de uma tarefa falhar
  • Feedback visual de "link copiado" após o compartilhamento

Licença

MIT

About

Aplicação de tarefas em Next.js com autenticação e persistência no Firebase.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages