# Features — unity-frontend

Evidence date: 2026-09-30. Source: `master` `0de9d02` unless a branch is named. Provenance: **Implemented**, **Documented**, **Inferred**, **Unknown**.

No features document existed in the repository or in `silicon_ark/unity-frontend/` before this file.

"Current" means present on `master`. Unmerged branch work is listed separately and is not current.

## Current features

### Unity login shell (Fuse)

| | |
|---|---|
| Status | **Implemented** |
| What the user gets | Full-screen login. Splash: "Welcome to the UNITY!" and the startup-to-SME sentence. Email, password, Remember Me, LOGIN, Forgot Password link, inert Google and Facebook buttons, link to create an account |
| Source | `frontend/src/app/main/login/Login.js`, `LoginConfig.js` |
| Route | `/login`. `/` redirects here (`frontend/src/app/configs/routesConfig.js`) |
| Notes | LOGIN calls `POST http://local.unity/api/public/api/v1/login`. Remember Me is not submitted. Success does not dispatch the user or render the redirect. See PRD workflow 2 |

### Login-2 (second Fuse login)

| | |
|---|---|
| Status | **Implemented** |
| What the user gets | Same card layout and the same Unity splash copy |
| Source | `frontend/src/app/main/pages/auth/login-2/Login2Page.js` |
| Route | `/pages/auth/login-2` |
| Notes | Posts to `http://localhost/coreUnit/api/public/api/v1/loginlogin`. Does not cancel the form submit. Does not store a session |

### Register screen

| | |
|---|---|
| Status | **Implemented** as the Fuse template, with the subtitle sentence changed |
| What the user gets | Tabs labelled JWT, Firebase, and Auth0. Heading still says "Welcome to the FUSE!" |
| Source | `frontend/src/app/main/register/Register.js` |
| Route | `/register` (`RegisterConfig.js`) |
| Notes | JWT tab uses `jwtService.createUser` → `POST /api/auth/register`. No API in this repo. Firebase and Auth0 configs are commented placeholders |

### Logout

| | |
|---|---|
| Status | **Implemented** |
| Source | `frontend/src/app/main/logout/LogoutConfig.js` |
| Route | `/logout`, `auth: authRoles.user` |
| Notes | Dispatches `logoutUser` and shows the text `Logging out..`. A guest is sent to `/login` by `FuseAuthorization` |

### Role example pages

| | |
|---|---|
| Status | **Implemented** (Fuse samples, still routed) |
| Routes | `/auth/admin-role-example` (`admin`), `/auth/staff-role-example` (`staff`), `/auth/guest-role-example` (guest only) |
| Source | `frontend/src/app/main/auth/` |

### Fuse demo applications

| | |
|---|---|
| Status | **Implemented** as routed template screens. Their data calls have no backend in this repo |
| Source | `frontend/src/app/main/apps/appsConfigs.js` |
| Screens | Analytics dashboard, project dashboard, mail, todo, file manager, contacts, calendar, chat, e-commerce, scrumboard, academy, notes |
| Notes | Each store action calls a relative `/api/...` path. `frontend/src/@fake-db` is not in the tree |

### Fuse documentation and extra pages

| | |
|---|---|
| Status | **Implemented** (template) |
| Source | `frontend/src/app/main/pages/pagesConfigs.js`, `frontend/src/app/main/documentation/`, `frontend/src/app/main/user-interface/` |
| Notes | Includes the stock auth pages (login, forgot password, reset, lock, mail confirm, error 404, error 500, pricing, invoices, FAQ, knowledge base, profile, search, coming soon, maintenance). These stay registered beside the custom `/login` |

### Navigation item "Example"

| | |
|---|---|
| Status | **Implemented** in the nav config. The page component exists and is not registered |
| Source | `frontend/src/app/configs/navigationConfig.js` points at `/example`. `frontend/src/app/example/ExampleConfig.js` is not imported by `routesConfig.js` |
| Notes | **Inferred:** choosing Example does not mount `Example.js`. `FuseAuthorization` allows unmatched paths. Not executed in a browser |

### `public/` login form

| | |
|---|---|
| Status | **Implemented** |
| What the user gets | Centred "form" page (the visible heading "Login Form" is in `App.js`, which `index.js` does not render). Email and password fields, Yup errors, Login button |
| Source | `public/src/components/LoginForm.js`, `public/src/index.js`, `public/src/App.css` |
| Route | `/` |
| Notes | Does not call `api_call_url`. The success handler uses `this` inside a function component |

