# Features — blindside (BlindSide)

Evidence date: 2026-10-19. Source: `git@bitbucket.org:overdrive/blindside.git`, `master` at `25a8c70` (2019-06-17).

Status words used here:

- **Current** — present at `25a8c70` and reachable or rendered from `index.html`.
- **Stub** — a route or file exists and does not implement the feature the label describes.
- **Unreachable** — source exists and the current control flow never runs it.
- **Menu only** — a navigation label with no view.
- **Theme kit** — Limitless demo pages under `template/`, not wired to the BlindSide routes.
- **Not in git** — named by a link, a script, or the task-creation scan, and absent from history.

There is one branch. "Current" means current in git, not proven production. Nothing has been committed since 2019-06-17, so there is no separate "recently changed" set beyond that tip.

## Current

| Feature | Location | Notes |
|---|---|---|
| Application shell | `index.html` | Title BlindSide. Regions for nav, header, secondary nav, `#pageContent`, footer. Loads `common.js` and `routes.js` |
| Login card | `core/view/login/login.html` | Injected on ready. Email, password, Remember, forgot-password link, terms links |
| Sign-in loads the shell and dashboard | `core/routes/routes.js` case `login` | Does not read the form. See PRD FR-003 |
| Top navigation | `core/view/headerTopNav.html` | Logo, static "users online", static activity feed, user menu labelled Heinrich |
| Page heading and search | `core/view/headerContent.html` | "Dashboard", "Good morning, Eugene", search input with no handler |
| Secondary navigation | `core/view/headerDesctiption.html` | Dashboard, Members, Organisastions, Forms, Plan and Budget, Settings. Includes a floating action menu |
| Footer | `core/view/footer.html` | "© 2015 - 2018. Evolv by EVOLVaV" linking to `http://evolvav.com`. Introduced in `2ef3f33` |
| Tournament 2019 chart | `core/view/dashboard/mainDashboard.html`, `core/controller/dashboard.js` | ECharts line chart. Four named series and a fixed competition axis. Commit `a9ecc7e` calls this fake data |
| Get Into Rugby table | `mainDashboard.html` | Columns Total, Generic, African, Colerd, Indian, White. Six Boys rows, all zeros |
| Plan & Budgets calendar | `mainDashboard.html`, `dashboard.js` | FullCalendar with the theme's November 2014 sample events |
| SARU Provincial EPG 2016 Form list | `mainDashboard.html` | Static status badges and provincial union names. Links are `#` |
| Member cards | `core/view/member/listMember.html` | Four Limitless-style people cards. Not a data list |
| CodeDeploy app spec | `appspec.yml`, `scripts/install_dependencies`, `scripts/stop_server`, `scripts/start_server` | Linux, Apache `httpd`, document root `/var/www/html/` |
| Bitbucket pipeline | `bitbucket-pipelines.yml`, `codedeploy_deploy.py` | `master` only. Zip, S3 upload, CodeDeploy. Amazon sample script, copyright 2016 |

## Stub

| Feature | Location | Notes |
|---|---|---|
| Add Personel | `core/view/member/addMember.html`, `core/controller/addMember.js` | Heading is the file path. Controller ready handler is empty. Added across `cb376d7` ("BAsic screen uploaded") |
| All Organisastions | `core/view/organisastion/listOrganisastion.html`, `listOrganisastion.js` | Path heading only. Spelling "organisastion" is consistent in the path and the route |
| Create Organisastions | `core/view/organisastion/addOrganisastion.html`, `addOrganisastion.js` | Path heading only |
| Login controller | `core/controller/login.js` | Empty file. Login behaviour is in `routes.js` |
| List-member controller | `core/controller/listMember.js` | Empty ready handler |

Each of the member and organisation fragments also requests `src="assets/js/plugins/s"`, which is not a file.

## Unreachable or unused

