# Features — reactFrontend

Evidence date: 2026-10-05. Source: `git@bitbucket.org:overdrive/reactfrontend.git`, `master` `25c9bd8` (2020-07-17).

No `features.md` existed in the source repository or in `silicon_ark/reactFrontend/` before this file.

Status words used here:

- **Current** — present on `master` at `25c9bd8` and reachable or called from the running tree.
- **Stub** — routed or filed, and the body does not perform the menu's implied job.
- **Template** — Gogo React demo still linked or still imported.
- **Not routed** — file exists and the router does not mount it.
- **Commented** — an earlier call or route remains only in comments.

There is no issue tracker or roadmap file in the repository. "Planned" below means a TODO or a commented call in source, not an approved backlog.

## Current — sign-in shell

| Feature | Status | Where |
|---|---|---|
| Page title Footprint Reboot | Current | `public/index.html` |
| Login slogan and credential form | Current | `src/views/user/login.js` |
| Cognito username/password sign-in, redirect to `/app` | Current | `src/redux/auth/saga.js` |
| Cognito sign-out | Current | `src/redux/auth/saga.js` |
| Forgot-password code and reset | Current | `src/views/user/forgot-password.js`, `reset-password.js`, saga |
| Confirm sign-up code, then forced forgot-password | Current | `src/views/user/confirm-code.js`, `new-password.js` |
| Auth gate on `/app` using `localStorage.user_id` | Current | `src/App.js`, `src/redux/auth/reducer.js` |
| Top bar name and email from `GET /members/{custom:memberid}` | Current | `src/containers/navs/Topnav.js` |
| Theme colour switch, default `dark.blue` | Current | `src/constants/defaultValues.js`, `src/index.js` |
| Locale switch entries en, es, enrtl | Current | `src/constants/defaultValues.js` |

## Current — members

| Feature | Status | Where |
|---|---|---|
| Member menu: manage, transfers, create, reports, pivot | Current as menu | `src/constants/menu.js` |
| Member search by organisation type, group, role, and text | Current | `src/views/app/pages/user/user-list.js` posts `/footprint/members` |
| Type dropdown from `GET /footprint/types/13` | Current | same file, id is literal `13` |
| Group and role dropdowns | Current | `GET /footprint/groups`, `GET /footprint/roles/{id}` |
| Member profile route | Current | `src/views/app/pages/user/user-detail.js` |
| Verbose profile load | Current | `footprintAPI` `GET /members/{id}/verbose` |
| Profile permission load | Current | `POST /footprint/userpermissions` |
| Tabs Home, Profile, Medical, Performance, Documents, Settings | Current | `user-detail.js` |
| Save general, identity, other, address, next of kin | Current | `src/components/forms/Profile/**` |
| Change sign-in email | Current | `profile-settings-content.js` `POST /footprint/updateemail` |
| Activate account (Cognito sign-up, uuid, active flag) | Current | `account-management-content.js` |
| Per-member custom permission save | Current | `UserAccessPermissionsSection.js` `POST /footprint/updatecustompermissions` |
| Add-member modal | Current UI, no API | `AddNewMemberModal.js`, `handleSubmit` in `user-list.js` alerts only |

## Current — settings that call the API

| Feature | Status | Where |
|---|---|---|
| Groups and roles page | Current | `src/views/app/pages/settings/groupsAndRoles.js` |
| Load groups, modules, module details, all card permissions | Current | GET/POST paths in that file |
| Save permission flags PRIVATE, VIEW, EDIT, CREATE, DELETE | Current | `POST /footprint/savepermissions` |
| Update permissions for users in a group | Current | `POST /footprint/updatepermissions` |

`canRender` is current code and does not apply those flags. See business rules.

## Stub — menu items whose pages do not do the named job

| Menu label (message id) | Route | What the page shows |
|---|---|---|
| `menu.insight` | `/app/pages/insight` | Heading "Insight" |
| `menu.members-transfers` | `/app/pages/user/transfers` | "Members.Transfers" |
| `menu.members-create-member` | `/app/pages/user/new` | "Members.CreateNewUser" |
| `menu.members-reports` | `/app/pages/user/reports` | "Members.Reports" |
| `menu.medical` | `/app/pages/medical` | "Medical Page" |
| `menu.dashboard` under organisations | `/app/pages/organisation/dashboard` | Gogo dashboard cards, plus an unused axios GET |
| `menu.manage` | `/app/pages/organisation/manage` | Short placeholder |
| `menu.reports` (organisation) | `/app/pages/organisation/reports` | Short placeholder |
| `menu.venues` | `/app/pages/organisation/venues` | Short placeholder |
| `menu.surveys` | `/app/pages/organisation/surveys` | Short placeholder |
| `menu.organisation-forms` | `/app/pages/organisation/forms` | Short placeholder |
| `menu.plan-budget` | `/app/pages/organisation/plan-budget` | Short placeholder |
| Settings countries, venues, organisations, sport codes, qualifications, achievements, library toolbox, surveys, notifications, email templates, support | `/app/pages/settings/...` | The page name as text |

