# Features — findndrive_pwa

Evidence date: 2026-10-15. Source: `git@bitbucket.org:overdrive/findndrive_pwa.git`, `master` at `d61d13b` (2023-08-08).

Status words below mean what the tree shows, not a release board. No feature flags were found. Commented-out controls are listed under removed or inactive, not as current features.

## Current (present on master)

### Access and shell

| Feature | Status | Where |
|---|---|---|
| Login form that gates every route | Current | `src/pages/Login/Login.jsx`, `src/App.jsx` |
| In-memory logged-in flag | Current | `src/context/FormContext.jsx` |
| Client UUID `app_id` on each mount | Current | `src/context/AppContext.jsx` |
| Absa logo linking to `/home` | Current | `src/components/Header/Header.jsx` |
| Footer with social icons, COVID-19 sentence, Absa address, and legal line | Current | `src/components/Footer/Footer.jsx` |
| Scroll to top on route change | Current | `src/components/fndScrollToTop/FndScrollToTop.jsx` |
| Four-step progress marks (only the current step is active) | Current | `src/components/fndProgressStep/FndProgressStep.jsx` |
| Error screen | Current | `src/pages/ErrorPage/ErrorPage.jsx` |
| Unknown-route screen | Current | `src/pages/NotFound/NotFound.jsx` |

### Journey

| Feature | Status | Where |
|---|---|---|
| Home introduction and start | Current | `src/pages/Home/Home.jsx` |
| Stock disclaimer | Current | `src/components/fndDisclaimer/FndDisclaimer.jsx` |
| Monthly amount input and six-stop slider | Current | `SelectACar.jsx`, `fndSlider/FndSlider.jsx` |
| Body-style cards: Hatchback, Sedan, Bakkie, SUV | Current | `SelectACar.jsx` |
| Geolocation attached to the price-range post | Current | `SelectACar.jsx`, `SelectModelRecommended.jsx` |
| Model list filtered by 72-month prime instalment | Current | `SelectModel.jsx` |
| Six monthly km bands | Current | `AverageUsage.jsx` |
| Tier cards with repayment, insurance, and fuel | Current | `CostOfOwnership1.jsx`, `GetCarTiers.js`, `calculateFuelSpent.js`, `CalculateInsurance.js` |
| Previous / next car | Current | `CostOfOwnership1.jsx` |
| Tier A–D explanation modal | Current | `fndModal/FndTierInfoModal.jsx` |
| Finance calculator and breakdown | Current | `Calculator.jsx`, `FinanceCalculate.js` |
| Balloon slider in steps of 5, capped by age and term | Current | `fndBalloonSlider/FndBalloonSlider.jsx`, `Calculator.jsx` |
| Credit-behaviour statements that set the interest rate | Current | `Calculator.jsx` |
| Salary, debt, living expenses, and savings | Current | `ChancesOfApproval.jsx` |
| Risk accordion and detail modal | Current | `ResultOptions.jsx`, `Accordion/FndAccordion.jsx`, `fndResultModal/FndResultModal.jsx` |
| Maintenance and service cost tables | Current | `MaintenanceTableData.js`, `ServiceTableData.js`, `fndTable/FndTable.jsx` |
| Explore other options inside a calculated range | Current | `SelectModelRecommended.jsx` |
| Recommended cost-of-ownership and result screens | Current | `CostOfOwnershipRecommended.jsx`, `RecommendedOption.jsx` |
| Apply completion screen | Current | `Congratulations.jsx` |
| Fix-my-credit coming-soon screen | Current | `FixMyCredit.jsx` |
| Feedback mailto | Current | both completion screens |

### API posts

| Feature | Status | Where |
|---|---|---|
| Production posts to `https://admin.findndrive.co.za/CarApi/<step>` | Current | `src/util/ApiCall.js` |
| Dev proxy of `/CarApi` to the same host | Current | `vite.config.js` |
| Step methods from `step0_login` through `step4_fix_my_credit` | Current | page `pageLoadAction` functions |

### Delivery

| Feature | Status | Where |
|---|---|---|
| Vite build script `dist/` | Current | `package.json` `build` |
| `master` pipeline: install, build, S3 upload of `dist/`, CloudFront invalidation | Current | `bitbucket-pipelines.yml` |
| ESLint script over `src` | Current | `package.json` `lint`, `.eslintrc.cjs` |
| SonarQube project key | Current | `sonar-project.properties` |

## Completed in history, still present

These landed during June–August 2023 and are still the behaviour on `master`. Provenance: Git history plus the current tree.

| Change | Commit window |
|---|---|
| Calculator, result options, congratulations | 2023-07-14 to 2023-07-19 |
| `CarApi` posts and localhost/production host switch | 2023-07-20 to 2023-07-25 |
| Login page | 2023-07-27 (`529853d`) |
| Maintenance and service tables | 2023-07-27 to 2023-07-30 |
| Tier filtering on model and cost screens | 2023-07-31 to 2023-08-08 |
| Separate debt and living expense fields | 2023-08-03 (`6f55c09`) |
| Debt-only figure used for the debt-level warning | 2023-08-04 (`156de99`) |
| Login restored and tier sent on the session | 2023-08-08 (`d61d13b`) |

## Inactive or removed from the running UI

| Item | Status | Evidence |
|---|---|---|
| Login page | Removed on 2023-07-28 (`cb14500`), restored on 2023-08-08 | Git history. Current tree has the gate |
| Header search and header login button | Commented out | `Header.jsx` |
| Header links Home, About, Services, Contact | Commented out | `Header.jsx` |
| "How it works" on home and login | Commented out | `Home.jsx`, `Login.jsx` |
| "Watch an explainer video" | Commented out | `Congratulations.jsx`, `FixMyCredit.jsx` |
| Empty recommended list redirects to fix-my-credit | Commented out | `SelectModelRecommended.jsx` |
| Question-mark icons beside several labels | Commented out | several pages |
| Second and third cost-of-ownership routes | Removed | commit `93497bd` "remove cost_of_ownership 2 and 3". Not in `App.jsx` |
| `npm test` script | Removed | commit `50c41ec`. `package.json` has no `test` script |
| Maintenance month cap of 6, service cap of 36, and skip under 75,000 km | Commented out | `MaintenanceTableData.js`, `ServiceTableData.js` |

## Planned only as copy

| Item | Status | Evidence |
|---|---|---|
| Credit assistance tool | Sentence on the fix-my-credit screen: "coming soon" | `FixMyCredit.jsx`. No tool code |

No other roadmap was found.

## Stub

| Item | Status | Where |
|---|---|---|
| About page | Route exists. Body is "Success Page" / "Next Page" | `src/pages/About/About.jsx` |
| `UserContext` | Provider is mounted. No consumer | `src/context/UserContext.jsx`, `src/main.jsx` |
| Services and Contact URLs | Named only inside the commented header | `Header.jsx` |

## Not implemented in this repository

| Item | Evidence |
|---|---|
| Web app manifest, service worker, offline cache | No files. `public/` contains `vite.svg` and `findndrive_icon.png` only |
| Persisted login or journey | Context state only |
| Bank application submission beyond the session post | Completion screens post and stop |
| Staff admin, catalogue editing, database | Not in the tree. See `findndrive_webportal` |
| Automated tests | No test files, no `test` script |
| README or environment sample | Not in the tree |
| Sonar scan inside the pipeline | Key file only |

## Recently changed

The newest commit on `master` is the only change after 2023-08-04: login is required again, and the selected tier is included on the calculator session post (`Calculator.jsx` sends `tier`). Provenance: `d61d13b`.
