Um sistema completo de gerenciamento de tarefas desenvolvido para o processo seletivo da Moura. O projeto consiste em uma API RESTful em Node.js/Express e um frontend moderno e responsivo.
- ✅ Interface moderna e responsiva
- ✅ Adicionar, editar e deletar tarefas
- ✅ Atualizar status das tarefas (Pendente → Em Andamento → Concluída)
- ✅ Filtros por status
- ✅ Estatísticas em tempo real
- ✅ Feedback visual com notificações
- ✅ Design responsivo para mobile e desktop
- ✅ Animações suaves e transições
- ✅ CRUD completo de tarefas
- ✅ Validação de dados
- ✅ Armazenamento em memória
- ✅ Estrutura organizada por camadas
- ✅ Documentação das rotas
- HTML5 - Estrutura semântica
- CSS3 - Estilização moderna com Flexbox e Grid
- JavaScript (ES6+) - Funcionalidades interativas
- Fetch API - Comunicação com a API
- Node.js - Runtime JavaScript
- Express.js - Framework web
- UUID - Geração de IDs únicos
case-dev-junior/ ├── api/ # Pasta raiz do Backend (API RESTful em Node.js). │ ├── node_modules/ # Contém as bibliotecas e dependências do Node.js. Ignorada pelo Git. │ ├── src/ # Código-fonte principal do backend, seguindo a arquitetura em camadas. │ │ ├── controllers/ # Camada de controle: Lida com as requisições HTTP e as respostas. │ │ │ └── taskController.js # Lógica que processa requisições e chama os services. │ │ ├── models/ # Camada de modelo: Lógica de manipulação de dados (nosso banco de dados em memória). │ │ │ └── taskModel.js # Contém o array de tarefas e as funções de CRUD. │ │ ├── services/ # Camada de serviço: Lógica de negócio e validações. │ │ │ └── taskService.js # Regras como validação de status e criação de IDs. │ │ └── routes/ # Camada de rotas: Define os endpoints da API. │ │ └── taskRoutes.js # Mapeia as URLs para as funções do controller. │ ├── app.js # Ponto de entrada do servidor Express. Configura middlewares e rotas. │ ├── jest.config.js # Arquivo de configuração para o framework de testes unitários Jest. │ ├── package-lock.json # Garante que as dependências sejam instaladas com versões exatas. │ └── package.json # Metadados do projeto e lista de dependências. ├── app/ # Pasta raiz do Frontend. Contém os arquivos da interface do usuário. │ ├── Assunto.png # Exemplo de arquivo de imagem usado na aplicação frontend. │ ├── index.html # Estrutura HTML da página principal. │ ├── script.js # Lógica JavaScript do frontend, responsável pela comunicação com a API. │ └── style.css # Estilos CSS que definem a aparência visual da interface. ├── .gitignore # Arquivo que instrui o Git a ignorar arquivos e pastas específicos (ex: node_modules). └── README.md # Documentação principal do projeto: instruções de instalação, execução e detalhes. - Node.js (versão 14 ou superior)
- NPM (Node Package Manager)
-
Clone o repositório
git clone https://github.com/seu-usuario/case-dev-junior.git cd case-dev-junior -
Instale as dependências da API
cd api npm install -
Inicie o servidor da API
npm start
A API estará disponível em:
http://localhost:3000 -
Abra o frontend
- Abra o arquivo
app/index.htmlno seu navegador - Ou use um servidor local simples:
cd app python -m http.server 8000O frontend estará disponível em:
http://localhost:8000 - Abra o arquivo
| Método | Endpoint | Descrição |
|---|---|---|
GET | /tasks | Lista todas as tarefas |
POST | /tasks | Cria uma nova tarefa |
PATCH | /tasks/:id/status | Atualiza o status de uma tarefa |
DELETE | /tasks/:id | Remove uma tarefa |
curl -X POST http://localhost:3000/tasks \ -H "Content-Type: application/json" \ -d '{ "title": "Minha primeira tarefa", "description": "Descrição da tarefa" }'curl http://localhost:3000/taskscurl -X PATCH http://localhost:3000/tasks/123/status \ -H "Content-Type: application/json" \ -d '{"status": "em andamento"}'curl -X DELETE http://localhost:3000/tasks/123- Header com estatísticas: Mostra total de tarefas, pendentes e concluídas
- Formulário de adição: Campos para título e descrição
- Filtros: Botões para filtrar por status
- Lista de tarefas: Exibe todas as tarefas com ações
- Feedback visual: Notificações de sucesso/erro
- ⏳ Pendente: Tarefa criada, aguardando início
- 🔄 Em Andamento: Tarefa sendo executada
- ✅ Concluída: Tarefa finalizada
- Design adaptável para desktop, tablet e mobile
- Layout flexível que se ajusta ao tamanho da tela
- Interface otimizada para touch em dispositivos móveis
# Instalar dependências npm install # Iniciar servidor de desenvolvimento npm start # Executar testes (se implementados) npm test{ id: "uuid-v4", title: "Título da tarefa", description: "Descrição da tarefa", status: "pendente" | "em andamento" | "concluida" }O projeto está preparado para implementação de testes unitários. Para adicionar testes:
-
Instale as dependências de teste:
npm install --save-dev jest supertest
-
Configure o Jest no
package.json:{ "scripts": { "test": "jest" } } -
Crie arquivos de teste na pasta
tests/
- Navegadores: Chrome, Firefox, Safari, Edge (versões modernas)
- Dispositivos: Desktop, tablet, mobile
- Sistemas: Windows, macOS, Linux
- Persistência de dados com banco de dados
- Autenticação de usuários
- Categorização de tarefas
- Datas de vencimento
- Notificações push
- Modo offline
- Exportação de dados
- Temas personalizáveis
Este projeto foi desenvolvido como parte do processo seletivo da Moura, uma empresa líder no setor de baterias automotivas e industriais no Brasil.
[Seu Nome] - Desenvolvedor Frontend
- Email: [seu-email@exemplo.com]
- LinkedIn: [seu-linkedin]
- GitHub: [seu-github]
Este projeto foi desenvolvido exclusivamente para o processo seletivo da Moura.
Moura - Energia que move o futuro! 🔋