Desenvolver uma aplicação full stack mínima que inclua autenticação, CRUD de tarefas e pelo menos uma regra de negócio validada no backend. O teste deve demonstrar domínio básico de backend, frontend e integração com serviços externos.
Crie um sistema simples de gerenciamento de tarefas (To-Do List) com autenticação de usuários via Firebase Authentication. Os dados das tarefas devem ser armazenados em um banco de dados relacional.
- Utilizar AdonisJS ou NestJS.
- Implementar endpoints REST para CRUD de tarefas.
- Persistir dados em banco relacional (SQLite recomendado).
- Validar autenticação com token do Firebase (via Firebase Admin SDK).
- Cada tarefa deve pertencer ao usuário autenticado (evitar acesso indevido).
- Incluir pelo menos uma regra de negócio (ver seção abaixo).
- Implementar teste automatizado que valide essa regra.
- Utilizar Vue.js ou Nuxt.js.
- Permitir login e registro via Firebase.
- Exibir lista de tarefas do usuário autenticado.
- Permitir criar, concluir e excluir tarefas.
- Interface simples e funcional (foco em clareza, não em design elaborado).
- Tarefas de alta prioridade (
high) só podem ser concluídas se não houver tarefas de média prioridade (medium) pendentes.
- O usuário só pode ter no máximo 10 tarefas ativas (não concluídas).
- Ao tentar criar a 11ª, retornar erro (HTTP 400).
Cada regra deve ser validada no backend e possuir teste automatizado.
- O usuário faz login ou registro no Firebase Authentication (frontend).
- O token recebido é enviado no header
Authorization: Bearer <token>ao backend. - O backend valida o token usando Firebase Admin SDK.
- Se o usuário ainda não existir no banco local, criar automaticamente um registro vinculado ao
firebase_uid.
- Recomendado: SQLite (mais simples).
- Opcional: PostgreSQL, MySQL ou MariaDB (com
docker-compose.yml).
- Utilize banco de dados em memória ou database separado para testes, garantindo que o comando
npm run testpossa ser executado várias vezes sem falhas. - Seeds de teste devem ser carregadas automaticamente antes dos testes.
- A cobertura mínima esperada é de testes para a regra de negócio implementada.
- Testes de integração são opcionais, mas contam como diferencial.
- Testes unitários e de integração completos.
- Tratamento de erros robusto no backend e feedback adequado no frontend.
- Uso de Git Flow com commits semânticos.
- Deploy funcional da aplicação.
- Validação de dados no frontend e backend.
- Dockerfile funcional para ambiente de produção.
-
Faça um fork deste repositório.
-
Crie uma nova branch com o seu nome:
git checkout -b nome-sobrenome -
Realize o desenvolvimento conforme o desafio.
-
Garanta que o projeto rode corretamente com:
npm install npm run dev
-
Garanta que os testes executem corretamente com:
npm run test
- O prazo sugerido é de 3 a 5 dias para conclusão.
-
Foque em qualidade e clareza do código.
-
Organização, boas práticas e padronização são mais importantes que quantidade de features.
-
O código deve demonstrar sua capacidade de estruturar e raciocinar sobre um projeto fullstack, independente do nível de profundidade da implementação.