Member documents tab: the text "Documents Tab Content" (`contentTabs/documents.js`).

## Current UI with static data — squads and tournaments

| Feature | Status | Where |
|---|---|---|
| Squad list of five national teams | Current, static | `squad-list.js` |
| Squad filters that alert and do not filter | Current | same file, options from `dropdownLookupData.js` |
| Squad detail "Blue Bulls" / Curie Cup, tabs Home, Members, Planner, Medical | Current, static object | `squad-detail.js` |
| Squad players, personnel, apparel, history containers | Current as components | `contentTabs/members.js`. Player container has a TODO about columns |
| Tournament list of four named events | Current, static | `tournament-list.js` |
| Tournament create, manage fixtures, reports, pivot, detail, fixture detail routes | Current as routes | `src/views/app/pages/tournament/index.js` |

Commit subjects in July 2020 describe squad detail presentation work (`5e654af`, `b2ae8f4`, `1ac2d49`). The data on those pages is still in the source file.

## Template — Gogo React still in the product menu

| Feature | Status | Where |
|---|---|---|
| Landing redirect to dashboards | Current | `src/views/app/index.js` sends `/app` to `/app/dashboards` |
| UI forms and component catalogue | Current | `src/constants/menu.js` `id: "ui"`, `src/views/app/ui` |
| Chart, pivot, data-table, form-builder demos | Current | `src/views/app/applications` |
| Product, profile, blog, miscellaneous page packs | Current routes | `src/views/app/pages/index.js` |
| Demo service host `https://api.coloredstrategies.com` | Current constant | `src/constants/defaultValues.js` `servicePath`. Tournament list builds `apiUrl` from it and the list itself does not call it |
| Firebase config object | Present, not started | `defaultValues.js`. Import commented out in `src/App.js` |
| In-repo JSON for chat, surveys, todos | Template data | `src/data/*.json` |

`package.json` version `4.2.8` matches the Gogo theme generation the shell was copied from. **Inferred** from the folder names (`gogo` theme scss) and the coloredstrategies host. The repo has no statement of the theme vendor version beyond that package version.

## Not routed or commented

| Item | Evidence |
|---|---|
| Forgot username / password support form | `src/views/user/forgot-username-password.js` is not in `src/views/user/index.js`. Commit `d275a95` |
| Member manage page | Import and route commented out in `src/views/app/pages/user/index.js` |
| Squad manage-fixtures route | Commented out in `src/views/app/pages/squad/index.js` |
| Permission delete | Commented `GET /footprint/deletepermission/{id}` in `groupsAndRoles.js` |
| Top-bar permission preload | Commented `GET /footprint/permissions/{GroupID}` in `Topnav.js` |
| Bearer token on axios | Commented in `src/helpers/footprintAPI.js` |
| Older Cognito pool `eu-west-1_E6NTixDJM` and older API Gateway URLs | Commented in `src/views/user/index.js` and `src/helpers/Amplify.js` |
| `updateuuid` from the email form | Commented in `profile-settings-content.js` |

## Changed late in history

HEAD `25c9bd8` (2020-07-17) changes only the axios base URL and the Amplify endpoint inside `src/views/user/index.js`. `src/helpers/Amplify.js` keeps a different endpoint. That split is the latest behaviour change in git.

Earlier the same month, commit subjects record: squad detail presentation, collapse cards default closed for personnel apparel history, CORS fixes on user permissions (`c8df195`, `9dacd13`), and a login fix that reverted an Amplify config (`84a6579`) before a later config change (`1c6bec8`). The reverted text is not re-stated here; HEAD is the configuration in `technical-documentation.md`.

## Removed or renamed, from commit subjects

Commit `98decb7` (2020-06-21) says "Removed all references to GoGo text". The shell, theme files, and demo routes are still the Gogo application. The visible product strings that were checked (title, login slogan, package description) say Footprint. A full string search for the removed label was not treated as proof that every demo route is gone, because those routes are still registered.

Commit `5f542c6` (2020-06-08) says "remove BI from directory". No BI module is in the route table on HEAD.

## Tests and operations features

| Item | Status |
|---|---|
| Automated tests | No `*.test.js` or `*.spec.js` in the tree. `npm test` script remains |
| Sonar project file and scan batch file | Named in the onboarding issue's scan-host listing. Not in git at `25c9bd8` |
| CI pipeline | No pipeline file in the tree |
| PWA manifest | `public/manifest.json` still says "Create React App Sample" / "React App" |

## Planned only as source comments

- Squad home and planner should call an API (`contentTabs/home.js`, `contentTabs/planner.js`).
- `canRender` should honour VIEW and other verbs (`AccessControl.js`).
- Group permission save should be tested (`groupsAndRoles.js`).
- Organisation type id should come from the signed-in user (`user-list.js` comment "From user's Organisation?").
