{"id":13626432,"url":"https://github.com/tericcabrel/blog-tutorials","last_synced_at":"2025-04-16T14:33:44.889Z","repository":{"id":41532944,"uuid":"332547399","full_name":"tericcabrel/blog-tutorials","owner":"tericcabrel","description":"Sample code of my blog tutorials","archived":false,"fork":false,"pushed_at":"2024-10-27T08:44:48.000Z","size":6845,"stargazers_count":362,"open_issues_count":2,"forks_count":282,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-10-27T09:47:51.751Z","etag":null,"topics":["blog-tutorials","java","jwt","mongodb","nodejs","spring-boot","typescript"],"latest_commit_sha":null,"homepage":"https://blog.tericcabrel.com","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/tericcabrel.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":"2021-01-24T20:21:44.000Z","updated_at":"2024-10-27T08:44:53.000Z","dependencies_parsed_at":"2024-10-27T09:53:51.912Z","dependency_job_id":null,"html_url":"https://github.com/tericcabrel/blog-tutorials","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/tericcabrel%2Fblog-tutorials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tericcabrel%2Fblog-tutorials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tericcabrel%2Fblog-tutorials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tericcabrel%2Fblog-tutorials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tericcabrel","download_url":"https://codeload.github.com/tericcabrel/blog-tutorials/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223716530,"owners_count":17191063,"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":["blog-tutorials","java","jwt","mongodb","nodejs","spring-boot","typescript"],"created_at":"2024-08-01T21:02:18.423Z","updated_at":"2024-11-08T16:30:43.767Z","avatar_url":"https://github.com/tericcabrel.png","language":"TypeScript","readme":"# blog-tutorials\n\n[**Set up a Node.js project with Typescript, ESLint and Prettier**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-starter)\n\n[**Use MongoDB with a Node.js application**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-mongo)\n\n[**Create a REST API with Node.js, Express, MongoDB and Typescript**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api)\n\n[**Upload file to Google Drive with Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-gdrive-api)\n\n[**Upload files to the Node.js server with express and Multer**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-upload-files)\n\n[**Apply conventional commit style on your project with commitlint**](https://github.com/tericcabrel/blog-tutorials/tree/main/commit-lint-app)\n\n[**Minimal SpringBoot starter for a backend web application**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-starter)\n\n[**Document a Node.js REST API with Swagger and Open API**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api-swagger)\n\n[**Using MongoDB with Spring Boot project - Part 1**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-mongodb)\n\n[**Generate a PDF in a Node.js application with Puppeteer**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-webapp-pdf)\n\n[**Write better bash scripts with Zx**](https://github.com/tericcabrel/blog-tutorials/tree/main/bash-script-zx)\n\n[**Using MongoDB with Spring Boot project - Part 2**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-mongodb-2)\n\n[**Using Docker and Docker-compose with Node.js and MongoDB**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-docker-compose)\n\n[**Validate Request Body and Parameter in Spring Boot**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-validation)\n\n[**Write custom validator for request body in Spring Boot**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-custom-validation)\n\n[**Using Web scraping in Node.js to build an API to browse programming languages**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-web-scraping)\n\n[**Using Prisma ORM to build a Node.js application with MySQL**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-mysql)\n\n[**Send email in Spring Boot with Thymeleaf and Mailgun**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-email)\n\n[**Setup ZSH, autosuggestion, and syntax highlight on Ubuntu Server**](https://blog.tericcabrel.com/setup-zsh-autosuggestion-and-syntax-highlight-on-ubuntu-server/)\n\n[**Set up a personal blog with Ghost and Docker**](https://github.com/tericcabrel/blog-tutorials/tree/main/blog-ghost-docker)\n\n[**How to deploy a AWS Lambda container with Docker**](https://github.com/tericcabrel/blog-tutorials/tree/main/lambda-container)\n\n[**Create a GraphQL application with Node.js and Apollo server 3**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-graphql)\n\n[**Handle custom datatype in a GraphQL application with Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-graphql-custom-type)\n\n[**Create and deploy a Lambda Function in Node.js with AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/lambda-node-cdk)\n\n[**Set up a React project with Typescript, Hot reload and Webpack**](https://github.com/tericcabrel/blog-tutorials/tree/main/react-webpack)\n\n[**Create a Java project using an external dependency with Maven**](https://github.com/tericcabrel/blog-tutorials/tree/main/java-maven)\n\n[**Deploy a Node.js application with PM2 and Nginx**](https://github.com/tericcabrel/blog-tutorials/tree/main/deploy-node-app)\n\n[**Handle database migrations in a SpringBoot application with Flyway**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-flyway)\n\n[**Create a replica set in MongoDB with Docker Compose**](https://github.com/tericcabrel/blog-tutorials/tree/main/mongodb-replica-set)\n\n[**Implement Server-Sent Events in Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-react-sse)\n\n[**Handle MongoDB transactions in Node.js using Mongoose**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-mongodb-transaction)\n\n[**Using Typescript and Esbuild to deploy a Lambda Function with AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-lambda-timeviewer)\n\n[**Discover ULID: the sortable version of UUID**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-ulid)\n\n[**Read CSV file in Node.js and Typescript**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-csv-read)\n\n[**Grammarly: The professional tool writers need**](https://blog.tericcabrel.com/the-professional-tool-writers-need/)\n\n[**Using PlanetScale and TypeORM to build a Node.js REST API**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-typeorm-planetscale)\n\n[**Understand the shadow database feature of Prisma ORM**](https://github.com/tericcabrel/blog-tutorials/tree/main/prisma-shadow-database)\n\n[**Upload a file to a server with SpringBoot**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-file-upload)\n\n[**Protect your API routes in Next.js with Middleware**](https://github.com/tericcabrel/blog-tutorials/tree/main/next-api-middleware)\n\n[**Deploy Forem on AWS and build your tech community**](https://blog.tericcabrel.com/deploy-forem-on-aws-build-your-tech-community/)\n\n[**Deploy Forem on Digital Ocean and build your tech community**](https://blog.tericcabrel.com/deploy-forem-on-digital-ocean/)\n\n[**Handle Many-To-Many relationship with JPA in a Spring Boot application - part 1**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-many-to-many-1)\n\n[**Handle Many-To-Many relationship with JPA in a Spring Boot application - part 2**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-many-to-many-2)\n\n[**Generate a CSV file from data using Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-csv-write)\n\n[**Deploy a Java Lambda Function and API Gateway with AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/lambda-java-cdk)\n\n[**Build an OTP in Node.js using Twilio SMS API and Redis**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-otp-twilio)\n\n[**Build a newsletter form subscription using React and the ConvertKit API**](https://github.com/tericcabrel/blog-tutorials/tree/main/react-newsletter)\n\n[**Create a Spring Boot project from IntelliJ**](https://blog.tericcabrel.com/create-spring-boot-project-intellij/)\n\n[**Build a Web application with Spring Boot and Tailwind CSS**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-tailwind-css)\n\n[**Deploy a Spring Boot application JAR file with Nginx reverse proxy**](https://github.com/tericcabrel/bmi)\n\n[**Deploy a Spring Boot application with Docker and Nginx Reverse Proxy**](https://github.com/tericcabrel/bmi)\n\n[**Write data in an Excel file using Node.js and Typescript**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-excel-write)\n\n[**Read an Excel file in Node.js and Typescript**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-excel-read)\n\n[**Connect a Node.js application with MongoDB using Prisma**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-mongo)\n\n[**Create a Docker image of a Next.js application**](https://github.com/tericcabrel/blog-tutorials/tree/main/docker-nextjs)\n\n[**Data Caching in a Spring Boot application with Redis**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-caching)\n\n[**Handle a Many-to-Many relationship with Prisma and Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-many-to-many)\n\n[**Caching data in Node.js application with Redis**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-caching)\n\n[**Build a Docker image of a Node.js application**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-build-docker)\n\n[**Configure rate limiting on a Node.js REST API with Express**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-api-rate-limiting)\n\n[**Make HTTP requests in a Java application using Spring RestTemplate**](https://github.com/tericcabrel/blog-tutorials/tree/main/spring-httpclient)\n\n[**Build a REST API With Spring Boot and MySQL**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-rest-api)\n\n[**Document a Spring Boot REST API with Swagger and Open API**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-rest-api-swagger)\n\n[**Send email in Node.js using Handlebars and Amazon SES**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-email-ses)\n\n[**Using GraphQL union type in a Node.js application**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-graphql-unions)\n\n[**Schedule background tasks in Node.js with node-cron**](https://github.com/tericcabrel/blog-tutorials/tree/node-cron-job)\n\n[**Validate request body and parameter in a Node.js Express API**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api-validation)\n\n[**My year 2022 in review**](https://blog.tericcabrel.com/year-2022-in-review/)\n\n[**Load balancing a Node.js application with Nginx**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-nginx-load-balancer)\n\n[**How to Scrape Zillow using Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-scrape-zillow)\n\n[**Manage your Docker container with Docker Swarm**](https://github.com/tericcabrel/blog-tutorials/tree/main/docker-swarm)\n\n[**Install RabbitMQ on a Ubuntu Server 22.04 **](https://blog.tericcabrel.com/install-rabbitmq-ubuntu-server/)\n\n[**Asynchronous communication between Node.js applications using RabbiMQ**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rabbitmq)\n\n[**Publish a message to many Node.js applications using RabbitMQ**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rabbitmq-pubsub)\n\n[**Send and receive messages from a Spring boot applications using RabbitMQ**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-rabbitmq)\n\n[**Get the user IP address in a Node.js application with Express**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-ip-address)\n\n[**How to scrape amazon.com with Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-scrape-amazon)\n\n[**Install Node.js using NVM**](https://blog.tericcabrel.com/install-node-with-nvm/)\n\n[**Handle Database data integrity with the Prisma ORM**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-data-integrity)\n\n[**Perform Web scraping in Node.js using a scraping browser**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-scraping-browser)\n\n[**Create a REST API with AWS Lambda and API Gateway using AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-lambda-cdk-rest-api)\n\n[**Automate the deployment of a SpringBoot application using GitHub Actions CI/CD**](https://github.com/tericcabrel/bmi/tree/with-cicd)\n\n[**Set up the GitHub integration for Slack for faster code reviews**](https://blog.tericcabrel.com/github-integration-slack-setup)\n\n[**Host a static website on AWS with S3 and CloudFront**](https://blog.tericcabrel.com/github-integration-slack-setup)\n\n[**Upgrade Node.js using NVM the right way**](https://blog.tericcabrel.com/upgrade-nodejs-version-nvm/)\n\n[**Backup and Restore a MongoDB database**](https://blog.tericcabrel.com/backup-and-restore-mongodb/)\n\n[**Implement JWT authentication in a Spring Boot 3 application**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-jwt-auth)\n\n[**Implement Role-based Access Control in Spring Boot 3**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-rbac-auth)\n\n[**Spring Boot 3 and Docker compose integration**](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-docker-compose)\n\n[**Deploy a Static Website on AWS S3 and CloudFront with AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/aws-cdk-static-website)\n\n[**Retrieve YouTube API v3 key with Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-youtube-api-auth)\n\n[**Retrieve videos using YouTube Data API v3 in Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-youtube-api-data)\n\n[**Install and use the AWS CLI v2 locally**](https://blog.tericcabrel.com/install-aws-cli-v2)\n\n[**Configure a custom domain with SSL on AWS CloudFront**](https://blog.tericcabrel.com/cloudfront-custom-domain-with-ssl)\n\n[**Install and use the AWS SDK v3 in Node.js**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-lambda-sdk)\n\n[**Handle database transactions in Node.js with Prisma ORM**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-transaction)\n\n[**Read environment variables in a Node.js application**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-app-env)\n\n[**Translate texts in Node.js with Amazon Translate**](https://github.com/tericcabrel/blog-tutorials/tree/main/node-aws-translate)\n\n[**Create an OpenID Connect for GitHub with the AWS CDK**](https://github.com/tericcabrel/blog-tutorials/tree/main/github-oidc-aws-cdk)\n\n[**Publish a Docker image to Amazon ECR from a GitHub Actions**](https://github.com/tericcabrel/blog-tutorials/tree/main/github-actions-aws-ecr)\n\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftericcabrel%2Fblog-tutorials","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftericcabrel%2Fblog-tutorials","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftericcabrel%2Fblog-tutorials/lists"}