{"id":15137576,"url":"https://github.com/joao1barbosa/csv-operator-assignment","last_synced_at":"2026-01-18T11:42:52.060Z","repository":{"id":255566218,"uuid":"852390127","full_name":"joao1barbosa/CSV-Operator-Assignment","owner":"joao1barbosa","description":"Full-stack application for assigning clients to operators with CSV import and export.","archived":false,"fork":false,"pushed_at":"2024-09-13T19:21:52.000Z","size":6336,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T06:44:14.111Z","etag":null,"topics":["csv","mysql","nestjs","nextjs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joao1barbosa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-04T18:12:21.000Z","updated_at":"2024-09-13T19:19:20.000Z","dependencies_parsed_at":"2024-09-21T11:02:51.953Z","dependency_job_id":"b270b384-f6cd-4923-a3fe-7837973e8be5","html_url":"https://github.com/joao1barbosa/CSV-Operator-Assignment","commit_stats":null,"previous_names":["joao1barbosa/csv-operator-assignment"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joao1barbosa%2FCSV-Operator-Assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joao1barbosa%2FCSV-Operator-Assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joao1barbosa%2FCSV-Operator-Assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joao1barbosa%2FCSV-Operator-Assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joao1barbosa","download_url":"https://codeload.github.com/joao1barbosa/CSV-Operator-Assignment/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445652,"owners_count":20939953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","mysql","nestjs","nextjs","typescript"],"created_at":"2024-09-26T07:01:12.085Z","updated_at":"2026-01-18T11:42:52.016Z","avatar_url":"https://github.com/joao1barbosa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSV-Operator-Assignment\n\nEste projeto consiste na solução de um desafio técnico para desenvolvedor fullstack. Dentre as funcionalides estão:\n\n- Visualização: Permite visualizar os operadores cadastrados e os clientes designados a eles.\n- Cadastro de Clientes: Oferece a funcionalidade de enviar um arquivo CSV para o cadastro imediato de clientes.\n- Exportação de Clientes: Possibilita baixar um arquivo CSV com a lista de todos os clientes cadastrados.\n\nMais detalhes no arquivo [SinkaTest](./docs/SinkaTest.md).\n\n## 📷 Demonstrações\n\n### Dashboard\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/dashboard.gif\" alt=\"Dashboard\"\u003e\n\u003c/div\u003e\n\n### Upload de arquivo\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/upload.gif\" alt=\"Upload\"\u003e\n\u003c/div\u003e\n\n### Responsividade\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/responsivite.gif\" alt=\"Responsividade\"\u003e\n\u003c/div\u003e\n\n## 🎲 Estrutura do Banco de Dados\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/db.png\"  alt=\"Estrutura do Banco de Dados\"\u003e\n\u003c/p\u003e\n\n## 📱 Technologias\n\n- **TypeScript**\n- **React**\n- **Next.js**\n- **React Query**\n- **React Hook Form**\n- **Zod**\n- **Tailwind**\n- **Componentes do ShadCN**\n- **NestJS**\n- **Multer**\n- **CSV-parser**\n- **Fast-CSV**\n- **Prima**\n- **Jest**\n- **MySQL**\n\n## 🌐 Variáveis Ambiente\n\nComo a aplicação é construída usando containers docker e não é uma aplicação que será mantida em produção, optei por deixar o arquivo **.env.example** com as variáveis já configuradas.\nDesta forma é necessário apenas renomear o aquivo para **.env**.\n\n## 🏁 Dependências\n\n- Docker\n- Docker Compose V2\n\n## 🏗 Setup e Run\n\nPara construir e executar a aplicação, basta ter as dependências instaladas e executar o comando abaixo:\n\n```sh\ndocker compose up --build -d\n```\n\n## 📋 Endpoints da API\n\n### App\n\n- **GET** `/` - Retorna \"API on!\".\n\n### Operators\n\n- **POST** `/operators` - Cria um operador.\n  - **Body:** `CreateOperatorDto`\n- **GET** `/operators` - Retorna todos os operadores.\n\n- **GET** `/operators/:id` - Retorna um operador pelo ID.\n\n  - **Params:** `id` (number)\n\n- **PATCH** `/operators/:id` - Atualiza um operador.\n\n  - **Params:** `id` (number)\n  - **Body:** `UpdateOperatorDto`\n\n- **DELETE** `/operators/:id` - Remove um operador.\n  - **Params:** `id` (number)\n\n### Clients\n\n- **POST** `/clients` - Cria um cliente.\n\n  - **Body:** `CreateClientDto`\n\n- **GET** `/clients` - Retorna todos os clientes.\n\n- **GET** `/clients/download` - Exporta clientes em CSV.\n\n- **GET** `/clients/redistribute` - Redistribui clientes entre operadores.\n\n- **POST** `/clients/upload` - Faz upload de um CSV de clientes.\n\n  - **Form Data:** `file` (CSV)\n\n- **GET** `/clients/:id` - Retorna um cliente pelo ID.\n\n  - **Params:** `id` (number)\n\n- **PATCH** `/clients/:id` - Atualiza um cliente.\n\n  - **Params:** `id` (number)\n  - **Body:** `UpdateClientDto`\n\n- **DELETE** `/clients/:id` - Remove um cliente.\n  - **Params:** `id` (number)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoao1barbosa%2Fcsv-operator-assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoao1barbosa%2Fcsv-operator-assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoao1barbosa%2Fcsv-operator-assignment/lists"}