{"id":42923399,"url":"https://github.com/chef0111/dev4room","last_synced_at":"2026-02-02T13:25:18.055Z","repository":{"id":316171036,"uuid":"1062236855","full_name":"chef0111/dev4room","owner":"chef0111","description":"Dev4Room - Q\u0026A Platform for developers","archived":false,"fork":false,"pushed_at":"2026-01-29T09:03:05.000Z","size":7363,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-29T22:53:18.202Z","etag":null,"topics":["nextjs16","orpc","platform","postgres","react","typescript"],"latest_commit_sha":null,"homepage":"https://dev4room.pro","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/chef0111.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T02:03:09.000Z","updated_at":"2026-01-29T09:02:36.000Z","dependencies_parsed_at":"2025-10-22T03:11:28.357Z","dependency_job_id":"4ec4de68-e6ad-4b86-99ff-8b79fe491904","html_url":"https://github.com/chef0111/dev4room","commit_stats":null,"previous_names":["chef0111/dev4room"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/chef0111/dev4room","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chef0111%2Fdev4room","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chef0111%2Fdev4room/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chef0111%2Fdev4room/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chef0111%2Fdev4room/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chef0111","download_url":"https://codeload.github.com/chef0111/dev4room/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chef0111%2Fdev4room/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28917033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T16:37:38.804Z","status":"ssl_error","status_checked_at":"2026-01-30T16:37:37.878Z","response_time":66,"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":["nextjs16","orpc","platform","postgres","react","typescript"],"created_at":"2026-01-30T18:03:06.549Z","updated_at":"2026-01-30T18:03:44.440Z","avatar_url":"https://github.com/chef0111.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cdiv\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-TypeScript-black?style=for-the-badge\u0026logoColor=white\u0026logo=typescript\u0026color=3178C6\" alt=\"typescript\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-Next_JS-black?style=for-the-badge\u0026logoColor=white\u0026logo=nextdotjs\u0026color=000000\" alt=\"nextdotjs\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-Tailwind_CSS-black?style=for-the-badge\u0026logoColor=white\u0026logo=tailwindcss\u0026color=06B6D4\" alt=\"tailwindcss\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-PostgreSQL-black?style=for-the-badge\u0026logoColor=white\u0026logo=postgresql\u0026color=31648C\" alt=\"postgresql\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-ShadCN_UI-black?style=for-the-badge\u0026logoColor=white\u0026logo=shadcnui\u0026color=000000\" alt=\"shadcnui\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-OpenAI-black?style=for-the-badge\u0026logoColor=white\u0026logo=openai\u0026color=412991\" alt=\"openai\" /\u003e\n  \u003c/div\u003e\n\n  \u003ch1 align=\"center\"\u003eDev4Room\u003c/h1\u003e\n\n   \u003cdiv align=\"center\"\u003e\n     Build a community-driven platform for developers to ask questions, post answers, and get help from other developers.\n    \u003c/div\u003e\n\u003c/div\u003e\n\n## 📋 \u003ca name=\"table\"\u003eTable of Contents\u003c/a\u003e\n\n1. 🤖 [Introduction](#introduction)\n2. ⚙️ [Tech Stack](#tech-stack)\n3. 🔋 [Features](#features)\n4. 🤸 [Quick Start](#quick-start)\n5. 🗄️ [Database Setup](#database-setup)\n6. 🔗 [Assets](#links)\n\n## \u003ca name=\"introduction\"\u003e🤖 Introduction\u003c/a\u003e\n\nDev4Room is a community-driven Q\u0026A platform for developers, inspired by StackOverflow but enhanced with modern features like AI-powered answers, semantic search, and gamification. Built with Next.js 16, this full-stack application demonstrates production-ready patterns using the latest App Router features, Server Components, and type-safe APIs.\n\nThe platform enables developers to ask questions, post answers, leverage AI for answer generation and enhancement, vote on content, organize saved questions, and discover content through semantic search. Users can build their reputation through contributions, earn badges for achievements, and engage with a gamified system that rewards active participation.\n\nThe project uses PostgreSQL with Neon for the database layer, Better-Auth for flexible authentication (Email/Password, GitHub, Google OAuth), and pgvector for AI-powered semantic search. The codebase is organized with a clean separation of concerns—server procedures handle business logic, components manage UI, and services encapsulate complex operations like vector embeddings and indexing. Type safety is maintained throughout with oRPC for end-to-end type-safe API calls, Zod for validation, and TypeScript for compile-time safety.\n\n## \u003ca name=\"tech-stack\"\u003e⚙️ Tech Stack\u003c/a\u003e\n\n- Next.js\n- Better-Auth\n- oRPC\n- Arcjet\n- PostgreSQL\n- Neon\n- Zod\n- OpenAI\n- ShadCN UI\n- TypeScript\n- TailwindCSS\n\n## \u003ca name=\"features\"\u003e🔋 Features\u003c/a\u003e\n\n### Authentication \u0026 User Management\n\n- **Email/Password Authentication** - Secure registration and login with email verification\n- **OAuth Integration** - Sign in with Google or GitHub\n- **Password Management** - Forgot password and reset functionality with OTP verification\n- **User Profiles** - Customizable profiles with name, username, portfolio link, location, and bio\n- **User Statistics** - Track questions, answers, reputation points, and badges\n\n### Questions\n\n- **Create Questions** - Post questions with markdown support and tag association\n- **Edit \u0026 Delete** - Full CRUD operations for questions\n- **Question Details** - View detailed question pages with answers, author info, and metrics\n- **Pagination \u0026 Filtering** - Browse questions with pagination and search filters\n- **Top Questions** - Discover trending questions sorted by views and upvotes\n- **View Tracking** - Automatic view count tracking for questions\n\n### Answers\n\n- **Post Answers** - Answer questions with rich markdown formatting\n- **Edit \u0026 Delete** - Manage your answers with full editing capabilities\n- **AI-Powered Answers** - Generate and enhance answers using OpenAI\n- **Answer Validation** - AI validates answer relevance before enhancement\n- **Pagination** - Navigate through answers with pagination support\n\n### Tags\n\n- **Tag System** - Categorize questions with tags\n- **Tag Pages** - Browse questions by specific tags\n- **Popular Tags** - Discover trending tags in the community\n- **Tag Filtering** - Filter questions by tags\n\n### Voting System\n\n- **Upvote/Downvote** - Vote on questions and answers\n- **Vote Status** - Check your voting status on any content\n- **Reputation Impact** - Votes contribute to user reputation\n\n### Collections (Bookmarks)\n\n- **Save Questions** - Bookmark questions for later reference\n- **Collection Management** - View and manage your saved questions\n- **Toggle Save** - Easily add or remove questions from collections\n\n### Search\n\n- **Semantic Search** - AI-powered semantic search using pgvector and OpenAI embeddings\n- **Global Command Menu** - Quick search with `Cmd+K` (Mac) or `Ctrl+K` (Windows)\n- **Multi-Entity Search** - Search across questions, answers, tags, and users\n- **Similarity-Based Results** - Results ranked by semantic similarity\n- **Real-time Search** - Debounced search with instant results\n\n### AI Features\n\n- **AI Answer Generation** - Generate answers using OpenAI\n- **Answer Enhancement** - Improve and format your answers with AI assistance\n- **Relevance Validation** - AI validates that answers are related to questions\n- **Markdown Formatting** - AI-generated answers include proper markdown formatting\n\n### Reputation \u0026 Badges\n\n- **Reputation Points** - Earn reputation through questions, answers, and votes\n- **Badge System** - Unlock Gold, Silver, and Bronze badges based on:\n  - Question count\n  - Answer count\n  - Question upvotes\n  - Answer upvotes\n  - Total views\n\n### User Interface\n\n- **Responsive Design** - Fully responsive layout for all devices\n- **Dark Mode** - Seamless dark/light theme switching\n- **Command Menu** - Quick navigation and search with keyboard shortcuts\n- **Markdown Editor** - Rich markdown editor for questions and answers\n- **Code Highlighting** - Syntax highlighting for code blocks\n- **Loading States** - Smooth loading indicators throughout the app\n- **Error Handling** - Comprehensive error handling with user-friendly messages\n\n## \u003ca name=\"quick-start\"\u003e🤸 Quick Start\u003c/a\u003e\n\nFollow these steps to set up the project locally on your machine.\n\n**Prerequisites**\n\nMake sure you have the following installed on your machine:\n\n- [Git](https://git-scm.com/)\n- [Node.js](https://nodejs.org/en)\n- [npm](https://www.npmjs.com/) (Node Package Manager)\n\n**Cloning the Repository**\n\n```bash\ngit clone https://github.com/chef0111/dev4room.git\ncd dev4room\n```\n\n**Installation**\n\nInstall the project dependencies using bun:\n\n```bash\n# Install bun if not installed\ncurl -fsSL https://bun.sh/install | bash        # Linux \u0026 macOS\npowershell -c \"irm bun.sh/install.ps1 | iex\"    # Windows\n\n# Install dependencies\nbun install\n```\n\n**Set Up Environment Variables**\n\nCreate a new file named `.env` in the root of your project and add the following content:\n\n```env\nNEXT_PUBLIC_APP_URL=\n\n# Better-Auth\nBETTER_AUTH_SECRET=\nBETTER_AUTH_URL=\n\n# Google OAuth\nGOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# GitHub OAuth\nGITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Resend\nRESEND_API_KEY=\nRESEND_FROM_EMAIL=\n\n# Database\nDATABASE_URL=\n\n# Arcjet\nARCJET_KEY=\n\n# OpenAPI\nOPENAI_API_KEY=\n\nEMBEDDING_MODEL=\nEMBEDDING_DIMENSIONS=\n```\n\nReplace the placeholder values with your actual credentials. You can obtain these credentials by signing up on the respective websites\n\n## 🗄️ \u003ca name=\"database-setup\"\u003eDatabase Setup\u003c/a\u003e\n\nThis project uses PostgreSQL hosted on Neon for the database, with Drizzle ORM for schema management.\n\n### Cloud Database Setup (Neon)\n\n1. Sign up for a free account at [Neon](https://neon.tech/).\n2. Create a new project in your Neon dashboard.\n3. Obtain the connection string from your project settings.\n4. Set the `DATABASE_URL` environment variable in your `.env` file to this connection string.\n\nTo manage your Neon project via terminal, install neonctl:\n\n```bash\nbun install -g neonctl\n```\n\nAuthenticate with Neon:\n\n```bash\nneonctl auth login\n```\n\nTo open your Neon project in the browser via terminal:\n\n```bash\nneonctl projects open \u003cproject-id\u003e\n```\n\nReplace `\u003cproject-id\u003e` with your project's ID (found in the Neon dashboard or extract from your `DATABASE_URL` after the '@' and before the first '.').\n\n5. Push the database schema to the cloud:\n\n```bash\nbun run db:push\n```\n\nThis will create the necessary tables and indexes in your Neon database.\n\n**Running the Project**\n\n```bash\nbun run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser to view the project.\n\n## \u003ca name=\"links\"\u003e🔗 Assets\u003c/a\u003e\n\nAssets used in the project can be found [here](https://drive.google.com/file/d/18Lx36LFiQrAhuhmcQYDzG3FgQMCjwXdX/view?usp=sharing)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchef0111%2Fdev4room","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchef0111%2Fdev4room","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchef0111%2Fdev4room/lists"}