{"id":16470575,"url":"https://github.com/mateusngf/invoices","last_synced_at":"2026-04-07T08:01:58.066Z","repository":{"id":214116529,"uuid":"734404939","full_name":"MateusNGF/invoices","owner":"MateusNGF","description":"The Invoices project is an application that manages energy bills (invoices), exclusively from CEMIG, with a visualization of the processed invoices and a section for analyzing them, observing the quantity and costs of energy consumption.","archived":false,"fork":false,"pushed_at":"2024-01-07T21:47:21.000Z","size":1417,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-28T07:11:53.796Z","etag":null,"topics":["docker","nest","nodejs","postgresql","react"],"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/MateusNGF.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-12-21T15:42:33.000Z","updated_at":"2024-09-10T02:44:33.000Z","dependencies_parsed_at":"2023-12-27T21:47:26.414Z","dependency_job_id":"cfcbde03-715b-41d9-a545-a7ad71d9552d","html_url":"https://github.com/MateusNGF/invoices","commit_stats":null,"previous_names":["mateusngf/invoices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MateusNGF/invoices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MateusNGF%2Finvoices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MateusNGF%2Finvoices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MateusNGF%2Finvoices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MateusNGF%2Finvoices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MateusNGF","download_url":"https://codeload.github.com/MateusNGF/invoices/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MateusNGF%2Finvoices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","nest","nodejs","postgresql","react"],"created_at":"2024-10-11T12:11:12.062Z","updated_at":"2026-04-07T08:01:58.036Z","avatar_url":"https://github.com/MateusNGF.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FATURAS - Gerenciando suas economias energéticas \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./documents/img/homepage.png\" width=\"100%\" alt=\"preview app\" /\u003e\n\u003c/p\u003e\n\n  O projeto Faturas, é uma aplicação que gerencia contas(faturas) de energia, exclusivamente da CEMIG, dispondo de visualização das faturas processadas e uma secção de análise das mesmas, observando a quantidade e os custos do consumo de energia. Este faz parte de um teste prático realizado pela empresa Lumi para vaga de FullStack. \nTendo como objetivo cumprir alguns pontos de pré requisitos do sistema e tecnicos do desenvolvimento. O Layout inicial do projeto pode ser encontrado no Figma. \u003ca href=\"https://www.figma.com/file/0lHddW3Nki4u2khZiriXXq/Untitled?type=whiteboard\u0026node-id=0%3A1\u0026t=GwbVcBDEcFg02gku-1\" target=\"_blank\" \u003eClique para acessar\u003c/a\u003e\n\n\u003cbr\u003e\n\n\u003e Veja a versão dois : https://github.com/MateusNGF/Invoices/tree/version-two\n\n\n\u003cp\u003e\n  \u003ch2 align=\"center\"\u003e CONSIDERAÇÕES \u003c/h2\u003e\n\u003c/p\u003e\nNesta secção será abordado as questões tecnicas do desenvolvimento. Portanto, é de extrema importância sua leitura e entendimento.\n  \nNo que tange ao versionamento foi definido a implementação de monorepository, isso significa que a API e o APP são versionando no mesmo repositório. O padrão de commits utilizado foi o \u003ca href=\"https://medium.com/linkapi-solutions/conventional-commits-pattern-3778d1a1e657\" target=\"_blank\" \u003e conventional commits pattern \u003c/a\u003e.  \n\nO sistema foi dividida em dois serviços, o serviço Frontend (APP) e o serviço Backend (API) e todas as aplicações utilizam `NodeJs`.\u003cbr\u003e \nO APP foi construido utilizando o framework `React`.\u003cbr\u003e\nA API foi construida utilizando o framework `NestJS`, no padrão `Controller-Service-Repository` utilizando um bando de dados SQL via framework `Prisma`.\n\nAdemais, o software tambem tem suporte para utilização no `Docker`.\n\n* O sistema `não foi desenvolvido para variação da unidade de medida` sendo fixa em kWh `e tambem não suportando variação de Moeda` sendo fixa em Reais.\u003cbr\u003e\n* O sistema `não possui função de orednação por parte do usuário`.\u003cbr\u003e\n* Ao que tange a parte de Upload e Download das faturas, em algum momento `esta havendo pequenas perdas de informações deixando o PDF sem as imagens da empresa` e o codigo de barra.\u003cbr\u003e \n* Outro ponto importante, são os testes que foram feitos apenas no APP em `Components` e `Services` , podendo ser encontrados em **/test e executados dentro da pasta ./app rodando o comando `npm run test`.\u003cbr\u003e\n  * Ao inicializar o comando de test pressione a tecla a e ele executará todos os testes.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./documents/img/test-img.png\" width=\"70%\" alt=\"preview test\" /\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\u003cp\u003e\n  \u003ch2 align=\"center\"\u003e INICIALIZANDO \u003c/h2\u003e\n\u003c/p\u003e\n\n\u003e Você pode assistir o video onde faço tudo do zero: https://youtu.be/MPFh42cN0V4\n\u003cbr\u003e\n\nPara inicializar o projeto, certifique-se que você tenha os devidos pré requisitos antes de executar os comandos de inicialização.\n\n```\n- Docker version ^23.0.5, build bc4487a.\n- Nodejs version 18.0.0.\n```\n\u003e **!Note** que não é necessário ter o Docker, mas essa documentação, inicialmente, será feita baseando-se apenas nele.\n\nFeitas as devidas verificações dos pré requisitos, depois você `terá que criar os .env em cada serviço APP e API`, \npodendo deixa-los vazios pois as únicas variáveis necessárias o docker compose já faz a inserção na composição. \n\n.env da API e APP, respectivamente: \n```bash\nDATABASE_URL='postgres://admin:admin@localhost:5432/invoice-production'\n```\n```bash\nREACT_APP_API_URL='http://localhost:5000'\n```\n\nAgora você precisará executar alguns comandos para preparar o ambiente.\n\nO primeiro comando, referece a instalação das dependencias e o segundo faz todo o trabalho de construir as imagens e montar todo o ecossistema da aplicação.\n\nNa pasta raiz do projeto _onde estão o APP e API_ execute os seguintes comandos.\n\n```bash\nnpm run deps\nnpm run dck:compose\n```\n\n\u003e **!Note** Pode haver um erro ao executar o comando de compose dizendo que o comando docker compose não foi encontrado, neste caso tente rodar esse comando `npm run dck:composev2`.\n\n\u003cbr\u003e\nSe não ocorreu nenhum erro, no Windows você pode acessar a interface e verá algo parecido com isso:\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./documents/img/docker-preview.png\" width=\"70%\" alt=\"preview docker\" /\u003e\n    \u003cp\u003eImagem do Docker mostrando os serviços ativos\u003c/p\u003e\n\u003c/div\u003e\n\n\nApos realizar todas essas operações, você poderá acessar atráves do endereço http://localhost:3000/\n\n\u003ch2 align=\"center\"\u003e \n  \u003ca href=\"http://localhost:3000/\" target=\"_blank\" \u003e \n    ACESSAR APLICAÇÃO\n  \u003c/a\u003e \n\u003c/h2\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateusngf%2Finvoices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmateusngf%2Finvoices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateusngf%2Finvoices/lists"}