{"id":26472707,"url":"https://github.com/samuel-amaro/stock-master-api","last_synced_at":"2026-04-16T05:01:38.351Z","repository":{"id":250346632,"uuid":"834204646","full_name":"Samuel-Amaro/stock-master-api","owner":"Samuel-Amaro","description":"Este projeto tem como objetivo principal o aprendizado e a construção de uma API RESTful para gerenciamento de entrada e saída de estoque de produtos com controle de acesso, utilizando tecnologias modernas no desenvolvimento back-end.","archived":false,"fork":false,"pushed_at":"2024-07-26T16:49:00.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-18T04:34:26.809Z","etag":null,"topics":["api-rest","bun","docker","drizzle-orm","elysiajs","postgresql","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Samuel-Amaro.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":"2024-07-26T16:42:14.000Z","updated_at":"2025-06-20T02:42:34.000Z","dependencies_parsed_at":"2024-07-26T18:53:02.338Z","dependency_job_id":null,"html_url":"https://github.com/Samuel-Amaro/stock-master-api","commit_stats":null,"previous_names":["samuel-amaro/stock-master-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Samuel-Amaro/stock-master-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Amaro%2Fstock-master-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Amaro%2Fstock-master-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Amaro%2Fstock-master-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Amaro%2Fstock-master-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Samuel-Amaro","download_url":"https://codeload.github.com/Samuel-Amaro/stock-master-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Amaro%2Fstock-master-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31872036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"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":["api-rest","bun","docker","drizzle-orm","elysiajs","postgresql","typescript"],"created_at":"2025-03-19T21:44:25.637Z","updated_at":"2026-04-16T05:01:38.274Z","avatar_url":"https://github.com/Samuel-Amaro.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto de Estudo de Back-End API: StockMaster(Mestre de estoque)\n\nEste projeto visa principal o aprendizado e a construção de uma API RESTful para gerenciamento de entrada e saída de estoque de produtos com controle de acesso, utilizando tecnologias modernas no desenvolvimento back-end. A API permitirá realizar operações CRUD (Criar, Ler, Atualizar, Deletar) para gerenciar produtos, categorias, fornecedores, usuários, movimentações no estoque.\n\n## Instalar e rodar o projeto\n\nRodar o projeto em sua máquina local é uma tarefa extremamente simples.\n\n### Dependências globais\n\nVocê precisa ter duas principais dependências instaladas:\n\n-   Bun runtime v1.1.10 (ou qualquer versão superior)\n-   Docker Engine v26.1.3 com Docker Compose v2.27.0 (ou qualquer versão superior)\n\n### Dependências locais\n\nCom o repositório clonado e as dependências globais instaladas, você pode instalar as dependências locais do projeto:\n\n```sh\n bun install\n```\n\n### Rodar o projeto\n\nPara rodar o projeto localmente, basta executar o comando abaixo:\n\n```sh\n bun dev\n```\n\nIsto irá automaticamente rodar serviços como Banco de dados (incluindo as Migrations), Servidor desenvolvimento seguinte endereço:\n\n```sh\n http://localhost:3000/\n http://localhost:3000/api/v1/*\n```\n\nApós este passo executar a semente para preencher o banco de dados com dados falsos.\n\n```sh\n bun seed\n```\n\n### Documentação API (Swagger)\n\npara acessar a documentação da API, vá para:\n\n```sh\n http://localhost:3000/api/v1/docs\n```\n\n## Autenticação\n\nPara utilizar a API, será necessária uma autenticação, para se autenticar acesse o seguinte endpoint:\n\n```sh\n http://localhost:3000/api/v1/authenticate\n```\n\nfornecendo o seguinte json no body da request:\n\n```json\n{\n  \"email\": \"scottmichael@hotmail.com\",\n  \"password\": \"A1b@2c3d\"\n}\n```\n\napós ser retornado um token, você o utilizará para realizar cada request na api informando um header\n\n```js\n  Authorization: Bearer \u003ctoken\u003e\n```\n\nA autenticação será implementada para proteger os endpoints da API, garantindo que apenas usuários autorizados possam acessar e modificar os dados, o token tem duração de 1 dia.\n\n## Paginação\n\nOs endpoints que recuperam informações possuem paginação simples usando **limit/offset**, via `params search` com os parâmetros.\n\n```js\n?page=1\u0026pageSize=5\u0026order=asc\n```\n\n## Funcionalidades da API\n\nA API será projetada para suportar as seguintes operações:\n\n- Autenticação\n\n  - [x] **Login**: Autenticação via JWT (JSON Web Token).\n  - [x] **Sign-out**: desconectar.\n\n- Usuários (Somente Administradores têm acesso)\n\n  - [x] **Registrar**: Registrar um novo usuário.\n  - [x] **Obter Todos**: Recuperar informações de todos os usuários criados por um usuário administrador (autenticado).\n  - [x] **Detalhes**: Recuperar informações do usuário autenticado.\n  - [x] **Atualizar**: Atualizar o usuário autenticado, após modificação de email ou senha, fazer login novamente.\n  - [x] **Deletar**: Excluir o usuário autenticado.\n  - [x] **Deletar lote**: deletar um lote de usuários criados por um usuário administrador.\n  - [x] **Recuperação de Senha**: Mecanismo para recuperação de senha via e-mail.\n\n- Categorias\n\n  - [x] **Registrar**: Registrar uma nova categoria (somente administradores)\n  - [x] **Obter todos**: Recuperar informações de todas as categorias\n  - [x] **Detalhes**: Recuperar informações de uma categoria\n  - [x] **Atualizar**: Modificar informações de uma categoria (somente administradores)\n  - [x] **Deletar**: Deletar categoria (somente administradores)\n\n- Fornecedores\n\n  - [x] **Registrar**: Registrar um novo fornecedor (somente administradores)\n  - [x] **Obter todos**: Recuperar informações de todos os fornecedores\n  - [x] **Detalhes**: Recuperar informações de um fornecedor\n  - [x] **Atualizar**: Modificar informações de um fornecedor (somente administradores)\n  - [x] **Deletar**: Deletar categoria (somente administradores)\n\n-   Produtos\n\n  - [x] **Registrar**: Registrar um novo produto, e uma movimentação no estoque (somente administradores)\n  - [x] **Obter todos**: Recuperar informações de todos os produtos\n  - [x] **Detalhes**: Recuperar informações de um produto\n  - [x] **Obter todos**: recuperar informações de todos os produtos de um fornecedor específico.\n  - [x] **Obter todos**: Recuperar informações de todos os produtos de uma categoria especifica\n  - [x] **Atualizar**: Modificar informações de um produto específico (somente administradores)\n  - [x] **Atualizar Lote**: Modificar informações de um lote de produtos (somente administradores)\n  - [X] **Deletar**: Deletar um produto (somente administradores)\n  - [X] **Deletar lote**: Deletar um lote de produtos (somente administradores)\n\n- Movimentações De Estoque\n\n  - [x] **Registrar**: Registrar uma movimentação no estoque (somente administradores)\n  - [x] **Detalhes**: Recuperar informações de uma movimentação especifica\n  - [x] **Obter Todos**: Recuperar todas as movimentações realizadas no estoque.\n  - [x] **Detalhes**: Recuperar quantidade movimentada de produto específico em um tipo de movimentação (entrada/saída)\n  - [x] **Obter todos**: recuperar a quantidade movimentada de todos os produtos em um tipo de movimentação (entrada/saída).\n  - [x] **Obter todos**: Recuperar informações sobre quantidade de produtos em estoque\n\n## Estrutura\n\nEm termos de estrutura, baseamo-nos na documentação do **Elysia** e suas recomendações, fizemos uma mesclagem da estrutura de arquivos recomendada para **Elysia** se você não preferir estritamente uma convenção específica, com o padrão MVC, por exemplo, e um MVC adaptado para o **Elysia**\n\n### Estrutura de arquivos recomendada para Elysia\n\n-   src - Qualquer arquivo associado ao desenvolvimento do servidor Elysia.\n  - index.ts – Ponto de entrada para seu servidor Elysia, local ideal para configurar plugin global.\n  - setup.ts - Composto por vários plugins para serem usados ​​como Localizador de Serviços.\n  - controllers - Instâncias que encapsulam vários endpoints.\n  - libs - Funções úteis\n  - models - Data Type Objects (DTOs) para instância Elysia\n  - types - tipo TypeScript compartilhado, se necessário.\n-   test - Arquivo de teste para servidor Elysia\n\n### Elysia Com padrão MVC\n\nComo foi dito, Elysia é uma estrutura agnóstica de padrões e é apenas um guia de recomendação para lidar com Elysia com MVC.\n\n-   **src** - Qualquer arquivo associado ao desenvolvimento do servidor Elysia.\n  - **index.ts** – Ponto de entrada para seu servidor Elysia, local ideal para configurar plugin global.\n  - **controllers** - Instâncias que encapsulam vários endpoints.\n  - **services** - Serviço é um conjunto de funções utilitárias/auxiliares para cada módulo, no nosso caso, instância de Elysia. Qualquer lógica que possa ser desacoplada do controlador pode estar ativa em um Service.\n  - **models** - Data Type Objects (DTOs) para a instância Elysia, recomendamos usar o modelo de referência Elysia ou criar um objeto, ou classe de DTOs para cada módulo.\n  - **types** - tipo TypeScript compartilhado, se necessário.\n  - **database** - Irá conter a lógica para criar uma conexão com o banco de dados, um script de migração e as definições do esquema, e um scrip de seed.\n  - **scripts** / **Utils.ts** - scripts úteis, opcionalmente para uma lógica ainda mais granular relacionada a um recurso.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-amaro%2Fstock-master-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuel-amaro%2Fstock-master-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-amaro%2Fstock-master-api/lists"}