{"id":30806636,"url":"https://github.com/jonasjs/node-learning-lab","last_synced_at":"2025-09-06T01:13:54.303Z","repository":{"id":239523021,"uuid":"799741961","full_name":"JonasJs/node-learning-lab","owner":"JonasJs","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-23T03:35:27.000Z","size":250,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-24T00:12:54.585Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/JonasJs.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-05-13T02:17:59.000Z","updated_at":"2024-06-23T03:35:30.000Z","dependencies_parsed_at":"2024-06-02T16:08:32.080Z","dependency_job_id":"d1411f73-103a-4e13-ae97-973f40c531c4","html_url":"https://github.com/JonasJs/node-learning-lab","commit_stats":null,"previous_names":["jonasjs/node-learning-lab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JonasJs/node-learning-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fnode-learning-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fnode-learning-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fnode-learning-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fnode-learning-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonasJs","download_url":"https://codeload.github.com/JonasJs/node-learning-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonasJs%2Fnode-learning-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273843649,"owners_count":25178083,"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-09-05T02:00:09.113Z","response_time":402,"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":[],"created_at":"2025-09-06T01:13:39.046Z","updated_at":"2025-09-06T01:13:54.293Z","avatar_url":"https://github.com/JonasJs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Node Learning Lab\n\nRepositório criado visando compartilhar e registrar minha jornada de aprendizado em Node.js.\n\n## Modulos\n\n- [📚 1. Fundamentos do Node.js](#-fundamentos-do-nodejs)\n  - [🚀 Ver detalhes e código:](https://github.com/JonasJs/node-learning-lab/tree/main/fundamentals)\n  - [🚀 Desafio Prático:](#-desafio-prático-vanilla-node-rest-api)\n- [📚 2. Rotas e HTTP (API REST com Fastify, Knex, TypeScript e testes e2e)](#-2-rotas-e-http-api-rest-com-fastify-knex-typescript-e-testes-e2e)\n  - [🚀 Ver detalhes e código:](https://github.com/JonasJs/node-learning-lab/tree/main/routes-and-http#rotas-e-http)\n  - [🚀 Desafio Prático:](#-desafio-prático-fastify-knex-typescript-api)\n    - [Testar Api:](#)\n\n## 📚 1. Fundamentos do Node.js\n\nIrei desenvolver uma API RESTful com Node.js focada nos fundamentos da tecnologia, sem frameworks ou bibliotecas externas. Aprenderemos sobre módulos internos do Node.js, especialmente HTTP e Streams, e sobre fundamentos HTTP como Requests, Responses, Headers, status codes e os diferentes tipos de parâmetros.\n\n### 🚀 Desafio Prático: [Vanilla Node REST API](https://github.com/jonasjs/vanilla-node-rest-api/)\n\n- Desenvolver uma API RESTful utilizando apenas Node.js vanilla\n- Explorar módulos internos do Node.js (HTTP, Streams)\n- Entender e aplicar os fundamentos HTTP (Requests, Responses, Headers, Status Codes, Params)\n\nProjeto: [Vanilla Node REST API](https://github.com/jonasjs/vanilla-node-rest-api/)\n\n### 🎓 Aprendizados\n\n[![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat\u0026logo=nodedotjs\u0026logoColor=white)](https://nodejs.org/)\n[![Streams](https://img.shields.io/badge/Streams-FFD700?style=flat)](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)\n[![HTTP](https://img.shields.io/badge/HTTP-008000?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP)\n[![Request](https://img.shields.io/badge/Request-0000FF?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n[![Response](https://img.shields.io/badge/Response-FF4500?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n[![Headers](https://img.shields.io/badge/Headers-8A2BE2?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)\n[![Status Code](https://img.shields.io/badge/Status_Code-4B0082?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)\n[![Params](https://img.shields.io/badge/Params-DC143C?style=flat)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n\n## 📚 2. Rotas e HTTP (API REST com Fastify, Knex, TypeScript e testes e2e)\nDesenvolver uma API RESTful utilizando Fastify, Knex e TypeScript, colocando em prática conhecimentos como migrations e testes e2e. O projeto de aprendizado envolve criar uma API para gerenciamento de transações financeiras, permitindo a criação de novas transações, obtenção de resumos de conta, listagem de todas as transações e visualização de transações específicas, com identificação do usuário entre as requisições sem autenticação e visualização restrita às transações criadas pelo próprio usuário.\n\n[![Detalhes do Projeto](https://img.shields.io/badge/Ver_Detalhes_🔗-blue)](#)\n\n### 🚀 Desafio Prático: [Fastify Knex TypeScript API](#)\n\n### 🎓 Aprendizados\nVeja tudo que foi aprendido neste tópico em: [Detalhes do Projeto](https://github.com/JonasJs/node-learning-lab/tree/main/routes-and-http)\n\n[![Knex](https://img.shields.io/badge/Knex-000000?style=flat\u0026logo=knex\u0026logoColor=white)](https://knexjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![ESLint](https://img.shields.io/badge/ESLint-4B32C3?style=flat\u0026logo=eslint\u0026logoColor=white)](https://eslint.org/)\n[![TSX](https://img.shields.io/badge/TSX-3178C6?style=flat\u0026logo=typescript\u0026logoColor=white)](https://www.npmjs.com/package/tsx)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=flat\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)\n[![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat\u0026logo=sqlite\u0026logoColor=white)](https://www.sqlite.org/index.html)\n[![Migrations](https://img.shields.io/badge/Migrations-FF4500?style=flat)](https://knexjs.org/#Migrations)\n[![REST Client](https://img.shields.io/badge/REST_Client-0078D4?style=flat\u0026logo=visual-studio-code\u0026logoColor=white)](https://marketplace.visualstudio.com/items?itemName=humao.rest-client)\n[![Vitest](https://img.shields.io/badge/Vitest-6E4C13?style=flat\u0026logo=vitest\u0026logoColor=white)](https://vitest.dev/)\n[![Tsup](https://img.shields.io/badge/Tsup-0A0A0A?style=flat\u0026logo=esbuild\u0026logoColor=white)](https://tsup.egoist.dev/)\n[![Supertest](https://img.shields.io/badge/Supertest-0A0A0A?style=flat\u0026logo=node.js\u0026logoColor=white)](https://github.com/visionmedia/supertest)\n[![Testing Pyramid](https://img.shields.io/badge/Testing_Pyramid-008000?style=flat)](https://martinfowler.com/articles/practical-test-pyramid.html)\n[![Unit Tests](https://img.shields.io/badge/Unit_Tests-FFD700?style=flat)](https://en.wikipedia.org/wiki/Unit_testing)\n[![Integration Tests](https://img.shields.io/badge/Integration_Tests-0000FF?style=flat)](https://en.wikipedia.org/wiki/Integration_testing)\n[![End-to-End Tests](https://img.shields.io/badge/End_to_End_Tests-8A2BE2?style=flat)](https://en.wikipedia.org/wiki/End-to-end_testing)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasjs%2Fnode-learning-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonasjs%2Fnode-learning-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasjs%2Fnode-learning-lab/lists"}