{"id":13343398,"url":"https://github.com/Luk4x/iManager-json-server","last_synced_at":"2025-03-12T04:33:33.723Z","repository":{"id":131592643,"uuid":"543631246","full_name":"Luk4x/iManager-json-server","owner":"Luk4x","description":"🪙 iManager API - A JSON-Server API to store iManager Interface data | NodeJS, Javascript, JSON-Server...","archived":false,"fork":false,"pushed_at":"2023-02-01T23:02:16.000Z","size":132,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-24T15:39:49.365Z","etag":null,"topics":["api","backend","heroku","imanager","javascript","json-server","nodejs","yarn"],"latest_commit_sha":null,"homepage":"https://luk4x-imanager-json-server.onrender.com/","language":"JavaScript","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/Luk4x.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":"2022-09-30T14:07:20.000Z","updated_at":"2024-03-17T16:30:21.000Z","dependencies_parsed_at":"2023-06-10T18:15:30.695Z","dependency_job_id":null,"html_url":"https://github.com/Luk4x/iManager-json-server","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/Luk4x%2FiManager-json-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luk4x%2FiManager-json-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luk4x%2FiManager-json-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luk4x%2FiManager-json-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luk4x","download_url":"https://codeload.github.com/Luk4x/iManager-json-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243158975,"owners_count":20245668,"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":["api","backend","heroku","imanager","javascript","json-server","nodejs","yarn"],"created_at":"2024-07-29T19:31:18.488Z","updated_at":"2025-03-12T04:33:33.718Z","avatar_url":"https://github.com/Luk4x.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ctable align=\"right\"\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003ca href=\"readme-en.md\"\u003e🇺🇸 English\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003ca href=\"README.md\"\u003e🇧🇷 Português\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n![luk4x-repo-status](https://img.shields.io/badge/Status-Finished-lightgrey?style=for-the-badge\u0026logo=headspace\u0026logoColor=green\u0026color=lightgrey)\n![luk4x-repo-license](https://img.shields.io/github/license/Luk4x/iManager-json-server?style=for-the-badge\u0026logo=unlicense\u0026logoColor=lightgrey)\n# 🪙 iManager Project API\n\u003e Acesse o projeto online **[AQUI](https://luk4x-imanager-json-server.onrender.com/)**\n\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-tecnologias-utilizadas\"\u003eTecnologias\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#-sobre\"\u003eSobre\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#-rotas-e-exemplos\"\u003eRotas\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#-clonando-o-projeto\"\u003eClone\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#-contato-dos-contribuintes\"\u003eContato\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n## 🚀 Tecnologias Utilizadas\n\n- [NodeJS](https://nodejs.org)\n- [JSON-Server](https://yarnpkg.com/package/json-server)\n- [Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)\n- [Yarn](https://yarnpkg.com/)\n\n## 📝 Sobre\n\nEsse projeto é uma JSON-Server API que realiza o cadastro de projetos e armazena as categorias de projetos da **iManager**, uma Web plataforma de gestão empresarial, servindo como base para a sua [Interface](https://github.com/Luk4x/iManager) que desenvolvi essencialmente em ReactJS.\n\n### 📃 Rotas e Exemplos\n\n-   `POST /projects`: Essa rota recebe o _nome do projeto_, o _orçamento do projeto_ e a _categoria do projeto_. Essas informações são passadas pelo `body` da requisição, e com base nelas um novo projeto é registrado dentro do array de projetos, no seguinte formato:\n    \n    ```js\n    [\n        {\n            \"name\": \"Projeto 1\",\n            \"budget\": \"5000\",\n            \"category\": {\n                \"id\": 1,\n                \"name\": \"Infra\"\n            },\n            \"cost\": 0,\n            \"services\": [],\n            \"id\": 1\n        }\n    ];\n    ```\n\n    As informações de `cost` e `services` são inicializadas por padrão no sistema respectivamente como `0` e `[]`, e o `id` é gerado com base na posição do projeto no array, e juntas, essas 3 informações são incorporadas no projeto.\u003cbr\u003e\n\n-   `GET /projects`: Essa rota retorna todos os projetos existentes no array de `projects`.\n\n-   `GET /projects/:id`: Com base no `id` enviado, essa rota retorna um projeto específico.\n\n-   `PATCH /projects/:id`: Com base no `id` enviado e nos dados do projeto enviados pelo `body` da requisição, essa rota torna possível atualizar as informações de `name`, `budget` e/ou `category` de um projeto específico.\u003cbr/\u003e\n    Continuando do exemplo acima, ao chamar a rota `PATCH /projects/1` passando `{ name: \"Novo Projeto 1\", budget: 6500, category: { id: 2, name: \"Desenvolvimento\"} }`, o array ficará dessa forma:\n    \n     ```js\n    [\n        {\n            \"name\": \"Novo Projeto 1\",\n            \"budget\": \"6500\",\n            \"category\": {\n                \"id\": 2,\n                \"name\": \"Desenvolvimento\"\n            },\n            \"cost\": 0,\n            \"services\": [],\n            \"id\": 1\n        }\n    ];\n    ```\n    \n    Porém, através dessa rota também é possível atualizar o array de `services` do projeto, assim sendo possível Criar/Editar/Remover serviços - tudo dependerá do que estará sendo enviado pelo `body` da requisição. Tendo em mente que:\u003cbr/\u003e\n    \n    ```js\n        const project = {\n            \"name\": \"Novo Projeto 1\",\n            \"budget\": \"6500\",\n            \"category\": {\n                \"id\": 2,\n                \"name\": \"Desenvolvimento\"\n            },\n            \"cost\": 0,\n            \"id\": 1\n        }\n    ```\n    \n    Ao chamar a rota `PATCH /projects/1` passando `{...project, services: [ { name: \"Contratação de Dev Front-End\", cost: 3400, desc: \"Responsável pelo desenvolvimento do layout da aplicação.\" } ] }`, o array ficará dessa forma:\n    \n    ```js\n    [\n        {\n            \"name\": \"Novo Projeto 1\",\n            \"budget\": \"6500\",\n            \"category\": {\n                \"id\": 2,\n                \"name\": \"Desenvolvimento\"\n            },\n            \"cost\": 3400,\n            \"services\": [\n              {\n                  \"name\": \"Contratar Dev Front-End\",\n                  \"cost\": 3400,\n                  \"desc\": \"Responsável pelo desenvolvimento do layout da aplicação.\",\n                  \"id\": \"dea206b3-409d-4b3f-9493-4bc2d27466a2\"\n              }\n            ],\n            \"id\": 1\n        }\n    ];\n    ```\n\n    O serviço que foi passado na requisição foi criado, e nesse caso, sua informação de `id` foi gerada pela biblioteca [uuid](https://www.uuidgenerator.net/).\u003cbr/\u003e\n    Para Editar/Deletar um serviço segue-se a mesma lógica: basta enviar um `project` no estado desejado na requisição, que através de seu `id`, ele substituirá o `project` existente no array de `projects`.\u003cbr/\u003e\n    Perceba que o valor de `cost` do projeto foi influenciado pelo serviço adicionado, isso porque o _custo do projeto_ está relacionado com seus _serviços_, portanto, se o projeto tiver 2 serviços com um `cost` de 4000 cada, logo, o `cost` do projeto será de 8000, porém, nesse caso é impossível disso acontecer, pois existem verificações para que o `cost` de um projeto não ultrapasse seu `budget`.\n    \n-   `DELETE /projects/:id`: Com base no `id` enviado, assim que chamada, essa rota deleta o projeto recebido.\n\n-   `GET /categories`: Essa rota retorna todas as categorias existentes no array de `categories`.\n\n## 📖 Clonando o Projeto\n\nPara clonar e executar este projeto em seu computador, você precisará do [Git](https://git-scm.com/), [Node.js v16.13.2](https://nodejs.org/en/) ou superior, [Yarn](https://yarnpkg.com/), e de preferência, um API Client como o [Insomnia](https://insomnia.rest/) (mas também pode ser acessado pelo navegador) previamente instalados.\u003cbr\u003eNo terminal:\n\n```bash\n# Clone esse repositório com:\n\u003e git clone https://github.com/Luk4x/iManager-json-server.git\n\n# Entre no repositório com:\n\u003e cd iManager-json-server\n\n# Instale as dependências com: \n\u003e yarn install\n\n# Execute o projeto com:\n\u003e yarn start\n\n# Feito isso, você já poderá acessar o projeto pelo link que aparecerá no terminal! (algo como http://localhost:3000/ ou http://127.0.0.1:5173/)\n```\n\n## 🤝 Contato dos Contribuintes\n\n\u003ctable border=\"2\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003e\n          \u003cb\u003e\u003ca href=\"https://cursos.alura.com.br/vitrinedev/lucasmacielf\"\u003eVitrine.Dev\u003c/a\u003e 🪟\u003c/b\u003e\n          \u003ctable\u003e\n            \u003ctr\u003e\n              \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/Luk4x\"\u003e\n                  \u003cimg src=\"https://avatars.githubusercontent.com/Luk4x\" width=\"150px;\" alt=\"Luk4x Github Photo\"/\u003e\n                \u003c/a\u003e\n                \u003cbr\u003e\n                \u003ca href=\"https://www.linkedin.com/in/lucasmacielf/\"\u003e\n                  \u003csub\u003e\n                    \u003cb\u003eLucas Maciel\u003c/b\u003e\n                  \u003c/sub\u003e\n                \u003c/a\u003e\n              \u003c/td\u003e\n            \u003c/tr\u003e\n          \u003c/table\u003e\n        \u003c/summary\u003e\n\n| :placard: Vitrine.Dev | Lucas Maciel |\n| -------------  | --- |\n| :sparkles: Nome        | **🪙 iManager API**\n| :label: Tecnologias | nodejs, json-server, javascript, yarn\n| :camera: Img         | \u003cimg src=\"https://user-images.githubusercontent.com/86276393/202928867-5c335135-7aac-4e38-bc7b-1e543161a3e9.png#vitrinedev\" alt=\"vitrine.dev thumb\" width=\"100%\"/\u003e\n\n\u003c/details\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cp align=\"right\"\u003e\n  \u003ca href=\"#-imanager-project-api\"\u003eVoltar ao Topo\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLuk4x%2FiManager-json-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLuk4x%2FiManager-json-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLuk4x%2FiManager-json-server/lists"}