{"id":25161099,"url":"https://github.com/eneas-almeida/luizalabs","last_synced_at":"2026-04-13T04:39:49.353Z","repository":{"id":273014694,"uuid":"918457549","full_name":"eneas-almeida/luizalabs","owner":"eneas-almeida","description":"Desafio Luizalabs é uma aplicação para cadastro de produtos favoritos.","archived":false,"fork":false,"pushed_at":"2025-02-08T14:48:29.000Z","size":791,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T13:21:21.071Z","etag":null,"topics":["backend","clean-architecture","clean-code","design-patterns","express","jdocs","jest","microservice","mongodb","nodejs","retry","solid","testes"],"latest_commit_sha":null,"homepage":"","language":null,"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/eneas-almeida.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":"2025-01-18T01:34:47.000Z","updated_at":"2025-02-08T14:48:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"62798bfd-3ca4-4123-b423-890433e88006","html_url":"https://github.com/eneas-almeida/luizalabs","commit_stats":null,"previous_names":["eneas-almeida/luizalabs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eneas-almeida/luizalabs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eneas-almeida%2Fluizalabs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eneas-almeida%2Fluizalabs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eneas-almeida%2Fluizalabs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eneas-almeida%2Fluizalabs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eneas-almeida","download_url":"https://codeload.github.com/eneas-almeida/luizalabs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eneas-almeida%2Fluizalabs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271121168,"owners_count":24702723,"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","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["backend","clean-architecture","clean-code","design-patterns","express","jdocs","jest","microservice","mongodb","nodejs","retry","solid","testes"],"created_at":"2025-02-09T02:18:00.827Z","updated_at":"2026-04-13T04:39:44.334Z","avatar_url":"https://github.com/eneas-almeida.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Luizalabs\n\n\u003e **Luizalabs** é uma aplicação para inserção de produtos a lista de favoritos. 👉 \u003ca href=\"http://luizalabs.online\"\u003e luizalabs.online\u003c/a\u003e\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./media/logos/luizalabs-logo.png\" width=\"300\"/\u003e\u003c/p\u003e\n\n## 👤 Autor\n\n| Nome                                              | Ativo | Dt. inativo | Atribuições   |\n| ------------------------------------------------- | ----- | ----------- | ------------- |\n| [Enéas Almeida](https://github.com/eneas-almeida) | 🔥    | -           | Desenvolvedor |\n\n## ⚓ Links\n\n👉 [Backend](https://github.com/eneas-almeida/luizalabs-backend)\u003cbr /\u003e\n👉 [Frontend](https://github.com/eneas-almeida/luizalabs-frontend)\u003cbr /\u003e\n\n👉 [http://luizalabs.online](http://luizalabs.online)\n\n**Observação**: Em cada repositório contém as instruções necessárias de como rodar tanto o backend quanto o frontend.\n\n## Etapas do projeto\n\n1. Entendimento do problema a ser resolvido;\n2. Levantamento dos requisitos funcionais;\n3. Definição do padrão arquitetural utilizado;\n4. Definição das tecnologias utilizadas;\n5. Definição das atribuições e cronograma de estimativas no desenvolvimento das atividades;\n6. Desenvolvimento do MVP.\u003cbr /\u003e\n   6.1. Desenvolvimento da backend;\u003cbr /\u003e\n   6.2. Desenvolvimento do frontend;\u003cbr /\u003e\n   6.3. Integração do frontend com o backend.\n\n## Backend\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"https://cdn.worldvectorlogo.com/logos/nodejs-icon.svg\" alt=\"NodeJs\" title=\"NodeJs\" width=\"30\" height=\"30\" /\u003e\n  \u003cimg src=\"https://cdn.worldvectorlogo.com/logos/logo-javascript.svg\" alt=\"Javascript\" title=\"Javascript\" width=\"30\" height=\"30\" /\u003e\n  \u003cimg src=\"./media/icons/jest.svg\" alt=\"Jest\" title=\"Jest\" width=\"30\" height=\"30\" /\u003e\n\u003c/p\u003e\n\n-   NodeJs/Express\n-   Javascript\n-   Docker/Mongo\n-   Testes com métricas de coverages (**Jest**)\n\n### Clean Architecture\n\nA escolha do padrão **Clean Architecture** para um projeto de software pode trazer diversos benefícios, mas é importante ressaltar que a escolha de uma arquitetura depende muito das necessidades específicas do projeto, das características da equipe de desenvolvimento e das metas a serem alcançadas.\n\n**Principais vantagens:**\n\n-   Separação de responsabilidades;\n-   Independência de frameworks e bibliotecas;\n-   Testabilidade;\n-   Escalabilidade;\n-   Longevidade do software.\n\n### Recursos utilizados no backend\n\n-   Testes unitários;\n-   Tipagem com o JDOCS;\n-   Injeções e inversões de dependência;\n-   Adaptador para as API de produtos (fakestore);\n-   Padrão repository;\n-   Estratégia de resiliência de chamadas http com o axios retry;\n-   Estratégia de melhor gerencimanto do pool de conexões com o agentkeepalive;\n-   Indexes nas collections do mongo.\n\n### Recursos futuros\n\n-   RateLimit\n-   Swagger\n-   CI/CD\n\n### Persistência dos dados\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"./media/icons/mongodb.svg\" alt=\"MongoDB\" title=\"MongoDB\" width=\"35\" height=\"35\" /\u003e\n  \u003cimg src=\"./media/icons/docker.svg\" alt=\"Docker\" title=\"Docker\" width=\"40\" height=\"40\" /\u003e\n\u003c/p\u003e\n\n-   MongoDB\n\n\\* O banco de dados é proveniente de container do docker.\n\nEstrutura de um registro de lista de produtos no mongo:\n\n\u003cimg src=\"./media/images/mongo-data.png\" alt=\"data mongo\" title=\"data mongo\" width=\"500\" /\u003e\n\n## Frontend\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"https://cdn.worldvectorlogo.com/logos/vue-9.svg\" alt=\"VueJs\" title=\"VueJs\" width=\"30\" height=\"30\" /\u003e\n  \u003cimg src=\"./media/icons/vuetify.svg\" alt=\"Vuetify\" title=\"Vuetify\" height=\"30\" /\u003e\n  \u003cimg src=\"https://cdn.worldvectorlogo.com/logos/logo-javascript.svg\" alt=\"Javascript\" title=\"Javascript\" width=\"30\" height=\"40\" /\u003e \n\u003c/p\u003e\n\n-   VueJs\n-   Vuetify\n-   Javascript\n\n### Prints do sistema\n\n\u003cimg src=\"./media/screens/tela-cadastro.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-login.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-dashboard.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-produtos.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-criar-lista.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-resp-cad-lista.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-resp-lista.png\" width=\"600\" /\u003e\n\n\u003cimg src=\"./media/screens/tela-resp-produto.png\" width=\"600\" /\u003e\n\n## Recursos\n\n| Path                     | Método | Token | Descrição                               |\n| ------------------------ | ------ | ----- | --------------------------------------- |\n| http://localhost:3000/v1 |\n| **ACCOUNT**              |\n| /accounts/create         | POST   |       | Cria a conta                            |\n| /accounts/login          | POST   |       | Efetua login                            |\n| **FAVORITES**            |\n| /favorites               | POST   | x     | Cria lista de produtos favoritos        |\n| /favorites/:id           | DELETE | x     | Deleta lista de favoritos               |\n| /favorites               | GET    | x     | Lista a lista de favoritos              |\n| /favorites/:id           | GET    | x     | Visualiza a lista de favoritos          |\n| /favorites/:id           | PUT    | x     | Atualiza os dados da lista de favoritos |\n| /favorites/manager       | PATCH  | x     | Gerencia a lista de favoritos           |\n| **PRODUCTS**             |\n| /products                | GET    | x     | Obtém os produtos                       |\n\n## Download do projeto no Insomnia\n\n[![Run in Insomnia}](https://insomnia.rest/images/run.svg)](https://insomnia.rest/run/?label=Luizalabs\u0026uri=https%3A%2F%2Fraw.githubusercontent.com%2Feneas-almeida%2Fluizalabs%2Fmaster%2./media/insomnia/Insomnia_2025-01-18.json)\n\n## Gitflow\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./media/icons/branch.svg\" alt=\"Branch\" width=\"100\" /\u003e\n\u003c/p\u003e\n\nO Gitflow é um fluxo de trabalho que auxilia o desenvolvimento contínuo de software entre a equipe envolvida.\n\n👉 \u003ca href=\"https://www.atlassian.com/br/git/tutorials/comparing-workflows/gitflow-workflow\"\u003eMais informações\u003c/a\u003e\n\n\\* A branch **master** 🔒 é bloqueada para receber commits de usuários.\u003cbr /\u003e \\* A branch **master** representa o software em **produção**.\u003cbr /\u003e \\* A branch **develop** representa o software em **QA**.\u003cbr /\u003e \\* Fica determinado que sempre que um merge request na branch develop for aprovado ou reprovado, a branch do usuário **NÃO** será deletada, a fim de manter o histórico de branchs.\n\n## Conventional Commits\n\n**Conventional Commits** é uma convenção de mensagens de commits. Essa convenção descrevendo os recursos, correções e alterações importantes feitas nas mensagens.\n\n### Flags utilizadas:\n\n| Ícone | Flag         | Descrição                                                                                                |\n| ----- | ------------ | -------------------------------------------------------------------------------------------------------- |\n| 🪲    | **fix**      | Correção de bug para o usuário.                                                                          |\n| ☂️    | **feat**     | Desenvolvimento de uma nova funcionalidade.                                                              |\n| 📃    | **docs**     | Alterações na documentação.                                                                              |\n| ✂️    | **refactor** | Refatoração de um bloco de código.                                                                       |\n| 💅    | **style**    | Formatação, falta de ponto e vírgula, etc.                                                               |\n| 🔧    | **perf**     | Uma mudança de código que melhora o desempenho.                                                          |\n| 🔨    | **build**    | Alterações que afetam o sistema de compilação ou dependências externas (escopos de exemplo: gulp e npm). |\n| 🪀    | **ci**       | Alterações em arquivos e scripts de configuração de CI (escopos de exemplo: Travis, Circle e Codeship).  |\n| 🧪    | **test**     | Adicionando testes ausentes ou corrigindo testes existentes.                                             |\n\n### Exemplos de commits utilizando a padronização\n\n```bash\n# Exemplo 1\ngit commit -m \"🪲 fix: corrige bug da listagem de usuários.\"\n```\n\n```bash\n# Exemplo 2\ngit commit -m \"☂️ feat: cria o módulo de pontos.\"\n```\n\n\u003chr\u003e\n\n© Documento elaborado por \u003ca href=\"https://github.com/eneas-almeida\"\u003eEnéas Almeida\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feneas-almeida%2Fluizalabs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feneas-almeida%2Fluizalabs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feneas-almeida%2Fluizalabs/lists"}