{"id":29013275,"url":"https://github.com/marziulrafi/pickbetter","last_synced_at":"2026-04-13T03:04:26.483Z","repository":{"id":301143386,"uuid":"1008150083","full_name":"marziulrafi/PickBetter","owner":"marziulrafi","description":"PickBetter is a community-driven product recommendation platform, enabling users to post queries and receive suggestions with reasons and images, secured by Firebase auth and JWT.","archived":false,"fork":false,"pushed_at":"2025-06-25T10:37:33.000Z","size":99,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-25T11:33:37.914Z","etag":null,"topics":["expressjs","firebase","firebase-auth","firebase-sdk","mongodb","react","reactrouter","tailwindcss"],"latest_commit_sha":null,"homepage":"https://marziul-pickbetter.web.app/","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/marziulrafi.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-06-25T05:35:42.000Z","updated_at":"2025-06-25T10:37:36.000Z","dependencies_parsed_at":"2025-06-25T11:46:37.964Z","dependency_job_id":null,"html_url":"https://github.com/marziulrafi/PickBetter","commit_stats":null,"previous_names":["marziulrafi/pickbetter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marziulrafi/PickBetter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marziulrafi%2FPickBetter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marziulrafi%2FPickBetter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marziulrafi%2FPickBetter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marziulrafi%2FPickBetter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marziulrafi","download_url":"https://codeload.github.com/marziulrafi/PickBetter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marziulrafi%2FPickBetter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261937078,"owners_count":23232852,"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":["expressjs","firebase","firebase-auth","firebase-sdk","mongodb","react","reactrouter","tailwindcss"],"created_at":"2025-06-25T19:10:38.277Z","updated_at":"2025-12-30T21:07:16.555Z","avatar_url":"https://github.com/marziulrafi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎯 PickBetter – Smart Product Recommendation Platform\n\n**PickBetter** is an intelligent product recommendation platform where users can post their product-related queries and receive helpful suggestions from others. Built with a secure and interactive interface, it promotes community-driven decision-making by allowing users to recommend alternatives with reasoning and images.\n\n🔗 **Live Site URL:** [PickBetter Live Demo](https://marziul-pickbetter.web.app/)\n\n🔗 **Server Side Repository:** [PickBetter Server Side](https://github.com/marziulrafi/PickBetter-Server)\n\n\n---\n\n## 🚀 Key Features\n\n- 🔐 **Secure Firebase Authentication:** Users can register and log in securely with email/password using Firebase Authentication.\n- 💬 **Post Product Queries:** Authenticated users can post their product concerns or questions for others to respond.\n- 💡 **Community Recommendations:** Other users can add recommendations for a posted query with reasons, images, and product names.\n- 📈 **Real-Time Recommendation Counter:** Query cards show the number of recommendations received, updated live.\n- 🛡️ **JWT-based Protected API Access:** Backend routes are secured using Firebase ID Tokens, ensuring only valid users access the data.\n- 🎨 **Modern \u0026 Responsive UI:** Built with Tailwind CSS and React for a clean, mobile-friendly interface.\n- 🗂️ **MongoDB Integration:** All data is stored in MongoDB Atlas, including queries and recommendations.\n- 🔍 **User-Based Data Filtering:** Users can view only their queries and recommendations, with strict access control.\n\n---\n\n## 🛠 Tech Stack\n\n### 🔧 Frontend\n- **React** – JavaScript library for building UI\n- **React Router** – For page navigation\n- **Tailwind CSS** – Utility-first CSS framework\n- **Firebase Auth** – For secure authentication\n- **Firebase SDK** – To fetch secure ID tokens\n\n### ⚙️ Backend\n- **Express.js** – Web framework for Node.js\n- **Firebase Admin SDK** – To verify ID tokens securely\n- **MongoDB Atlas** – Cloud-based database\n- **CORS** – For handling cross-origin requests\n- **dotenv** – For managing environment variables\n\n---\n\n## 📦 NPM Packages Used\n\n```bash\n# Backend\nnpm install express cors dotenv mongodb firebase-admin\n\n# Frontend\nnpm install react react-dom react-router firebase\n\n```\n\n---\n\n## 🖥️ How to Run the Project Locally\n\n### ✅ Prerequisites\n- Node.js and npm installed\n- Code editor like VS Code\n\n### 📁 Setup Instructions\n\n1. **Clone the Repository**\n   ```bash\n   git clone https://github.com/marziulrafi/PickBetter.git\n   cd PickBetter\n2. **Install Dependencies**\n   ```bash\n   npm install\n3. **Firebase Configuration**\n4. **Start the Development Server**\n   ```bash\n   npm run dev\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarziulrafi%2Fpickbetter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarziulrafi%2Fpickbetter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarziulrafi%2Fpickbetter/lists"}