# Features — paymyfines-frontend

Evidence date: 2026-10-07.

Source: `master` at `8279c82` (`8279c82cf55d1fe86d34ed3538a802506e11d8d2`), 2025-02-27.

The remote has 810 commits from 2021-05-30 (`2edff36`) through 2025-02-27. The last commit that changes application code, as opposed to the Sonar pipeline files, is `256c11c` (2022-04-12, "Apply various fixes to production code"). A line-by-line history of all 810 commits was not reconstructed. "Recently changed" below uses the commits that are still visible at the tip of `master` in early 2022 and the 2025 pipeline commits.

## Current features

These are reachable from the route table in `src/config/RoutingConfig.js` at `8279c82`.

| Feature | Route | Who | Source |
|---|---|---|---|
| Home notice search | `/` | All roles including guest | `src/components/LandingPage.js` |
| Outstanding fines list, filters, add to cart | `/outstandingfines` | `SUPER_ADMIN`, `ADMIN`, `MANAGER`, `CUSTOMER` | `src/components/OutstandingFines.js` |
| About | `/about` | All roles | `src/components/About.js` |
| Login and profile-completion modal | `/login` | `GUEST` | `src/components/Login.js` |
| Registration, reCAPTCHA, email code | `/register` | `GUEST` | `src/components/Register.js` |
| Forgot password | `/forgot-password` | `GUEST` | `src/components/ForgotPassword.js` |
| Admin dashboard (graphs and finance report) | `/adminDash` | `SUPER_ADMIN`, `ADMIN` | `src/components/AdminDashboard.js` |
| Admin settings (email templates, convenience fee, graph definitions) | `/adminSettings` | `SUPER_ADMIN`, `ADMIN`. Also listed as a child of Admin | `src/components/AdminSettings.js` |
| Google Analytics report page | `/adminAnalytics` | `SUPER_ADMIN`, `ADMIN`. Also a child of Admin. `canNavigate` false on the duplicate top-level entry | `src/components/AdminAnalytics.js` |
| Profile and linked ID numbers | `/profile` | Signed-in roles except guest | `src/components/Profile.js` |
| Transaction list and detail | `/transactions` | Same | `src/components/Transactions.js` |
| Cart and iVeri checkout | `/Cart` | Same. `canNavigate` is false; the nav cart icon pushes this path | `src/components/Cart.js`, `src/components/common/TopNav.js` |
| AARTO / eNatis detail | `/aartofinedetails` | Empty permission array, so the route filter allows everyone | `src/components/AARTOFineDetails.js` |
| CPA / iForce detail and evidence image | `/cpafinedetails` | Empty permission array | `src/components/CPAFineDetails.js` |
| Payment result | `/paymentNotification` | All roles | `src/components/PaymentNotification.js` |
| Terms | `/TermsAndConditions` | All roles. Footer link, not top nav (`canNavigate: false`) | `src/components/TermsAndConditions.js` |
| Privacy policy | `/PrivacyPolicy` | All roles. Footer link | `src/components/PrivacyPolicy.js` |
| Quick fine search | `/quickfinesearch` | All roles. `canNavigate: false`. Home link is commented out | `src/components/QuickFineSearch.js` |
| Logout | Nav control | Signed-in | `src/components/common/TopNav.js` |
| Unknown URL | Catch-all | — | `src/components/common/NotFound.js` |

Shared UI: top navigation, footer (hidden on `/`), popup modal, exportable tables, loader button, TinyMCE settings editor.

Page analytics on every load: Matomo site id 2 and Google tag `G-6M1WRZYG8D` in `public/index.html`.

## Completed features

Nothing in the repository is marked released or completed apart from the tree on `master`. There is no changelog and no version tag in the commits inspected. `package.json` version is `0.1.0`.

## Planned features

No roadmap, ticket list, or TODO file describes future work.

These items exist in the tree and are not reachable from the active route table:

| Item | Evidence | Status |
|---|---|---|
| Admin dashboard test screen | `AdminDashboardTest` entries in `RoutingConfig.js` are inside block comments. The component and `dashboardTestData.js` remain | Present, not routed |
| Home link to quick fine search | Commented JSX in `LandingPage.js` | Present, not rendered |
| Length check on quick search (10–16 characters) | Commented function in `QuickFineSearch.js` | Not active |
| Older iVeri return URL `video.medmin.co.za/iveri.php` | Commented in `Cart.js` | Not active |
| Service worker | `serviceWorker.js` exists. `src/index.js` calls `unregister()` | Not active |
| PWA install metadata | `public/manifest.json` still says "Create React App Sample" | File present. Not used as product copy |

Whether any of these should be turned on is **Unknown / Requires Confirmation**.

## In development

`master` is the only remote branch. No open feature branch is recorded on this clone. The 2025 commits do not change screens. In-development work outside this remote is **Unknown**.

## Recently changed

Relative to the earlier 2022 history that is still the parent of `HEAD`:

| Commit | Date | Subject | What it indicates |
|---|---|---|---|
| `7762da6` | 2022-02-03 | Add id number | ID handling |
| `d924ca3` | 2022-02-03 | Change field spelling to match changed api field | API field rename |
| `03ffb10` | 2022-02-03 | Enatis idnumber in cart fix | Cart ID for eNatis |
| `9fb2112` and neighbours | 2022-02-03 | Merged `ui_fixes` pull requests #182–#184 | Layout |
| `65f8afc` | 2022-02-17 | fix forgot password validation | Forgot password |
| `cbe19bf` | 2022-02-18 | update updateregistration on forgot pwd | Registration link on forgot password |
| `256c11c` | 2022-04-12 | Apply various fixes to production code | Last non-pipeline commit |
| `b2049ed` | 2025-02-27 | bitbucket-pipelines.yml created online with Bitbucket | Sonar pipeline |
| `8279c82` | 2025-02-27 | sonar-project.properties created online with Bitbucket | Sonar project key |

The bodies of the 2022 commits were not diffed one by one. The subjects are the evidence for those rows.

## Deprecated or removed

No file in the repository is labelled deprecated.

These modules are in `src/` and are not imported by a routed screen:

- `src/components/RequestsAPI.js` (generic `fetch` helper). Screens use `unityRequests.js` or Amplify `API` directly.
- `src/components/Pivot.js`, `PivotTable.jsx`, `PivotTableUI.jsx`, `TableRenderers.jsx`, `PlotlyRenderers.jsx`, `Utilities.js` (pivot helpers).
- `src/hooks/useFormFields.js`.
- `src/components/common/JumbotronWrapper.js` and its Storybook story. Storybook scripts are in `package.json`. No routed screen imports the wrapper.

Dependencies declared in `package.json` and not imported by a routed screen include `@fullcalendar/*` and `react-trello`. They are unused by the current routes. **Inferred** from import search.

`Roles.js` still says the role names are placeholders. The route table uses them as the live permission model.

## Not in this repository

- A contact form. Terms clause 5.1.5 refers to a "Contact Us" service. Footer contact is two mailto links only.
- An ID-number search on the home page. Home search sends `noticeNumber` only.
- A deploy workflow. The Bitbucket pipeline runs SonarQube.
