Skip to content

ks-labs/technical-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published