Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fullstack Test – KS-Labs

Objetivo

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.


Descrição do Projeto

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.


Requisitos mínimos (esperado de um júnior)

Backend

  • 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.

Frontend

  • 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).

Regras de negócio (escolher uma)

Opção A — Regra de prioridade

  • Tarefas de alta prioridade (high) só podem ser concluídas se não houver tarefas de média prioridade (medium) pendentes.

Opção B — Regra de limite

  • 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.


Fluxo de autenticação

  1. O usuário faz login ou registro no Firebase Authentication (frontend).
  2. O token recebido é enviado no header Authorization: Bearer <token> ao backend.
  3. O backend valida o token usando Firebase Admin SDK.
  4. Se o usuário ainda não existir no banco local, criar automaticamente um registro vinculado ao firebase_uid.

Banco de Dados

  • Recomendado: SQLite (mais simples).
  • Opcional: PostgreSQL, MySQL ou MariaDB (com docker-compose.yml).

Testes

  • Utilize banco de dados em memória ou database separado para testes, garantindo que o comando npm run test possa 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.

Diferenciais

  • 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.

Entrega

  1. Faça um fork deste repositório.

  2. Crie uma nova branch com o seu nome: git checkout -b nome-sobrenome

  3. Realize o desenvolvimento conforme o desafio.

  4. Garanta que o projeto rode corretamente com:

    npm install
    npm run dev
  5. Garanta que os testes executem corretamente com:

    npm run test

Prazo

  • O prazo sugerido é de 3 a 5 dias para conclusão.

Observações

  • 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.

About

Tech intereview test made by developers for developers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors