# Features — VivaInnovations (Vivlia)

Evidence date: 2026-09-29.

Feature status refers to branch `dev` at `71b4967` unless noted. `master` (`37b1a24`) has none of these features.

## Current (implemented on `dev`)

| Feature | What it does | Evidence |
|---|---|---|
| Public marketing site | Landing, search, FAQs, contact and about | `src/containers/Landing/`, `ExploreFaqs/`, `ContactUs/`, `PUBLIC_ROUTES` |
| Catalogue browse | Textbooks, literature (children, young adult, adult), learning material, by grade and subject | `ResourceExploration/`, `schema.graphql` enums |
| Resource detail | Title, price, cover, and related purchase actions | `resourceDetails.tsx` |
| Registration and login | Email sign-up, confirmation code, sign-in, forgot password, resend code | `Register/`, `Login/`, `ForgotPassword/`, `authHelpers.ts` |
| Role-based shells | Admin sidebar vs learner sidebar from the Cognito group | `navigation/index.tsx`, `jwtInfo.ts` |
| Learner library | Purchased items, PDF and EPUB reading | `MyLibrary/` |
| Offline download | Stores a resource locally and reopens it | `filesystem.ts`, `MyLibrary/index.tsx` |
| Annotations | Highlight and underline with comment and colour | `Annotation` type, `MyLibrary/highlights.tsx` |
| Cart and card checkout | Cart lines, subject-voucher discount, Peach debit, status page | `Cart/`, `makePayment/src/index.js` |
| Voucher admin | Create, edit, filter by Active, Draft, Archived | `VoucherManagement/` |
| Voucher redeem | Active code, max-use check, show linked resources | `MyLibrary/index.tsx` |
| Textbook admin | Create and edit, status filter published / draft / archived | `ResourceManagement/` |
| Literature admin | Same pattern as textbooks | `ResourceManagement/` |
| Learning material admin | Topics and units, draft / active / archived | `LearningMaterial/` |
| Legal-document admin | Content management creates `LEGAL_DOCUMENT` resources | `ContentManagement/`, `contentFields.tsx` |
| FAQ admin | Create and edit FAQs | `FaqManagement/` |
| User admin | List by role, create Admin / Agent / Super Admin, edit, archive | `Users/` |
| Sales list | Filter Complete, Pending, Failed | `Sales/index.tsx` |
| Admin dashboard | User count, resource counts, monthly sales bars | `AdminDashboard/index.tsx` |
| Profile | Profile fields, password change, completed purchase list | `Profile/` |
| Post-login redirect | `/limbo` to dashboard or library | `Limbo/index.tsx` |
| Email send | SES HTML email from request body | `sendEmail/src/index.js` |
| Cognito group on sign-up | Adds `CONSUMER` | `add-to-group.js` |
| Searchable resources | AppSync `@searchable` on `Resource` | `schema.graphql` |
| SonarQube pipeline step | `sonar-scanner` after the dev deploy step | `bitbucket-pipelines.yml`, `sonar-project.properties` |
| Amplify environments in git | `dev`, `uat`, `staging` | `amplify/team-provider-info.json` |

## Completed (historical, still in the `dev` tree)

`CHANGELOG.md` records releases from the SovTech period. The newest heading is 2.16.1 (2019-08-14): learning-material routes, topic details, unit editing, profile update. Earlier headings cover the starter app (login, register, dashboard). `package.json` version is `2.16.3`, which is ahead of that heading. No git tags exist. Provenance: **Documented** in the changelog, **Implemented** as version fields that disagree.

The first feature commit after the README is `cbe5fb6` (2019-06-24), "feat: Inital clone of the SSAK repo". The product was built on that starter.

## On `develop` and not re-verified as the current product

`develop` at `c2fc32d` (2020-08-27) is a Lerna monorepo:

- `packages/web` — earlier web app
- `packages/everblue-ui` — UI kit (alert, avatar, button, modal, sidebar, typography) and Storybook/Docz docs
- `packages/theme`
- `packages/backend` — webpack backend package

`dev` no longer has a `packages/` directory. Those package features are **not** the current layout. 51 commits on `develop` are absent from `dev`. Whether any of that work was intentionally dropped is **Unknown / Requires Confirmation**.

## Planned or described, not present in code

| Item | Where it is claimed | What the code shows |
|---|---|---|
| Automatic semantic-release on deploy | README; `package.json` `release.branch` is `develop` | Pipeline line is a TODO comment |
| Deploy dev from `develop` and UAT from `master` | README | Pipeline deploys when branch `dev` changes; `master` pipeline targets UAT but `master` has no app |
| Production Amplify env `prod` | README | `team-provider-info.json` has `dev`, `uat`, `staging` |
| Mobile-app registration | README | Web `/register` only |
| Push notifications | README communications section | No implementation found |
| Mailgun marketing email | README services table | `sendEmail` uses SES |
| Payment and user-verified HTML templates | README | `sendEmail` sends the HTML it is given; template import is commented out |
| Super Admin vs Admin vs Agent permission split | README ("limited" admin) | One admin route table for all three |
| `sonarqube_scan.bat` | Onboarding scan of the scan host | Not in git history |
| Pipeline test gate | `yarn test:ci` exists; husky pre-push calls it | The pipeline test line is commented out |

## Recently changed

The last product change is pull request #380 (2021-12-13): `RDSA.md` only. The last functional merge before that is pull request #379 (2021-11-18): `bitbucket-pipelines.yml` and `sonar-project.properties`.

`master` changed once, on 2022-11-21, and that change did not modify the app.

## Deprecated or removed

- The `develop` monorepo layout is not on `dev`.
- `makePayment/src/app.js`, `createUser/src/app.js`, and `disableUserAccount/src/app.js` are Amplify HTTP samples. The running handlers are the sibling `index.js` files. The sample routes are unused by those handlers.
- README "USER" role. The enum uses `CONSUMER`.

## Not on `master`

Anyone who clones the default HEAD gets a `.gitignore` template and no Vivlia source. The features in this file are on `dev`.
