{"id":30292342,"url":"https://github.com/mikael-duru/mockwise","last_synced_at":"2026-04-12T11:49:52.416Z","repository":{"id":303428229,"uuid":"1013840869","full_name":"Mikael-duru/mockwise","owner":"Mikael-duru","description":"An AI-powered platform for preparing for mock interviews","archived":false,"fork":false,"pushed_at":"2025-07-30T12:58:22.000Z","size":1510,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-17T00:10:18.004Z","etag":null,"topics":["firebase","gemini","nextjs","typscript","vapi"],"latest_commit_sha":null,"homepage":"https://mockwise-kohl.vercel.app","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/Mikael-duru.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-07-04T14:53:45.000Z","updated_at":"2025-07-30T12:58:26.000Z","dependencies_parsed_at":"2025-07-30T14:33:58.823Z","dependency_job_id":"9e6ae515-2909-4083-94e5-753cc8db7b8b","html_url":"https://github.com/Mikael-duru/mockwise","commit_stats":null,"previous_names":["mikael-duru/mockwise"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mikael-duru/mockwise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mikael-duru%2Fmockwise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mikael-duru%2Fmockwise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mikael-duru%2Fmockwise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mikael-duru%2Fmockwise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mikael-duru","download_url":"https://codeload.github.com/Mikael-duru/mockwise/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mikael-duru%2Fmockwise/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31713876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"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":["firebase","gemini","nextjs","typscript","vapi"],"created_at":"2025-08-17T00:08:33.855Z","updated_at":"2026-04-12T11:49:52.411Z","avatar_url":"https://github.com/Mikael-duru.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧑‍💼 MockWise — AI Mock Interview Platform\n\nMockWise helps candidates practice realistic voice interviews and get actionable AI feedback — all in a simple, modern experience.\n\n---\n\n## 🧰 Tech Stack\n\n| Tech               | What it Does                                      |\n|--------------------|---------------------------------------------------|\n| **Next.js 15**     | App Router, Server Actions, SSR                   |\n| **Tailwind CSS**   | Utility-first styling                             |\n| **shadcn/ui**      | Accessible, reusable React components             |\n| **Vapi**           | Voice AI workflow — dynamic spoken conversations  |\n| **Gemini AI**      | Google’s LLM — generates questions \u0026 feedback     |\n| **Firebase**       | Auth and Firestore database                       |\n| **Cloudinary**     | Image upload, storage, and on-the-fly optimization|\n\n---\n\n## 🎙️ Built for Practice Interviews\n\n- ✅ **Realistic Voice Interviews** — Vapi handles spoken conversation flow.\n- 🧠 **Dynamic AI Questions** — Gemini generates custom, role-specific interview questions.\n- 📊 **Constructive Feedback \u0026 Scoring** — Gemini analyzes transcripts and provides detailed performance scores.\n- 🔒 **Secure Authentication** — Firebase Auth with both Google and email/password sign-in. User data is protected with strict Firestore rules.\n- ☁️ **Image Uploads** — Cloudinary stores and optimizes user profile pictures.\n- 🎨 **Modern UI** — Tailwind CSS and shadcn/ui keep the interface accessible, clean, and responsive.\n\n---\n\n## 📦 Installation  \n1. Clone the repository:  \n   ```bash\n   git clone https://github.com/Mikael-duru/mockwise.git\n   cd mockwise\n   ```\n2. Install dependencies:  \n   ```bash\n   npm install\n   ```\n3. Set up environment variables in a `.env` file:  \n   ```env\n    # Firebase\n    NEXT_PUBLIC_FIREBASE_API_KEY=\n    NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=\n    NEXT_PUBLIC_FIREBASE_PROJECT_ID=\n    NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=\n    NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=\n    NEXT_PUBLIC_FIREBASE_APP_ID=\n    NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=\n\n\n    FIREBASE_PROJECT_ID=\n    FIREBASE_PRIVATE_KEY=\n    FIREBASE_CLIENT_EMAIL=\n\n    # Gemini\n    GOOGLE_GENERATIVE_AI_API_KEY=\n\n    # Vapi\n    NEXT_PUBLIC_VAPI_WEB_TOKEN=\n    NEXT_PUBLIC_VAPI_WORKFLOW_ID=\n\n    # Cloudinary\n    NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=\n    CLOUDINARY_API_KEY=\n    CLOUDINARY_API_SECRET=\n   ```\n4. Run the development server:  \n   ```bash\n   npm run dev\n   ```\n5. Open `http://localhost:3000` in your browser.  \n\n---  \nBuilt with ❤️ and Nextjs.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikael-duru%2Fmockwise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikael-duru%2Fmockwise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikael-duru%2Fmockwise/lists"}