# Features — formulys_simpleflow

Evidence date: 2026-10-14.

Source: `git@bitbucket.org:overdrive/formulys_simpleflow.git`, `master` at `07cd01b` (2024-06-21). Unmerged branch `origin/url-query-state` at `b5896d3`.

No feature list existed in the source README or in Silicon Ark. Status below is from the tree at `07cd01b` unless a branch is named.

The app entry `src/App.jsx` has a syntax error (`import ... Messages";1`, since `5952e5d`). None of the screens below can load through the bundler until that token is removed. Feature behaviour is what the modules contain.

## Current (on master, when the app can load)

| Feature | What it does | Where | Status |
|---|---|---|---|
| Login | Email and password posted to Form.io `simflowlogin`; JWT stored as `localStorage.token` | `src/pages/LoginForm.jsx`, `src/stores/authStore.js` | Implemented |
| Session restore | If a token exists, GET Form.io `/current`, then load the company | `authStore.autoLogin` | Implemented. A bad token is logged and left in storage |
| Logout | Clears token, user, and company | `authStore.logout`, nav button | Implemented |
| Auth redirect | `user === null` navigates to `/login` | `src/App.jsx` | Implemented |
| Welcome header | "Welcome {firstName}!" and a profile control with full name | `src/components/common/Header.jsx` | Implemented |
| Side navigation | Dashboard, Process Hub, Task List, Notification, Message, Reporting, My Profile, conditional Settings and Management, Logout, Help | `src/components/common/Navigation.jsx` | Implemented |
| Mobile nav | Hamburger toggles `navbar-open`; path change closes it | `Navigation.jsx` (`18e3cba`) | Implemented |
| Company logo | `company.data.logoUrl`, else `src/assets/logo.png` | `Navigation.jsx` | Implemented |
| Login logo | Always `src/assets/logo.png` | `LoginForm.jsx` | Implemented. Last logo file change: `525e462` (2024-06-21) |
| Dashboard cards | One card per loaded submission that has `simflowCardName` matching search | `src/pages/Dashboard.jsx`, `src/components/cards/DashboardProcessCard.jsx` | Implemented |
| Dashboard search | Filters cards and the recent column by `simflowCardName` | `Dashboard.jsx` | Implemented |
| Recent submissions | Newest 15 by `modified`, Simflow Admin only | `Dashboard.jsx` | Implemented. `arr.length = 15` also pads the array when fewer than 15 rows exist |
| Open submission | Bootstrap modal + Form.io form at `{formUrl}/submission/{id}` | `DashboardProcessCard.jsx` | Implemented. Close handler calls `getAllSubmissions` without defining it |
| Process Hub | Non-task processes the role may start | `src/pages/ProcessHub.jsx`, `src/components/cards/BusinessProcessCard.jsx` | Implemented |
| Start a process | Blank Form.io form from `businessProcessForm.formUrl` | `BusinessProcessCard.jsx` | Implemented |
| Company colours on process cards | `primaryColor`, `secondaryColor`, `tertiaryColor` with hex fallbacks | `BusinessProcessCard.jsx` | Implemented |
| Task list | Open tasks (`isTask` and falsy `simflowCardStatus`) with name search | `src/pages/TaskList.jsx` | Implemented |
| Open-task badge | Count of those tasks on the nav link | `Navigation.jsx` | Implemented |
| My profile | Edit first name, last name, and password. Role and email disabled. Passwords must match | `src/components/forms/UpdateUserForm.jsx` | Implemented |
| Companies tab | Search, list, edit. Add only for Simflow Admin. Business name locked for everyone else | `src/pages/CompanyManagement.jsx` | Implemented |
| Users tab | Search, list, create, edit. React form, not the Form.io builder | `src/pages/UserManagement.jsx`, `src/components/forms/UpdateUserAccountForm.jsx` | Implemented (`b843b82`, `22a9d07`) |
| Role catalogue | Dropdown from Form.io `simflowuserroles`. Non-admins cannot see Simflow Admin | `UpdateUserAccountForm.jsx` | Implemented. The names in Form.io are not in git |
| Emails tab | SendGrid bounces and blocks, Simflow Admin only | `src/pages/EmailManagement.jsx` | Implemented (`bdd44ce`) |
| Help and support | `mailto:support@formulys.com` | `Navigation.jsx` | Implemented |
| Coming Soon | Heading only | `src/components/common/ComingSoon.jsx` | Implemented as a placeholder |
| QA FTP deploy | `master` pipeline builds `dist` and uploads with `ncftpput` | `bitbucket-pipelines.yml` | Implemented as YAML. Cannot pass `npm run build` on this revision |
| SonarQube scan | Pipe after deploy; project key in `sonar-project.properties` | pipeline + properties file | Implemented as YAML |

## Completed (present, and the commit that finished the change)

