{"id":20314128,"url":"https://github.com/samuel-ricardo/tutorialls_api","last_synced_at":"2026-06-09T05:05:01.001Z","repository":{"id":254371438,"uuid":"846328743","full_name":"Samuel-Ricardo/Tutorialls_API","owner":"Samuel-Ricardo","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-02T17:44:32.000Z","size":5775,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T12:43:32.691Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tutorialls-api-sha256.onrender.com/","language":"TypeScript","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/Samuel-Ricardo.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":"2024-08-23T01:27:54.000Z","updated_at":"2024-09-02T17:44:35.000Z","dependencies_parsed_at":"2025-01-08T01:00:29.177Z","dependency_job_id":null,"html_url":"https://github.com/Samuel-Ricardo/Tutorialls_API","commit_stats":null,"previous_names":["samuel-ricardo/tutorialls_api"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FTutorialls_API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FTutorialls_API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FTutorialls_API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FTutorialls_API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Samuel-Ricardo","download_url":"https://codeload.github.com/Samuel-Ricardo/Tutorialls_API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241818840,"owners_count":20025206,"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":[],"created_at":"2024-11-14T18:14:05.111Z","updated_at":"2026-06-09T05:04:55.964Z","avatar_url":"https://github.com/Samuel-Ricardo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tutorialls API\n\n![363455571-245de160-69be-4ba8-ba59-23ecb592c169](https://github.com/user-attachments/assets/5ab4c18b-cb1e-4acc-9d26-24ff050b796f)\n\n\u003ch4 align=\"center\" \u003e🚀 🟩 Emlpoyee Dashboard 🟩 🚀\u003c/h4\u003e\n\n\u003ch4 align=\"center\"\u003e\n  Application developed for explore my dev skills\n\u003c/h4\u003e\n\n#\n\n\u003cp align=\"center\"\u003e\n  |\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#project\"\u003eOverview\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#techs\"\u003eTechnologies\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#app\"\u003eProject\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#run-project\"\u003eRun\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#author\"\u003eAuthor\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003c/p\u003e\n\n#\n\n\u003ch1 align=\"center\"\u003e\n  \n  \u003ca href=\"https://github.com/Samuel-Ricardo\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=GITHUB\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca herf=\"https://www.instagram.com/samuel_ricardo.ex/\"\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel.ex\u0026color=black\u0026style=for-the-badge\u0026logo=instagram'/\u003e \n  \u003c/a\u003e\n\n  \u003ca herf='https://www.linkedin.com/in/samuel-ricardo/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=LinkedIn'/\u003e \n  \u003c/a\u003e\n\n\u003c/h1\u003e\n\n\u003cbr\u003e\n\n\u003cp id=\"project\"/\u003e\n\n\u003cbr\u003e\n\n\u003ch2\u003e  | :artificial_satellite: About:  \u003c/h2\u003e\n\n\u003cp align=\"justify\"\u003e\nThis is a full stack tutorial platform that allows you to consume tutorials and search with filters, being able to delete them, edit them or register new tutorials using the best programming practices and clean code, such as Clean Architecture and Hexagonal Architecture.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n🔭 | FRONTEND Repository: [[Tutorialls-API](https://github.com/Samuel-Ricardo/Tutorialls_API)] \u003cbr\u003e\n📡 | Hosted on Render: [[https://tutorialls-api-sha256.onrender.com/](https://tutorialls-api-sha256.onrender.com/)] \u003cbr\u003e\n🗃️ | PostgreSQL: Hosted on [[Render](https://render.com/)] \u003cbr\u003e\n🟥 | Redis: Hosted on [[Render](https://render.com/)] \u003cbr\u003e\n🐇 | RabbitMQ: Hosted on [[CloudAMQP](https://www.cloudamqp.com/)] \u003cbr\u003e\n📑 | Documentation: [[Swagger](https://tutorialls-api-sha256.onrender.com/api/docs)]\n\n\u003cbr\u003e\n\n#\n\n\u003cbr\u003e\n\n\u003ch2 id=\"techs\"\u003e\n  :building_construction: | Technologies and Concepts Studied:\n\u003c/h2\u003e\n\n\u003e \u003ca href='https://nextjs.org/'\u003e \u003cimg width=\"128px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/nestjs/nestjs-original.svg\" /\u003e \u003c/a\u003e\n\n- NestJS\n- RabbitMQ\n- Redis\n- Cryptography\n- JWT\n- NodeJS\n- ExpressJS\n- Typescript\n- PostgreSQL\n- Jest\n- Prisma\n- Docker\n- Inversify\n- Zod\n- Validations\n- Swagger\n- eslint\n- Prettier\n- husky\n- lint-staged\n- Clean Architeture\n- Scalability\n\n\u003e Among Others...\n\n#\n\n\u003cbr\u003e\n\n\u003ch2 id=\"app\"\u003e\n  💻 | Application:\n\u003c/h2\u003e\n\n\u003cbr\u003e\n\n\u003ch3\u003e\n  📑 | Docs: Swagger\n\u003c/h3\u003e\n\n\n![image](https://github.com/user-attachments/assets/77b9ec7c-00d1-459c-a6b6-da42ecc16031)\n\n- 📑 | Documentation: [[Swagger](https://tutorialls-api-sha256.onrender.com/api/docs)]\n\n\n\u003cbr\u003e\n\n\u003ch3\u003e\n  💾 | Database: [PostgreSQL]\n\u003c/h3\u003e\n\n![361464616-21ce644e-f549-44a0-89a3-973b8a0a0add](https://github.com/user-attachments/assets/ba6819a3-e7ee-4805-916a-4ddc08f896da)\n\n\u003cbr\u003e\n\n### Overview\n\nA Applicação conta com um sistema de autenticação via JWT e middlewares que fazem a validação dos dados e proteção de rotas específicas, as queries são cacheadas com Redis e todas as mutações na entidade \"tutorial\" resultam em um evento emitido para o RabbitMQ.\n\n\n### 📊 | Performance\n\n![image](https://github.com/user-attachments/assets/a85a3f12-b61b-4358-9d94-9bd7f3c04f4a)\n\n![image](https://github.com/user-attachments/assets/a9117d2c-1209-4a39-9299-ea3b836a446f)\n\n\u003cbr\u003e\n\n\u003ch2 id=\"run-project\"\u003e \n   👨‍💻 | How to use\n\u003c/h2\u003e\n\n\u003cbr\u003e\n\n### Open your Git Terminal and clone this repository\n\n```git\n  $ git clone \"git@github.com:Samuel-Ricardo/Tutorialls_API.git\"\n```\n\n### Make Pull\n\n```git\n  $ git pull \"git@github.com:Samuel-Ricardo/Tutorialls_API.git\"\n```\n\n\u003cbr\u003e\n\nThis application use `Docker` so you dont need to install and cofigurate anything other than docker on your machine.\n\n\u003e \u003ca target=\"_blank\" href=\"https://www.docker.com/\"\u003e \u003cimg width=\"48px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/docker/docker-plain-wordmark.svg\" /\u003e \u003c/a\u003e\n\n\u003cbr\u003e\n\n- Navigate to project folder `$ cd ./tutorialls/` \n\n\u003cbr\u003e\n\n- Create a `.env` file based on .env.*.example files\n\n- Now run it using `docker-compose`\n\n```bash\n\n  # After setup docker environment just run this commmand on root project folder:\n\n  $ docker-compose up --build   # For First Time run this command\n\n  $ docker-compose up           # to run project\n\n\n```\n\n```bash\n\n  #Apps Running on:\n\n  $ API: http://localhost:3000\n\n  $ POSTGRESQL: http://localhost:27017 | [DATABASE]\n  $ PGADMIN: http://localhost:5050/    | [DB DASHBOARD]\n\n  $ RABBITMQ: http://localhost:15672/  | [MQ DASHBOARD]\n  $ REDIS: 6379                        | [CACHE] \n\n  See more: ./tutorialls/docker-compose.yaml\n\n```\n\n\u003cbr\u003e\n\nYou also can use the Docker Image:\n\n```docker\n$ docker pull ghcr.io/samuel-ricardo/tutorialls_api:main\n```\n\n```Dockerfile\n$ FROM ghcr.io/samuel-ricardo/tutorialls_api:main\n\n```\n\n#\n\n\u003cbr\u003e\n\n\u003ch2 id=\"author\"\u003e\n  :octocat: | Author:  \n\u003c/h2\u003e\n\n\u003e \u003ca target=\"_blank\" href=\"https://www.linkedin.com/in/samuel-ricardo/\"\u003e \u003cimg width=\"350px\" src=\"https://github.com/Samuel-Ricardo/bolao-da-copa/blob/main/readme_files/IMG_20220904_220148_188.jpg?raw=true\"/\u003e \u003cbr\u003e \u003cp\u003e \u003cb\u003e - Samuel Ricardo\u003c/b\u003e \u003c/p\u003e\u003c/a\u003e\n\n\u003ch1\u003e\n  \u003ca herf='https://github.com/Samuel-Ricardo'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=GITHUB'\u003e \n  \u003c/a\u003e\n  \n  \u003ca herf='https://www.instagram.com/samuel_ricardo.ex/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel.ex\u0026color=black\u0026style=for-the-badge\u0026logo=instagram'\u003e \n  \u003c/a\u003e\n  \n  \u003ca herf='https://twitter.com/SamuelR84144340'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=twitter'\u003e \n  \u003c/a\u003e\n  \n   \u003ca herf='https://www.linkedin.com/in/samuel-ricardo/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=LinkedIn'\u003e \n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-ricardo%2Ftutorialls_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuel-ricardo%2Ftutorialls_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-ricardo%2Ftutorialls_api/lists"}