{"id":20407208,"url":"https://github.com/lissone/tech-lound","last_synced_at":"2026-04-07T08:31:36.930Z","repository":{"id":41133241,"uuid":"480109935","full_name":"Lissone/tech-lound","owner":"Lissone","description":"Online technology course platform.","archived":false,"fork":false,"pushed_at":"2024-10-02T23:20:14.000Z","size":743,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-21T03:30:05.650Z","etag":null,"topics":["apollo","auth0","codegen","graphql","kafka","nestjs","nextjs","prisma","tailwindcss","typescript","yarn-workspaces"],"latest_commit_sha":null,"homepage":"","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/Lissone.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":"2022-04-10T18:49:14.000Z","updated_at":"2024-10-02T23:20:18.000Z","dependencies_parsed_at":"2025-01-15T11:57:36.177Z","dependency_job_id":"59d34693-02bb-46a9-9dfa-34c353d95682","html_url":"https://github.com/Lissone/tech-lound","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Lissone/tech-lound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-lound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-lound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-lound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-lound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lissone","download_url":"https://codeload.github.com/Lissone/tech-lound/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-lound/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31506562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apollo","auth0","codegen","graphql","kafka","nestjs","nextjs","prisma","tailwindcss","typescript","yarn-workspaces"],"created_at":"2024-11-15T05:22:09.146Z","updated_at":"2026-04-07T08:31:36.915Z","avatar_url":"https://github.com/Lissone.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" justify=\"center\"\u003e\n  \u003cimg alt=\"tech-lound logo\" src=\"https://tailwindui.com/img/logos/workflow-mark-teal-200-cyan-400.svg\" width=\"25px\"\u003e\n  TechLound\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#description\"\u003eDescription\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#requirements\"\u003eRequirements\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#technologies\"\u003eTechnologies\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/static/v1?label=license\u0026message=MIT\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/repo-size/Lissone/tech-lound\" alt=\"Repo size\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/top/Lissone/tech-lound\" alt=\"Top lang\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/Lissone/tech-lound\" alt=\"Stars repo\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/forks/Lissone/tech-lound\" alt=\"Forks repo\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues-pr/Lissone/tech-lound\" alt=\"Pull requests\" \u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/Lissone/tech-lound\" alt=\"Last commit\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Lissone/tech-lound/issues\"\u003eReport bug\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/Lissone/tech-lound/issues\"\u003eRequest feature\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n## Description\n\nThe project is a **platform for programming courses**, divided into microservices with the idea of ​​separating business rules from the application and atomizing their processes.\n\nThe services communicate using **Apache Kafka** as Message Broker, and are integrated into a third service called **gateway**, which joins the purchases and classroom api using **Apollo Gateway** so that only one End-Point is needed to be consumed by the Front End, and application authentication is done using **Auth0**.\n\nThis project was developed for me to learn more about GraphQL, Apollo, Kafka and Docker. It was my **first contact with these technologies**, and I really enjoyed developing this project with them. I intend to use GraphQL in more projects that I will create in the future and this project was the basis for my knowledge of the technology.\n\nI created an **Application Flow** to facilitate the understanding of the integration and union between the services:\n\n\u003cimg src=\"./.github/application-flow.png\" alt=\"Application Flow\" width=\"100%\" height=\"100%\"/\u003e\n\n## Requirements\n\n- [Nodejs](https://nodejs.org/en/)\n- [Docker](https://www.docker.com/)\n- [Npm](https://www.npmjs.com/)\n- [Yarn](https://yarnpkg.com/)\n\n## Technologies\n\n- Yarn Workspaces\n- Typescript\n- NestJs\n- GraphQL\n- Apollo Federation\n- Apollo Gateway\n- Apache Kafka\n- Prisma\n- PostgreSQL\n- Next.js\n- Auth0\n- Apollo Client\n- Codegen\n- TailwindCss\n- Eslint\n  - Airbnb-config with another pessoal rules\n  - Import helpers plugin\n- Prettier\n- Commitlint\n  - Commitizen\n\n## Usage\n\nYou can clone it on your pc using the command:\n\n```bash\ngit clone https://github.com/Lissone/tech-lound.git\ncd tech-lound\n```\n\n\u003e  ❗  You must have **Docker installed** on your machine to get the container up.\n**Up Kafka and Postgres services** in a **Docker container** on your local machine using:\n\n```bash\ndocker-compose up -d\n# View all running containers\ndocker ps\n```\n\n\u003e❗  As the application authentication was performed by a third-party service (**Auth0**), **it is necessary to configure it through the technology website**, accessing this [link](https://manage.auth0.com/dashboard). There you will get all the missing environment variables.\n\n\u003e❗  It is necessary to **configure the environment variables of each of the projects**, access the individual **.env.example** file of each of the projects to facilitate the addition.\n\nInstall dependencies using:\n\n```bash\nyarn\n#or\nnpm install\n```\n\n**Generate the Prisma Client** on the two services that use Prisma, using:\n\n```bash\n# Purchases service\nyarn purchases:prisma\n# Classroom service\nyarn classroom:prisma\n# or using npm\n```\n\nRun **Purchases service**:\n\n```bash\n# Use a dedicated terminal \nyarn dev:purchases\n#or\nnpm run dev:purchases\n```\n\nRun **Classroom service**:\n\n```bash\n# Use a dedicated terminal \nyarn dev:classroom\n#or\nnpm run dev:classroom\n```\n\nRun **Gateway service**:\n\n```bash\n# Use a dedicated terminal \nyarn dev:gateway\n#or\nnpm run dev:gateway\n```\n\nRun **Web**:\n\n```bash\n# Use a dedicated terminal \nyarn dev:web\n#or\nnpm run dev:web\n```\n\n\u003e ℹ️  You can **view the database** from Prisma Studio on the two services that use Prisma, using:\n\n```bash\n# Purchases / Classroom service\nyarn prisma-studio\n#or\nnpm run prisma-studio\n```\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n\u003ch4 align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/Lissone\" target=\"_blank\"\u003eLissone\u003c/a\u003e\n\u003c/h4\u003e\n\n\u003chr /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissone%2Ftech-lound","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flissone%2Ftech-lound","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissone%2Ftech-lound/lists"}