| Feature | Location | Notes |
|---|---|---|
| API login | `core/routes/routes.js` after `return false` | POST `api/login.php`. File not in git. Hardcoded `apikey` (value omitted). Cookie names `bsUserName`, `bsSurname`, `bsid`, `bsrole` |
| Session redirect | commented block at the top of `routes.js` | Would send the browser to `./login.html` |
| Cookie session restore | `common.js` `checkLoggedinCookie` | Reads `ff*` cookies. Loads `./core/views/dashboard/mainDashboard.html`, a path that does not exist. No caller in `routes.js` |
| Logout helper | `common.js` `logOut`; route case `logout` | Clears `ff*` cookies and reloads. The visible Logout item does not use `action="logout"` |
| Alternate shell | `template/index_4.html` | Title BlindSide. Loads `core/controller/main.js`, which is not in the tree. Not linked from `index.html` |
| Theme login page | `template/login.html` | Title BlindSide. Head only; the body is empty. Loads `assets/js/demo_pages/login.js` |

## Menu only

These labels are in `core/view/headerDesctiption.html`. The route switch has no case for them (`project`, `manageProject`, `efillingForm`, `formTemplate`). The default branch passes an undefined `loadUrl` to `loadPage`.

| Menu | Items | Action attribute |
|---|---|---|
| Forms | Efilling Forms, Form Templates | `efillingForm`, `formTemplate` |
| Plan and Budget | Projects, Manage Projects, Grants Categories, Grants Classifications | `project`, `manageProject`, `efillingForm`, `efillingForm` |
| Settings | Access Contol, Emails Sent, Email Templates | `project`, `project`, `project` |

Form Templates is also broken HTML (`class="btn button "dropdown-item"`).

No form builder, grant category, project record, access-control screen, or email template exists under `core/`.

## Theme kit (not the BlindSide application)

`template/` holds 74 HTML files from the Limitless Responsive Web Application Kit (title on the stock pages: "Limitless - Responsive Web Application Kit by Eugene Kopyov"). They demonstrate sidebars, navbars, layouts, and components. `template/index.html` does not reference `core/routes/routes.js`.

`assets/` holds the kit: `css`, `js`, `images`, `locales`, `scss`, `demo_data`, `swf`. Product code does not compile the SCSS. There is no application `package.json`.

The checked-in kit was added in `b747154` ("#new suite upload", 2520 files).

## Not in git

| Name | Where it is mentioned |
|---|---|
| `api/login.php` | `routes.js` |
| `login_password_recover.html` | Forgot-password link on the login card |
| `user_pages_profile.html` | Member card profile buttons |
| `core/controller/main.js` | `template/index_4.html` |
| `core/views/dashboard/mainDashboard.html` | `checkLoggedinCookie` (plural `views`) |
| `sonar-project.properties`, `sonarqube_scan.bat` | Task-creation file list only. No git history |
| README, product licence, changelog, tests | Not in the tree. CKEditor plugin readmes under `assets/js/plugins/editors/ckeditor/` are vendor files |

## Planned

No issue tracker, TODO comment that names a future release, or branch describes planned work. Menu labels for forms, grants, projects, and settings are the only evidence that those areas were intended. Provenance: **Inferred** from the menu. Treat them as unimplemented labels, not as an agreed backlog.

## Removed

Git history was not used to reconstruct a feature that was later deleted, beyond the styling commits that replaced large HTML blocks with the fragment shell (`4479c85`, `2ef3f33`, `a9ecc7e`). The dashboard commit replaced a large HTML body with the chart and tables (`459 insertions, 1662 deletions` on two files). What that previous body contained is visible in the parent of `a9ecc7e` and is not the current product. It is not documented here as a removed business feature because the surviving product is the fragment app at `25a8c70`.

## Changed at the tip

`25a8c70` ("new styling") touches two files, 13 insertions and 122 deletions. It is a styling edit on the day the dashboard and basic screens landed. It does not add a new workflow.
