{"id":29353690,"url":"https://github.com/talvanes/letmeask-api","last_synced_at":"2026-04-11T01:14:24.570Z","repository":{"id":303669869,"uuid":"1016289942","full_name":"talvanes/LetMeAsk-API","owner":"talvanes","description":"[NLW #20 Agents] Let Me Ask (API): An AI agent that answers user questions in real time.","archived":false,"fork":false,"pushed_at":"2025-07-08T19:56:03.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-08T20:38:51.405Z","etag":null,"topics":["docker","docker-compose","node","nodejs","postgres","postgresql","typescript","zod","zod-validation"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/talvanes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2025-07-08T19:25:04.000Z","updated_at":"2025-07-08T19:58:04.000Z","dependencies_parsed_at":"2025-07-08T20:51:55.721Z","dependency_job_id":null,"html_url":"https://github.com/talvanes/LetMeAsk-API","commit_stats":null,"previous_names":["talvanes/letmeask-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/talvanes/LetMeAsk-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talvanes%2FLetMeAsk-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talvanes%2FLetMeAsk-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talvanes%2FLetMeAsk-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talvanes%2FLetMeAsk-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/talvanes","download_url":"https://codeload.github.com/talvanes/LetMeAsk-API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/talvanes%2FLetMeAsk-API/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264379216,"owners_count":23598824,"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":["docker","docker-compose","node","nodejs","postgres","postgresql","typescript","zod","zod-validation"],"created_at":"2025-07-09T02:08:55.836Z","updated_at":"2026-04-11T01:14:24.563Z","avatar_url":"https://github.com/talvanes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LetMeAsk (API)\n\n**NLW #20 Rocketseat – Agents Edition**\n\nLetMeAsk (API) is a modern, scalable backend service built during the NLW #20 Rocketseat event (July 2025), focused on real-time Q\u0026A for live streaming and interactive platforms. This project leverages the latest Node.js ecosystem, TypeScript, and best practices in backend design, providing a robust API for managing rooms and questions, powered by PostgreSQL and Drizzle ORM.\n\n## 🚀 About NLW #20 Rocketseat\n\nThis project was developed as part of the NLW (Next Level Week) #20 event by Rocketseat, themed \"Agents\". The event brings together thousands of developers to build innovative, production-ready applications using cutting-edge technologies and modern software engineering practices.\n\n## 🛠️ Tech Stack\n\n- **Node.js** (v18+)\n- **TypeScript**\n- **Fastify** (high-performance HTTP server)\n- **PostgreSQL** (relational database)\n- **Drizzle ORM** (type-safe SQL ORM)\n- **Zod** (runtime schema validation)\n- **Docker** (for local development and database)\n- **CORS** (secure cross-origin requests)\n\n## 🏗️ Design \u0026 Architecture\n\n- **Modular Structure:** Clear separation of concerns (routes, schema, migrations, seed, env, etc.)\n- **Type Safety:** End-to-end type safety using TypeScript and Zod\n- **Environment Management:** All config via `.env` and validated with Zod\n- **Database Migrations \u0026 Seeding:** Versioned migrations and easy seeding for reproducible environments\n- **RESTful API:** Organized route handlers under `src/http/routes/`\n- **Health Check:** `/health` endpoint for monitoring\n\n## 📁 Project Structure\n\n- `src/server.ts` – Fastify server entry point\n- `src/env.ts` – Environment variable validation\n- `src/db/connection.ts` – PostgreSQL connection via Drizzle\n- `src/db/seed.ts` – Database seeding script\n- `src/db/migrations/` – SQL migration files\n- `src/db/schema/` – Drizzle ORM schema definitions\n- `src/http/routes/` – API route handlers (e.g., `get-rooms.ts`)\n\n## ⚙️ Getting Started\n\n### Prerequisites\n- Node.js v18 or higher\n- npm\n- Docker (for local PostgreSQL)\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd \u003crepository-folder\u003e\n   ```\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Copy and configure your environment variables:\n   ```bash\n   cp .env.example .env\n   # Edit .env as needed\n   ```\n4. Start the PostgreSQL database with Docker:\n   ```bash\n   docker-compose up -d\n   ```\n5. Run database migrations:\n   ```bash\n   npm run db:migrate\n   ```\n6. (Optional) Seed the database:\n   ```bash\n   npm run db:seed\n   ```\n\n### Development\n\nStart the development server:\n```bash\nnpm run dev\n```\nThe server will run on the port specified in `.env` (default: 3333).\n\n### Deployment\n\nBuild and start the server for production:\n```bash\nnpm run build\nnpm start\n```\n\n## 🔑 Environment Variables\n\nCreate a `.env` file with:\n- `PORT` – Server port (default: 3333)\n- `DATABASE_URL` – PostgreSQL connection string\n\n## 🧩 Features\n\n- Real-time Q\u0026A API for live streaming\n- Modular, type-safe backend\n- Health check endpoint (`/health`)\n- Database migrations and seeding\n- Secure CORS configuration\n- Ready for Dockerized environments\n\n## 📚 Example API Endpoints\n\n- `GET /health` – Health check\n- `GET /rooms` – List all rooms\n- (Extend with more endpoints as needed)\n\n## 🤝 Contributing\n\nPull requests and issues are welcome! This project is a learning resource and a foundation for further development.\n\n## 📜 License\n\nThis project is licensed under the [WTFPL](LICENSE) (Do What The F*ck You Want To Public License).\n\n---\n\nBuilt with ❤️ during NLW #20 by Rocketseat and the open source community.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalvanes%2Fletmeask-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftalvanes%2Fletmeask-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalvanes%2Fletmeask-api/lists"}