| Feature | Commit | Note |
|---|---|---|
| Boilerplate UI | `2e7010a` 2024-02-29 | First application commit |
| Dashboard | `a75b984` 2024-03-01 | Later commits changed cards and filters |
| Company record separated from the user | `9573e64` 2024-03-01 | Company is loaded by `user.company._id` |
| Custom logo and roles | `f605d5d` 2024-03-01 | Role name later changed |
| Coming-soon routes | `d78591c` 2024-03-08 | Still the implementation of four routes |
| Task list page | `48eea3e` 2024-04-10 | |
| Profile update modal | `9342065` 2024-04-22 | |
| Management page | `926f6a8` 2024-05-09 | |
| Form.io add/edit for company and the first user UI | `315baa5` 2024-05-10 | User edit was replaced on 2024-05-28 |
| Email management | `bdd44ce` 2024-05-16 | |
| Role string "Simflow Admin" | `15b5186` 2024-05-17 | Replaces the earlier Admin check |
| Search on company and user tables | `269d223` 2024-05-20 | |
| Company name locked for non-admins | `69afe58`, `fe3c6c9` 2024-05-26 | |
| User admin form in React; password optional | `b843b82`, `22a9d07` 2024-05-28 | |
| Simflow Admin sees all processes on the hub and the recent column | `fe3c6c9` 2024-05-26 | The shared submission store was not given the same bypass |
| Logo update | `525e462` 2024-06-21 | Last non-merge commit |

## Placeholder (routed, no behaviour beyond the heading)

| Nav label | Path | File | Who sees the nav link |
|---|---|---|---|
| Notification | `/notification` | `src/pages/Notifications.jsx` | Every signed-in user |
| Message | `/message` | `src/pages/Messages.jsx` | Every signed-in user |
| Reporting | `/reporting` | `src/pages/ReportingPage.jsx` | Every signed-in user |
| Settings | `/settings` | `src/pages/Settings.jsx` | Simflow Admin only |

`e11b604` ("Management styling and reporting", 2024-05-31) did not add a report. The page still renders `ComingSoon`.

Dashboard chips "For You", "Team", "Department", "In Progress", and "Following" are the same kind of placeholder: visible, not wired. "For You" uses a white style; the other four use orange. None filter the grid.

The nav search box and the commented-out header search box do not filter anything. Page-level search exists on the dashboard, the task list, companies, and users.

## In development (not on master)

| Branch | Commit | What the diff does |
|---|---|---|
| `origin/url-query-state` | `b5896d3` "app state via url query params" | Reads `formId` and `submissionId` from the query string into the submission store. After `getAllSubmissions` settles, calls `openFormSubmissionModal`. Card modal ids become `Modal-Form-{form}-Submission-{id}` |

The branch is based on `e11b604`, two commits behind `master` (`525e462` logo, `07cd01b` merge). It still logs the queries, leaves `useSearchParams` commented, and does not clear `urlQueries` after open (that line is commented). It is not merged.

## Removed or replaced

| Item | Evidence | Status |
|---|---|---|
| Form.io form-builder user editor | Replaced by `UpdateUserAccountForm` in `b843b82` | Removed from the live page. The old page remains as `src/pages/UserManagement.jason.jsx` and is not imported |
| Role name "Admin" | `15b5186` "Update Admin role to Simflow Admin" | The literal in current source is "Simflow Admin". Older strings were not re-scanned commit by commit beyond that message |
| Git-ftp deploy experiments | Lloyd, 2024-04-15: `8810f2d` through `cf03fbf` ("reveret gitgtp", "revert to git ftp") | The file on `master` uploads with `ncftpput`, not git-ftp |
| User delete | `997a2a3` "Look into deleting users" | No delete control on `master` |

## Present in the tree and unused by the running graph

| Path | Note |
|---|---|
| `src/pages/UserManagement.jason.jsx` | Previous user-management page. Imports `src/components/common/Modal.jsx` |
| `src/components/common/Modal.jsx` and `Modal.css` | Dialog helper. Only the unused jason page imports it |
| `src/assets/react.svg` | Vite default asset. No import under `src/` |
| `public/vite.svg` | Favicon href in `index.html` |
| npm packages `webpack`, `webpack-cli`, `webpack-dev-server` | Not referenced by `vite.config.js` |
| npm packages `-` and `save-dev` | Listed in `dependencies`. No source import |
| `@rollup/plugin-replace`, `dotenv` | In `devDependencies`. `vite.config.js` does not import them |
| `displayedIcon` | Copied onto submission rows. Cards render `faFileLines` |

## Not features of this repository

- Form definitions and the process catalogue. Those are Form.io submissions on `https://rzkiqpzlxxtfqjl.form.io`.
- The Express/Mongo scaffold in `formulys_simpleflow_backend`. This repo does not call it.
- Pestelite screens. They share the Form.io host in Silicon Ark docs and use different form paths.
- `sonarqube_scan.bat`. Named in the onboarding scan. Not in git.