### `public/` dashboard

| | |
|---|---|
| Status | **Implemented** |
| What the user gets | Heading "Dashboard" and a table of four hard-coded people |
| Source | `public/src/components/Dashboard.js` |
| Route | `/dashboard` (no auth guard) |
| Notes | Also GETs `http://localhost/coreUnit/api/public/api/client/list` into `state.contacts`, which the table does not read |

### Not-found route (`public/` app only)

| | |
|---|---|
| Status | **Implemented** |
| Source | `public/src/components/Notfound.js` |
| Notes | Any path other than `/` and `/dashboard` renders `<h1>Not found</h1>` |

### SmartAdmin asset tree

| | |
|---|---|
| Status | **Present on `master`, not wired** |
| Source | `public/src/components/assets/` (SmartAdmin v1.5.2 / v1.7.0 banners in the minified files; `app.config.js` copyright MyOrange) |
| Notes | `public/src/index.js` does not import this folder. **Inferred:** it is not part of the CRA bundle. PHP files under `assets/php/` are empty demo stubs (`demo-register.php` checks `$_POST['submit']` and has no body) |

### Apache CORS headers

| | |
|---|---|
| Status | **Implemented** as config, if Apache honours the files |
| Source | `.htaccess`, `frontend/.htaccess` |
| Notes | `Header set Access-Control-Allow-Origin "*"` inside `IfModule mod_headers.c` |

## Completed features

Nothing in git is marked complete, released, or retired. `master` stopped on 2019-08-14. The features above are the whole product surface that was committed to the default branch.

## In development (unmerged)

These branches are ahead of `master` and were not merged by 2026-09-30.

| Branch | Tip | Feature | Source |
|---|---|---|---|
| `trev` | `e1d8ebb` (2019-09-02) | Same `public/` login and dashboard, moved from `public/src` to top-level `src/`, with root `package.json` copied from `public/package.json`. Commit messages describe fixing CRA's search for `index.js` under WAMP | paths on `trev`; logic matches `master` |
| `sergei` | `c2e721f` (2019-09-26) | New app `react-frontend/`. Login button sets an in-memory flag. Inputs are not read. Dashboard is a heading plus Log Out. Nested `<BrowserRouter>` in both `App.js` and `routes.js`. A catch-all `<Route component={App} />` is also registered | `react-frontend/src/` |
| `sergei` | same | Yup validation on `public/src/components/LoginForm.js` commented out | that file on `sergei` |
| `sergei` | same | Extra route `{ path: '/pages/profile', component: ProfilePage }` appended in `routesConfig.js`. Profile is already generated from page configs | `frontend/src/app/configs/routesConfig.js` on `sergei` |
| `sergei` | same | `console.log(user)` added on the Fuse login success path. Redirect quotes changed. Behaviour otherwise matches `master` | `Login.js` on `sergei` |
| `banele` | `7a0569f` (2019-09-05) | `.idea` added to `public/.gitignore` | that file |

`react-frontend/src/App.test.js` on `sergei` is the Create React App sample ("renders learn react link") and does not match `App.js`, which has no "learn react" text. **Implemented** on that branch as the stock test file.

## Recently changed

On `master`, the last content change is the README edit in `0de9d02` (2019-08-14). The application tree arrived in `69022d4` the same day. No later change is on `master`.

## Deprecated or removed

No removal is recorded. The Fuse JWT/Auth0/Firebase auto-login calls in `Auth.js` are commented out rather than deleted, so those code paths remain in the file and do not run. **Implemented.**

`setUserData` inside `Login.js` is a local function. It is not the Redux action of the same name in `frontend/src/app/auth/store/actions/`. **Implemented.**

## Documented but not in the tree

| Claim | Where | What is missing |
|---|---|---|
| Laravel APIs, Passport, Artisan under `Api` | root `README.md` | No PHP application |
| `@fake-db` backs JWT auth | `frontend/src/app/main/documentation/authentication/jwt/jwtAuthDoc.js` | No `@fake-db` directory |
| SonarQube project file and scan batch file | 2026-09-28 discovery inventory of the scan host | Absent from all four branches |
| Google / Facebook login | buttons on both Fuse login screens | No handlers |

## Not started

No issue, TODO, or roadmap file in the repository describes a next feature. Unmerged branch experiments are the only sign of work after `master`.
