77[ ![ Supabase] ( https://img.shields.io/badge/Supabase-PostgreSQL-3ECF8E?style=flat-square&logo=supabase&logoColor=white )] ( https://supabase.com )
88[ ![ Groq] ( https://img.shields.io/badge/Groq-LLM-orange?style=flat-square )] ( https://groq.com )
99[ ![ Vercel] ( https://img.shields.io/badge/Deployed_on-Vercel-black?style=flat-square&logo=vercel )] ( https://vercel.com )
10- [ ![ CI] ( https://img.shields.io/badge/CI-GitHub_Actions-2088FF?style=flat-square&logo=github-actions&logoColor=white )] ( https://github.com/ThanasisSoftwareDeveloper/V61-tier3-team-34/actions )
10+ [ ![ CI] ( https://img.shields.io/badge/CI-GitHub_Actions-2088FF?style=flat-square&logo=github-actions&logoColor=white )] ( https://github.com/chingu-voyages/V61-tier3-team-34/actions )
11+ [ ![ Release] ( https://img.shields.io/badge/Release-v0.1.0-blue?style=flat-square )] ( https://github.com/chingu-voyages/V61-tier3-team-34/releases/tag/v0.1.0 )
1112
1213---
1314
@@ -28,13 +29,21 @@ Candidates waste time hunting for practice questions that don't even match the r
2829
2930---
3031
32+ ## 🗓️ Voyage Timeline
33+
34+ ** Chingu Voyage V61 · Tier 3 · Team 34**
35+ 📅 ** 1 June 2026 – 29 July 2026**
36+
37+ ---
38+
3139## ✨ Key Features
3240
3341- 📂 ** Upload or paste** a job description — ` .txt ` , ` .pdf ` , ` .docx ` supported (` .doc ` intentionally excluded)
3442- 🧠 ** AI-powered extraction** of structured job data (title, skills, responsibilities, seniority, etc.) via Groq
3543- ❓ ** Generated interview questions** across three categories — Technical, Behavioral, Experience-based
3644- 📋 ** Job Summary screen** to review the extracted data before practicing
3745- 🎤 ** Mock Interview mode** — one question at a time, with a "Show Answer" reveal and STAR-method tips
46+ - 🎨 ** Consistent UI design** — unified button styles and accessible cursor interactions across all pages
3847- 📱 Fully responsive, accessible UI
3948
4049---
@@ -63,16 +72,18 @@ V61-tier3-team-34/
6372│ ├── job-summary/page.js # Extracted job data review
6473│ ├── interview-questions/page.js # Questions by category (tabs)
6574│ ├── mock-interview/page.js # One-question-at-a-time practice
75+ │ ├── faq/page.js # FAQ page
6676│ └── api/
6777│ ├── ingest/route.js # File text extraction only — no Groq calls
6878│ ├── parse/route.js # Groq: raw JD text -> 17-field structured JSON
69- │ └── generate-questions/route.js # Groq: structured JSON -> question set
79+ │ └── generate-questions/route.js # Groq: structured JSON -> question set (3 separate calls per category)
7080├── components/ # Sidebar, Footer, cards, upload zone
7181├── lib/
7282│ ├── jobExtraction.js # Groq prompt + schema for JD parsing
7383│ └── questionGeneration.js # Groq prompt for question generation
7484├── supabase/schema.sql # Database schema (run once per project)
75- ├── test/ # Vitest unit tests (23 passing)
85+ ├── test/ # Vitest unit tests
86+ ├── e2e/ # Playwright E2E tests
7687└── .github/workflows/ # CI — Vitest on every PR
7788```
7889
@@ -89,7 +100,7 @@ V61-tier3-team-34/
89100| ** Database** | Supabase (PostgreSQL) |
90101| ** AI Layer** | Groq — ` llama-3.1-8b-instant ` |
91102| ** File parsing** | ` pdf-parse ` (PDF), ` mammoth ` (DOCX) |
92- | ** Testing** | Vitest (unit), Playwright (planned E2E) |
103+ | ** Testing** | Vitest (unit), Playwright (E2E) |
93104| ** Hosting** | Vercel |
94105| ** CI/CD** | GitHub Actions — runs Vitest on every Pull Request |
95106
@@ -108,7 +119,7 @@ V61-tier3-team-34/
108119### 1. Clone the repo
109120
110121``` bash
111- git clone https://github.com/ThanasisSoftwareDeveloper /V61-tier3-team-34.git
122+ git clone https://github.com/chingu-voyages /V61-tier3-team-34.git
112123cd V61-tier3-team-34
113124```
114125
@@ -120,12 +131,12 @@ cp .env.example .env.local # fill in Supabase + Groq credentials
120131```
121132
122133```
123- SUPABASE_URL =
124- SUPABASE_SERVICE_ROLE_KEY =
134+ NEXT_PUBLIC_SUPABASE_URL =
135+ NEXT_PUBLIC_SUPABASE_ANON_KEY =
125136GROQ_API_KEY=
126137```
127138
128- > ` SUPABASE_SERVICE_ROLE_KEY ` is server-only and must never be exposed in client-side code or ` NEXT_PUBLIC_ ` variables .
139+ > Never commit ` .env.local ` — it is already in ` .gitignore ` . Use ` .env.example ` as a reference .
129140
130141Run ` supabase/schema.sql ` in the Supabase SQL editor for your project to set up the database.
131142
@@ -153,9 +164,10 @@ App runs at `http://localhost:3000`.
153164
1541651 . Open the [ live app] ( https://v61-tier3-team-34.vercel.app ) (or ` http://localhost:3000 ` locally)
1551662 . Upload a job description file, or paste the text directly
156- 3 . Review the extracted job data on the ** Job Summary** screen
157- 4 . Browse generated ** Technical / Behavioral / Experience** questions
158- 5 . Switch to ** Mock Interview** mode to practice one question at a time
167+ 3 . Select the number of questions per category (up to 5)
168+ 4 . Review the extracted job data on the ** Job Summary** screen
169+ 5 . Browse generated ** Technical / Behavioral / Experience** questions
170+ 6 . Switch to ** Mock Interview** mode to practice one question at a time
159171
160172> ⏳ On first use after a period of inactivity, file-upload parsing may have a short cold-start delay — this is expected Vercel free-tier behavior.
161173
@@ -167,6 +179,7 @@ The Groq free tier's tokens-per-minute limit is a hard constraint the app is bui
167179
168180- Input text is truncated at ** 24,000 characters** before being sent to Groq
169181- The model was switched from ` llama-3.3-70b-versatile ` to ** ` llama-3.1-8b-instant ` ** specifically to stay within TPM limits
182+ - Question generation uses ** 3 separate Groq calls** (one per category) to ensure the correct number of questions is returned
170183
171184---
172185
@@ -182,46 +195,48 @@ To handle Groq's free-tier limits and potential network hiccups, the backend imp
182195
183196| Check | Tool | Status |
184197| --- | --- | --- |
185- | Unit tests | Vitest | ✅ 23 tests passing |
198+ | Unit tests | Vitest | ✅ 70+ tests passing |
186199| CI pipeline | GitHub Actions | ✅ runs on every Pull Request |
187- | E2E tests | Playwright | 🔜 planned |
200+ | E2E tests | Playwright | ✅ implemented |
188201
189202---
190203
191204## 🗺️ Roadmap
192205
193- - [ ] Rate limit handling & input validation hardening
194- - [ ] Session retrieval API
195- - [ ] Environment variables documentation
206+ - [x] Rate limit handling & exponential backoff
207+ - [x] Environment variables documentation (.env.example)
208+ - [x] Consistent button styles & cursor-pointer across all pages (CT-76, CT-77)
209+ - [x] Question count fix — separate Groq call per category (CT-74)
210+ - [x] Playwright E2E test suite
211+ - [x] Mobile navigation accessibility fix
212+ - [x] FAQ section
196213- [ ] Loading skeletons for Job Summary & Interview Questions pages
197214- [ ] Error state UI
198- - [ ] Mobile navigation fix
199215- [ ] Server-side word count enforcement for PDF/DOCX uploads
200- - [ ] GitHub Actions pipeline documentation
201- - [ ] Playwright E2E test suite
216+ - [ ] Session retrieval API
202217- [ ] Vercel deployment guide
203218
204219---
205220
206221## 👥 Meet the Team — Chingu Voyage V61, Tier 3, Team 34
207222
208- | Name | Role |
209- | --- | --- |
210- | ** Roger** | Scrum Master |
211- | ** Thanasis ** | Web Developer |
212- | ** Jason ** | Web Developer |
213- | ** Vanessa ** | Web Developer |
214- | ** Simbongile ** | Web Developer |
215- | ** Val ** | Technical Guide |
223+ | Name | Role | GitHub | LinkedIn |
224+ | --- | --- | --- | --- |
225+ | ** Roger Banner ** | Scrum Master | [ RBanner ] ( https://github.com/RBanner ) | [ Roger Banner ] ( https://www.linkedin.com/in/roger-banner/ ) |
226+ | ** Val Lysenko ** | Technical Guide | [ Valeriusdev ] ( https://github.com/Valeriusdev ) | [ Valeriy Lysenko ] ( https://www.linkedin.com/in/valeriylysenko/ ) |
227+ | ** Vanessa Santos ** | Web Developer | [ nessa-dev ] ( https://github.com/nessa-dev ) | [ Vanessa Santos ] ( https://www.linkedin.com/in/vanessa-dev-santos/ ) |
228+ | ** Simbongile Mkhotheli ** | Web Developer | [ simbongile-mkhotheli ] ( https://github.com/simbongile-mkhotheli ) | [ Simbongile Mkhotheli ] ( https://www.linkedin.com/in/mkoteli/ ) |
229+ | ** Thanasis Koufos ** | Web Developer | [ ThanasisSoftwareDeveloper ] ( https://github.com/ThanasisSoftwareDeveloper ) | [ Thanasis Koufos ] ( https://www.linkedin.com/in/thanasis-koufos-software-developer/ ) |
230+ | ** Jason Mui ** | Web Developer | [ jsnmui ] ( https://github.com/jsnmui ) | [ Jason Mui ] ( https://www.linkedin.com/in/jasonmui2026/ ) |
216231
217232Project tracked on Jira: ` bannerbright.atlassian.net ` (project ** CT** ).
218233
219234---
220235
221236## 📄 License
222237
223- Built as part of [ Chingu] ( https://www.chingu.io ) Voyage V61.
238+ Built as part of [ Chingu] ( https://www.chingu.io ) Voyage V61 · 1 June 2026 – 29 July 2026 .
224239
225240---
226241
227- Built by the DashFetch team · [ Live App] ( https://v61-tier3-team-34.vercel.app ) · [ Repo] ( https://github.com/ThanasisSoftwareDeveloper /V61-tier3-team-34 )
242+ Built by the DashFetch team · [ Live App] ( https://v61-tier3-team-34.vercel.app ) · [ Repo] ( https://github.com/chingu-voyages /V61-tier3-team-34 )
0 commit comments