{"id":20407199,"url":"https://github.com/lissone/tech-talks-api","last_synced_at":"2026-04-09T15:52:06.678Z","repository":{"id":244595991,"uuid":"814365353","full_name":"Lissone/tech-talks-api","owner":"Lissone","description":"TechTalks is a discussion forum API focused on software technologies.","archived":false,"fork":false,"pushed_at":"2024-10-03T23:02:04.000Z","size":1252,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T02:28:28.117Z","etag":null,"topics":["cloudflare","dayjs","eslint","fakerjs","jwt","nestjs","nodejs","postgresql","prettier","prisma","redis","supertest","typescript","vitest","zod"],"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":"2024-06-12T21:45:16.000Z","updated_at":"2024-10-03T23:02:07.000Z","dependencies_parsed_at":"2024-06-15T23:27:36.078Z","dependency_job_id":"0d79deff-e764-4852-a071-a60f9825a49e","html_url":"https://github.com/Lissone/tech-talks-api","commit_stats":null,"previous_names":["lissone/tech-talks-nest-api"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Lissone/tech-talks-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-talks-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-talks-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-talks-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-talks-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lissone","download_url":"https://codeload.github.com/Lissone/tech-talks-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissone%2Ftech-talks-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265570859,"owners_count":23789967,"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":["cloudflare","dayjs","eslint","fakerjs","jwt","nestjs","nodejs","postgresql","prettier","prisma","redis","supertest","typescript","vitest","zod"],"created_at":"2024-11-15T05:22:03.570Z","updated_at":"2025-12-30T19:55:23.560Z","avatar_url":"https://github.com/Lissone.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  TechTalks API\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\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-talks-api\" alt=\"Repo size\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/top/Lissone/tech-talks-api\" alt=\"Top lang\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/Lissone/tech-talks-api\" alt=\"Stars repo\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/forks/Lissone/tech-talks-api\" alt=\"Forks repo\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues-pr/Lissone/tech-talks-api\" alt=\"Pull requests\" \u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/Lissone/tech-talks-api\" alt=\"Last commit\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Lissone/tech-talks-api/issues\"\u003eReport bug\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/Lissone/tech-talks-api/issues\"\u003eRequest feature\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n## Description\n\nTechTalks is a discussion forum API focused on software technologies, where users can create topics, respond to questions, and share knowledge. This project was a great opportunity for me to dive deep into Domain-Driven Design (DDD) and build a clean, well-organized architecture with NestJs.\n\nThis project was special to me for several reasons. It was my first experience using Cloudflare for file uploads, which brought new challenges but also valuable learnings. Additionally, it was the first time I worked with such a complex and well-structured architecture, something that truly motivated me to continue exploring this approach in future projects.\n\nI made sure to maintain highly tested and reliable code. With that in mind, I implemented a wide range of unit tests and end-to-end (E2E) tests, resulting in excellent test coverage that ensures the quality and robustness of the application.\n\n## Requirements\n\n- [Nodejs](https://nodejs.org/en/)\n- [Npm](https://www.npmjs.com/)\n- [Pnpm](https://pnpm.io/pt/)\n- [Docker](https://www.docker.com/)\n\n## Technologies\n\n- Nodejs\n- Typescript\n- NestJs\n- Prisma\n- Postgresql\n- Redis\n- Cloudflare / AWS\n- Zod\n- FakerJs\n- Vitest\n- Supertest\n- Eslint\n  - @rockeseat/eslint-config\n- Prettier\n\n## Usage\n\nYou can clone it on your pc using the command:\n\n```bash\ngit clone https://github.com/Lissone/tech-talks-api.git\ncd tech-talks-api\n```\n\n### Add environment variables\n\n```bash\n# .\\.env\n\n# App\nPORT=3333\n\n# Jwt\nJWT_PRIVATE_KEY=\nJWT_PUBLIC_KEY=\n\n# Database\nDATABASE_URL=\"postgresql://docker:docker@localhost:5432/tech-talks?schema=public\"\n\n# Redis\nREDIS_HOST=\"127.0.0.1\"\nREDIS_PORT=6379\nREDIS_DB=0\n\n# Cloudflare / AWS\nCLOUDFLARE_ACCOUNT_ID=\nAWS_BUCKET_NAME=tech-talks\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n```\n\n### Install dependencies\n\n```bash\npnpm install\n#or\nnpm install\n```\n\n\u003e  ❗  You must have **Docker installed** on your machine to get the container up.\n**Up Postgresql and Redis 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### Run migrations\n\nYou need to run a prisma script command to run all current migrations:\n\n```bash\nnpx prisma migrate dev\n```\n\n### Run project\n\n```bash\npnpm start:dev\n#or\nnpm run start:dev\n```\n\n\u003e ℹ️  You can **view the database** from Prisma Studio on the two services that use Prisma, using:\n\n```bash\npnpm 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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissone%2Ftech-talks-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flissone%2Ftech-talks-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissone%2Ftech-talks-api/lists"}