{"id":23178907,"url":"https://github.com/aszurar/nodejs-concepts-challange-gostack","last_synced_at":"2026-04-09T12:54:09.540Z","repository":{"id":41052828,"uuid":"488979502","full_name":"Aszurar/nodejs-concepts-challange-gostack","owner":"Aszurar","description":"Nesse desafio, criamos uma aplicação para treinar os conceitos iniciais de NodeJS como rotas, Essa será uma aplicação para armazenar repositórios do seu portfólio, que irá permitir:  a criação, listagem, atualização Remoção dos repositórios Além disso. permitirá que os repositórios possam receber \"likes\". middlewares, servidores, etc. Esse é o 1º desafio de NodeJS voltado para o back-end do bootcamp GoStack da Rocketseat.","archived":false,"fork":false,"pushed_at":"2022-06-29T06:08:31.000Z","size":114,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-10T10:26:56.882Z","etag":null,"topics":["express","express-js","express-middleware","expressjs","javascript","middleware","node","node-js","nodejs","nodejsexpress","nodemon","swagger","swagger-ui"],"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/Aszurar.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}},"created_at":"2022-05-05T13:16:55.000Z","updated_at":"2022-06-29T06:10:52.000Z","dependencies_parsed_at":"2022-07-25T21:32:14.359Z","dependency_job_id":null,"html_url":"https://github.com/Aszurar/nodejs-concepts-challange-gostack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"rocketseat-education/gostack-template-conceitos-nodejs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2Fnodejs-concepts-challange-gostack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2Fnodejs-concepts-challange-gostack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2Fnodejs-concepts-challange-gostack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aszurar%2Fnodejs-concepts-challange-gostack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aszurar","download_url":"https://codeload.github.com/Aszurar/nodejs-concepts-challange-gostack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276185,"owners_count":20912288,"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":["express","express-js","express-middleware","expressjs","javascript","middleware","node","node-js","nodejs","nodejsexpress","nodemon","swagger","swagger-ui"],"created_at":"2024-12-18T07:13:09.191Z","updated_at":"2025-12-30T23:07:41.066Z","avatar_url":"https://github.com/Aszurar.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Desafio de Conceitos de Nodejs | GoStack\n\n- Nesse desafio, criamos uma aplicação para treinar os conceitos iniciais de NodeJS como rotas, middlewares, servidores, etc.\n- Esse é o 1º desafio de NodeJS voltado para o back-end do bootcamp GoStack da Rocketseat.\n- O Node é uma plataforma open-source que permite a execução da lingaugem javascript no lado do servidor/back-end.\n  - Composto por:\n  - v8: Interpretador de JavaScript, criado pela Google para executar o Chrome, tornando-o muito mais rápido e eficiente e que permite a execução de código javascript no back-end.\n  - libuv: Biblioteca multiplataforma com o foco em I/O assíncrono melhorando ainda mais o desempenho do Node.\n    - Também pode ser utildo por outras linguagens.\n  - Com o objetivo de Melhorar o suporte ao processo de I/O das tecnologias de back-end.\n\n\u003ch3 align=\"center\"\u003e\n  \u003ca href=\"#information_source-sobre\"\u003eSobre\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#interrobang-motivo\"\u003eMotivo\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#art-documentação\"\u003eDocumentação\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#seedling-requisitos-mínimos\"\u003eRequisitos\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#rocket-principais-tecnologias-utilizadas\"\u003eTecnologias\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#package-como-baixar-e-executar-o-projeto\"\u003eBaixar e Executar\u003c/a\u003e\u0026nbsp;\n\u003c/h3\u003e\n\n___\n\n\u003cdiv align=\"center\" \u003e\n  \u003cimg src=\"https://i.imgur.com/kxsPDgP.gif\" width=\"400\"\u003e____\u003cimg src=\"https://i.imgur.com/UMzuf3e.gif\" width=\"400\"\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\" \u003e\n  \u003cimg src=\"https://i.imgur.com/30uVpAv.gif\" width=\"400\"\u003e____\u003cimg src=\"https://i.imgur.com/qR16XKE.gif\" width=\"400\"\u003e\n\u003c/div\u003e\n\n\n- [**Link do vídeo completo sobre o projeto**](https://www.youtube.com/watch?v=4hPehnLnzAU)\n___\n\n## :information_source: Sobre\n\n- Essa será uma aplicação para armazenar repositórios do seu portfólio, que irá permitir: \n  1. a criação, \n  2. listagem, \n  3. atualização \n  4. Remoção dos repositórios\n- Além disso.  permitirá que os repositórios possam receber \"likes\".\n \n- Estrutura  \n  1. Código:\n     - É tentando **manter o padrão que é ensinado na Rocketseat** para o código mais limpo, organizado de facil entendimento com sua estrutura de pastas também.\n       - Todo código foi **feito com JavaScript**.\n  2. Express:\n       - Toda criação, inicialização e funcionalidades do projeto foi feito usando o express.\n  3. NodeJS\n       - Foi cronstruído de forma simples uma aplicação para resgatar os conceitos de Node em conjunto com de uma API Rest.\n       - Foi usado o yarn como gerenciador de pacotes.\n* **Arquivo principal**:\n\n\u003cdiv align=\"center\" \u003e\n    \u003cimg src=\"https://i.imgur.com/E6D9p1S.png\" width=\"800\"\u003e\n\u003c/div\u003e\n\n___\n\n## :interrobang: Motivo\n\nCom esse projeto foi posto em prática de vários conceitos iniciais de NodeJS, como: \n  1. O uso do framework express:\n     - Iniciação da aplicação/serivdor.\n     - Auxilia na criação de rotas os métodos http: post, get, patch, put e delete.\n  3. Configuração e iniciação do Package.json\n  4. Prática no uso dos HTTP Codes e HTTP Methods\n  5. Estrutura inicial de um servidor simples com express.\n     - Uso de Json no express\n     - Recarregando automaticamente o servidor quando houver alterações no código.\n     - Esturtura incial de pastas\n  6. Transferência de dados entre a requisição/rotas:\n     - Uso dos parâmetros de rotas: params e query. \n     - Uso do parâmetro de Headers\n     - Uso do Request Body\n  7. Uso do Insomnia\n  8. Entedimento básico sobre Regras de negócio\n     -  Prática de lógica de programação\n     -  Prática e uso de métodos padrões javascript como: \n        -  find()\n        -  some()\n        -  filter()\n        -  reduce()\n        -  indexOf()\n        -  splice()  \n  9. Geração de ids com o uuid\n  10. Criação e uso de Middlewares\n     - Uso do método next()\n     - Entendimento mais profundo sobre Request e Response\n\n **Funcionalidades**\n\n  0. Middleware: validadeId\n      - Verifica se o id passado é válido.\n    \u003cimg src=\"https://i.imgur.com/sO9QbT1.png\" width=\"800\"\u003e\n   \n\n  1. POST /repositories: \n      - A rota deve receber title, url e techs dentro do corpo da requisição, sendo a URL o link para o github desse repositório. Ao cadastrar um novo projeto, ele deve ser armazenado dentro de um objeto no seguinte formato: { id: \"uuid\", title: 'Desafio Node.js', url: 'http://github.com/...', techs: [\"Node.js\", \"...\"], likes: 0 }; Certifique-se que o ID seja um UUID, e de sempre iniciar os likes como 0.\n    \u003cimg src=\"https://i.imgur.com/x857IHm.png\" width=\"800\"\u003e\n \n\n  2. GET /repositories: \n       - Rota que lista todos os repositórios;\n    \u003cimg src=\"https://i.imgur.com/ksol16F.png\" width=\"800\"\u003e\n\n \n  3. PUT /repositories/:id: \n       - A rota que altera apenas o title, a url e as techs do repositório que possua o id igual ao id presente nos parâmetros da rota;\n    \u003cimg src=\"https://i.imgur.com/vfCLWNz.png\" width=\"800\"\u003e\n\n  4. DELETE /repositories/:id: \n      - A rota que deleta o repositório com o id presente nos parâmetros da rota;\n    \u003cimg src=\"https://i.imgur.com/4VXma7n.png\" width=\"800\"\u003e\n  5. POST /repositories/:id/like: \n      - A rota deve aumentar o número de likes do repositório específico escolhido através do id presente nos parâmetros da rota, a cada chamada dessa rota, o número de likes deve ser aumentado em 1;\n    \u003cimg src=\"https://i.imgur.com/lac9QgZ.png\" width=\"800\"\u003e\n___\n## :art: Documentação\n\n- Após executar a aplicação basta acessar o endereço: \n  \u003ca href=\"http://localhost:3333/api-docs/\" target=\"_blank\"\u003ehttp://localhost:3333/api-docs/\u003c/a\u003e\n\n[\u003ch2 align=\"center\"\u003eNodejs Concepts Challange - Swagger\u003c/h2\u003e](http://localhost:3333/api-docs/)\n\u003cimg src=\"https://i.imgur.com/hcgdd64.png\" width=\"900\"\u003e\n\n___\n## :seedling: Requisitos Mínimos\n\n- NodeJS\n- Express\n- Yarn(ou NPM)\n___\n\n## :rocket: Principais Tecnologias Utilizadas\n\nO projeto foi desenvolvido utilizando as seguintes tecnologias\n- [Express](https://expressjs.com/pt-br/)\n- [Insomnia](https://insomnia.rest/download)\n- [Javascript](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript)\n- [NodeJS](https://nodejs.org/en/)\n- [Yarn](https://classic.yarnpkg.com/blog/2017/05/12/introducing-yarn/)\n___\n## :package: Como baixar e executar o projeto\n\n  - Clonar o projeto:\n    ```bash\n     https://github.com/Aszurar/nodejs-concepts-challange-gostack.git\n    ```\n  - É necessário a instalação do **yarn** de acordo com seu sistema operacional, para isso veja como no site do [Yarn](https://classic.yarnpkg.com/blog/2017/05/12/introducing-yarn/)\n  - Instalação das dependências:\n    - Execute o comando abaixo dentro da pasta do projeto\n    ```bash\n      yarn\n    ```\n - Execução -\n    ```bash\n       yarn dev\n    ```\n- Agora é necessário o uso do Insomnia para que teste cada requisição:\n    1. Baixe e Instale o [Insomnia](https://insomnia.rest/download):\n    2. Importe no Insomnia o arquivo chamado teste-no-insomnia que está na pasta do projeto.\n    3. Agora basta executar cada rota no Insomnia para testar o projeto\n___\nDesenvolvido por :star2: Lucas de Lima Martins de Souza.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faszurar%2Fnodejs-concepts-challange-gostack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faszurar%2Fnodejs-concepts-challange-gostack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faszurar%2Fnodejs-concepts-challange-gostack/lists"}