{"id":18861477,"url":"https://github.com/bulletsentence/credifit-fullstack","last_synced_at":"2026-04-10T07:49:06.390Z","repository":{"id":160009595,"uuid":"634493718","full_name":"BulletSentence/Credifit-FullStack","owner":"BulletSentence","description":"Projeto com o objetivo de avaliar as habilidades em programação.","archived":false,"fork":false,"pushed_at":"2024-05-03T13:49:39.000Z","size":895,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-30T20:42:20.609Z","etag":null,"topics":["docker","nestjs","nodejs","postgresql","reactjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BulletSentence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-04-30T10:01:48.000Z","updated_at":"2024-05-08T20:49:32.000Z","dependencies_parsed_at":"2024-11-08T04:31:16.403Z","dependency_job_id":"519a37ef-c62d-41f2-ae46-30c4dddc38ae","html_url":"https://github.com/BulletSentence/Credifit-FullStack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BulletSentence%2FCredifit-FullStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BulletSentence%2FCredifit-FullStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BulletSentence%2FCredifit-FullStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BulletSentence%2FCredifit-FullStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BulletSentence","download_url":"https://codeload.github.com/BulletSentence/Credifit-FullStack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239801583,"owners_count":19699370,"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":["docker","nestjs","nodejs","postgresql","reactjs"],"created_at":"2024-11-08T04:29:42.576Z","updated_at":"2026-02-09T15:30:17.227Z","avatar_url":"https://github.com/BulletSentence.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# * Fullstack Developer Node/React\n\u003e This is a challenge by Coodesh\n\n\nSurgiu uma nova demanda urgente e precisamos de uma área exclusiva para fazer o\nupload de um arquivo das transações feitas na venda de produtos por nossos\nclientes.\nNossa plataforma trabalha no modelo criador-afiliado, sendo assim um criador\npode vender seus produtos e ter 1 ou mais afiliados também vendendo esses\nprodutos, desde que seja paga uma comissão por venda.\nSua tarefa é construir uma interface web que possibilite o upload de um arquivo\nde transações de produtos vendidos, normalizar os dados e armazená-los em um\nbanco de dados relacional.\nVocê deve utilizar o arquivo sales.txt para fazer o teste da\naplicação. O formato esá descrito na seção \"Formato do arquivo de entrada\".\n\n\n* Video: [Video de Apresentação do Challenge](https://www.loom.com/share/24cdfeced2fd480cb4e1602ed098c8d0)\n\n### Stack:\n- NodeJS\n- ReactJS\n- NestJS\n- Typescript\n\n### Banco de Dados\n- PostgreSQL\n\n### Documentação de Testes Detalhada (Wiki)\nhttps://github.com/BulletSentence/Credifit-FullStack/wiki\n\n\n### Requisitos Funcionais\n\nTer uma tela (via formulário) para fazer o upload do arquivo\nFazer o parsing do arquivo recebido, normalizar os dados e armazená-los em um\nbanco de dados relacional, seguindo as definições de interpretação do arquivo\nExibir a lista das transações de produtos importadas por produtor/afiliado,\ncom um totalizador do valor das transações realizadas\nFazer tratamento de erros no backend, e reportar mensagens de erro amigáveis\nno frontend.\n\n### Requisitos Não Funcionais\n\nA aplicação deve ser simples de configurar e rodar, compatível com ambiente\nUnix. Você deve utilizar apenas bibliotecas gratuitas ou livres.\nUtilize docker para os diferentes serviços que compõe a aplicação para\nque funcione facilmente fora do seu ambiente pessoal.\nUse qualquer banco de dados relacional.\nUse commits pequenos no Git e escreva uma boa descrição para cada um.\nEscreva unit tests tanto no backend quanto do frontend.\nFaça o código mais legível e limpo possível.\nEscreva o código (nomes e comentários) em inglês. A documentação pode ser em\nportuguês se preferir.\n\n### Formato do arquivo de entrada\n\n| Campo    | Início | Fim | Tamanho | Descrição                      |\n| -------- | ------ | --- | ------- | ------------------------------ |\n| Tipo     | 1      | 1   | 1       | Tipo da transação              |\n| Data     | 2      | 26  | 25      | Data - ISO Date + GMT          |\n| Produto  | 27     | 56  | 30      | Descrição do produto           |\n| Valor    | 57     | 66  | 10      | Valor da transação em centavos |\n| Vendedor | 67     | 86  | 20      | Nome do vendedor               |\n\n### Tipos de transação\n\nEsses são os valores possíveis para o campo Tipo:\n\n| Tipo | Descrição         | Natureza | Sinal |\n| ---- | ----------------- | -------- | ----- |\n| 1    | Venda produtor    | Entrada  | +     |\n| 2    | Venda afiliado    | Entrada  | +     |\n| 3    | Comissão paga     | Saída    | -     |\n| 4    | Comissão recebida | Entrada  | +     |\n\n\n## * Iniciando Projeto\n\n\u003cdetails\u003e\n  \u003csummary\u003e 0 - Iniciando o Node \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n     cd backend\n     npm install\n    \n     cd frontend\n     npm install\n    \n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 1 - Iniciando o Banco de Dados pelo Docker \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n     cd backend\n     docker-compose up -d\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 2 - Criando as Migrações \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n     cd backend\n     npx prisma migrate dev --name init\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 3 - Criando as Seeds \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n    cd backend\n    npm run prisma:seed\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 4 - Iniciando Backend \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n    cd backend\n    npm run start:dev\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 5 - Iniciando Frontend \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n    cd frontend\n    npm run start:dev\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e 6 - Testes \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n \n    cd frontend\n    npm run test\n    \n    cd backend\n    npm run test\n\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n## * Dependências e Bibliotecas\n\n\u003cdetails\u003e\n  \u003csummary\u003e  Prisma \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Object-Relational Mapping (ORM)\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e Class-validator \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Responsável por validar os dados do modelo ORM\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e react-router-dom  \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Responsável pelo roteamento e escalabilidade\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e date-fns \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Usado na formatação de datas\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e Bulma \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Estilização da Frontend\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e react-data-table \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n\u003e Base para a construção da tabela de dados na Frontend\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n## Preview\n\n\u003cdetails\u003e\n  \u003csummary\u003e Screenshots \u003c/summary\u003e\n  \u003col\u003e\n  \u003cbr\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/37451620/235374649-47884123-2a32-48a3-8bd8-a0107fa12ad3.PNG\" width=\"100%\" /\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/37451620/235374653-8355e921-5961-4665-89b3-0aedbeaa3d9e.PNG\" width=\"100%\" /\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletsentence%2Fcredifit-fullstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbulletsentence%2Fcredifit-fullstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletsentence%2Fcredifit-fullstack/lists"}