{"id":27314089,"url":"https://github.com/ajay2002bb/techtalk-hub","last_synced_at":"2026-04-10T07:05:15.264Z","repository":{"id":287344355,"uuid":"964431194","full_name":"Ajay2002bb/TechTalk-Hub","owner":"Ajay2002bb","description":"A MERN stack project for tech discussions and community engagement. Fullstack TechTalk-Hub(Stack Overflow clone) (QnA site) made with MERN + GraphQL","archived":false,"fork":false,"pushed_at":"2025-04-11T08:06:28.000Z","size":2614,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T09:54:27.170Z","etag":null,"topics":["express","full-stack","graphql","mern","mongodb","node","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Ajay2002bb.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}},"created_at":"2025-04-11T07:49:28.000Z","updated_at":"2025-04-11T08:10:46.000Z","dependencies_parsed_at":"2025-04-11T09:55:13.940Z","dependency_job_id":"c5212dde-0756-4088-b072-7698777fca48","html_url":"https://github.com/Ajay2002bb/TechTalk-Hub","commit_stats":null,"previous_names":["ajay2002bb/techtalk-hub"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ajay2002bb%2FTechTalk-Hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ajay2002bb%2FTechTalk-Hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ajay2002bb%2FTechTalk-Hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ajay2002bb%2FTechTalk-Hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ajay2002bb","download_url":"https://codeload.github.com/Ajay2002bb/TechTalk-Hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248536309,"owners_count":21120681,"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":["express","full-stack","graphql","mern","mongodb","node","react"],"created_at":"2025-04-12T07:39:19.893Z","updated_at":"2026-04-10T07:05:15.257Z","avatar_url":"https://github.com/Ajay2002bb.png","language":"JavaScript","readme":"# TechTalk-Hub | SOF Clone | MERN-GraphQL\n\nFullstack [Stack Overflow](https://stackoverflow.com/) clone (QnA site) made with MERN + GraphQL\n\n## Built using\n\n#### Front-end\n\n- [ReactJS](https://reactjs.org/) - Frontend framework\n- [Apollo Client](https://www.apollographql.com/docs/react/) - State management library to manage both local and remote data with GraphQL\n- [Context API w/ hooks](https://reactjs.org/docs/context.html) - For state of user, toast notifs, theme etc.\n- [React Router](https://reactrouter.com/) - For general routing \u0026 navigation\n- [React Hook Form](https://react-hook-form.com/) - For flexible forms\n- [Material-UI w/ lots of CSS customisations](https://material-ui.com/) - UI library\n- [Yup](https://github.com/jquense/yup) - For form validation\n- [date-fns](https://date-fns.org/) - For manipulating \u0026 formatting of dates\n\n#### Back-end\n\n- [Node.js](https://nodejs.org/en/) - Runtime environment for JS\n- [Apollo Server](https://www.apollographql.com/docs/apollo-server/) - To build a self-documenting GraphQL API server\n- [MongoDB](https://www.mongodb.com/) - Database to store document-based data\n- [Mongoose](https://mongoosejs.com/) - MongoDB object modeling for Node.js\n- [JSON Web Token](https://jwt.io/) - A standard to secure/authenticate HTTP requests\n- [Bcrypt.js](https://www.npmjs.com/package/bcryptjs) - For hashing passwords\n- [Mongoose Unique Validator](https://www.npmjs.com/package/mongoose-unique-validator) - Plugin for better error handling of unique fields within Mongoose schema\n- [Dotenv](https://www.npmjs.com/package/dotenv) - To load environment variables from a .env file\n\n## Features\n\n- **Authentication**: Login and register with a username and password using JWT-based authentication.\n- **CRUD Operations**: Users can create, read, update, and delete questions, answers, and comments.\n- **Upvote/Downvote**: Ability to upvote or downvote both questions and answers to manage content quality.\n- **Tagging**: Organize questions using tags for better categorization and navigation.\n- **Page Views**: Each question page registers a page view when opened, helping track content engagement.\n- **Sorting**: Sort questions based on:\n  - Hot (most upvoted and active questions)\n  - Votes (questions with the most votes)\n  - Views (questions with the most views)\n  - Newest (most recently asked questions)\n  - Oldest (questions listed by creation date)\n- **Search Functionality**: Search questions over the server based on question title and body text.\n- **Pagination**: Questions are paginated with a \"Load More\" button to load more posts dynamically.\n- **Error Handling**: Graceful error management to prevent app crashes and provide helpful feedback.\n- **Toast Notifications**: Real-time toast notifications for actions like adding questions, deleting comments, etc.\n- **Loading Spinners**: Visible spinners during data fetching processes for better user experience.\n- **Formatted Dates**: Display questions, answers, and comments with human-readable formatted dates (e.g., \"2 hours ago\").\n- **Dark Mode**: Toggle dark mode with settings saved in local storage for persistent user preferences.\n- **Responsive UI**: A fully responsive design ensuring smooth usability across all screen sizes.\n- **Leaderboard**: A leaderboard section showcasing top users based on their activity and reputation.\n\n## Sample \n\n![Desktop-1](https://github.com/Ajay2002bb/TechTalk-Hub/blob/main/Screenshot/Screenshot%20(12).png)\n\n\n\n## Usage\n\n#### Env variable:\n\nCreate a .env file in server directory and add the following:\n\n```\nMONGODB_URI = \"Your Mongo URI\"\nPORT = 4000\nSECRET = \"Your JWT secret\"\n\n```\n\n#### Client:\n\nOpen client/src/backendUrl.js \u0026 change \"backend\" variable to `\"http://localhost:4000\"`\n\n```\ncd client\nnpm install\nnpm start\n```\n\n#### Server:\n\nNote: Make sure that you have installed 'nodemon' as global package.\n\n```\ncd server\nnpm install\nnpm run dev\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajay2002bb%2Ftechtalk-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajay2002bb%2Ftechtalk-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajay2002bb%2Ftechtalk-hub/lists"}