# Project plan — wiki (SO Wiki System)

Evidence date: 2026-09-28.

Source repository: `git@bitbucket.org:overdrive/wiki.git`.

Inspected revision: `master` at `bb3c49b` (2019-05-02, jacobrits, "first commit"). The scan-host path `~/projects/sonar_scan/repos/wiki` was not on this machine. The tree below was read from that git revision. The committed private-key file is named in the security section and is not reproduced.

This plan describes what the repository contains. It does not decide what the product should become.

## Product

The README titles the repository **SO Wiki System** and describes it as "Basic Wiki system". The rest of the README is Bitbucket's default "edit this README" tutorial.

Pages in the tree use several other names:

| String | Where |
|---|---|
| Silicon Overdrive | Root `index.html` title and heading |
| SO2 | Root login logo |
| SO.2 | Dashboard and template page titles, template login logo |
| Silicon Overdrive Management System | Welcome line on `views/dashboard/index.html` and on the rebranded template pages |
| Silicon Overdrive WebApp framework | Root login footer, marked `DEVELOPMENT`, year 2019 |

Provenance: **Documented** only for the two README lines. The other names are **Implemented** as static copy.

There is no product requirements document in the repository. There is no article store, editor, user database, or authentication server. The runnable behaviour is a static HTML site: an INSPINIA 2.8 admin theme, a shortened dashboard shell, one wiki content fragment, and a stub page loader.

**Unknown / Requires Confirmation:** which of those names is the product name, and whether a real wiki was still the goal after this first commit.

## Branch reality

| Line | Tip | Date | What it is |
|---|---|---|---|
| `master` (default; `origin/HEAD`) | `bb3c49b` | 2019-05-02 | Only branch. One commit: "first commit" |

No other local or remote branches were present at inspection. History does not show a later release, a `develop` branch, or a removed feature.

**Discrepancy:** the task-creation scan listed `sonar-project.properties` and `sonarqube_scan.bat` at the repository root. Neither file is in git at `bb3c49b`. Provenance: **Unknown** — they may have been untracked files on the scan host.

## Objectives (inferred from the implementation, not from a written plan)

- Show a Silicon Overdrive branded login screen.
- Open a static management shell after the login form is submitted.
- Offer a Wiki entry in that shell.
- Load page fragments by role from a small controller. The controller's role logic is commented out, and the script as written is not valid JavaScript.
- Provide a command-line helper for new projects and MVC files. The helper's menu is comments only.
- Deploy the tree to an Apache `httpd` document root with AWS CodeDeploy.

## Scope

### In scope of `master`

1. Static login at `index.html`.
2. A shortened shell at `views/dashboard/index.html` with a Wiki link.
3. Full INSPINIA demo pages under `views/template/`, rebranded with the Silicon Overdrive welcome line and a 1996–2019 copyright line.
4. Copies of several dashboard demos under `views/dashboard/`, with department labels on four of them.
5. A blog-card fragment at `views/wiki/blog.html`.
6. `controller/core.js`, a page loader that does not successfully run.
7. `unity.py`, a Python 2 argument parser whose header describes a menu that is not implemented.
8. CodeDeploy packaging: `appspec.yml`, `scripts/`, `codedeploy_deploy.py`, `codedeploy_deploy_develop.py`, and `bitbucket-pipelines_org.yml`.

### Out of scope of this repository

- Creating, editing, versioning, or searching wiki articles as data.
- Accounts, sessions, password reset, or role enforcement.
- A database, API, or background worker.
- The client that would call such an API. None is referenced.

## System architecture

```text
Browser
  │
  ├─ index.html  (static login form, no credential check)
  │     └─ navigates to views/dashboard/index.html
  │
  ├─ views/dashboard/index.html  (shell)
  │     ├─ links to views/template/blog.html  (labelled Wiki)
  │     ├─ links to theme dashboard pages
  │     └─ loads controller/core.js  (script does not parse)
  │
  └─ views/template/*  (INSPINIA 2.8 demo catalogue)
        assets/  (theme CSS, JS, images, locale JSON, email HTML, one PDF)

Bitbucket Pipelines file (not the standard filename)
  └─ zip the tree, upload to S3, create a CodeDeploy deployment
        └─ Amazon Linux host: yum install httpd, copy files to /var/www/html/
```

There is no application server. `httpd` is installed and started by the CodeDeploy hooks. The document root in `appspec.yml` is `/var/www/html/`.

## Major components

| Component | Path | Role |
|---|---|---|
| Login | `index.html` | Branded static form |
| Shell | `views/dashboard/index.html` | Side navigation, placeholder content, script include |
| Wiki fragment | `views/wiki/blog.html` | Static article cards. Not the target of the Wiki menu link |
| Theme catalogue | `views/template/` | INSPINIA demo pages |
| Page loader | `controller/core.js` | Commented role routing and a jQuery `.load()` helper |
| Scaffold CLI | `unity.py` | Prints `-i` / `-o` paths. Menu in the header is not code |
| Deploy | `appspec.yml`, `scripts/`, `codedeploy_deploy.py`, `codedeploy_deploy_develop.py` | CodeDeploy to `httpd` |
| Pipeline draft | `bitbucket-pipelines_org.yml` | Python 3.5.7 image, zip, boto3, deploy script. Filename is not `bitbucket-pipelines.yml` |
| Theme assets | `assets/` | About 1,519 files. Bootstrap 4.1.0, jQuery 3.1.1, INSPINIA 2.8 |

## Milestones visible in git

| When | Evidence | Status |
|---|---|---|
| 2019-05-02 | Single commit `bb3c49b`, message "first commit" | The whole tree arrives at once |
| After 2019-05-02 | No further commits on `master` | No later milestone is recorded |

The root login footer says `DEVELOPMENT`. No milestone document says what "done" means.

## Implementation plan recorded in the tree

`unity.py` comments list a menu that has no corresponding code and no `unity.bat` or `unity.sh`:

1. New Project
2. New Model, View, Controller
3. New Model
4. New View
5. New Controller
6. Commit to branches
7. Show details, AWS, GitHub
8. Setup details, AWS, GitHub

`controller/core.js` comments name roles `1` Developer (debug), `2` Admin, `3` Manager, and `4` with no name, and show jQuery loads of `template/nav/topnav_<role>.html`, `sidenav_<role>.html`, `topsearch_<role>.html`, and `template/footer/footer.html`. Those paths are not in the tree. The loads are commented out.

Provenance: **Planned** only as comments. **Not implemented.**

## Known dependencies

- Browser with JavaScript for the theme scripts and for `controller/core.js`.
- Google Fonts stylesheets imported by `assets/css/style.css` (Open Sans, Roboto).
- For the deploy path: Bitbucket Pipelines, Python 3.5.7, `zip`, `boto3==1.3.0`, AWS S3, AWS CodeDeploy, and a Linux host where `yum` can install `httpd`.
- Pipeline environment variable **names** read by the deploy scripts: `APPLICATION_NAME`, `APPLICATION_NAME_DEV`, `DEPLOYMENT_GROUP_NAME`, `DEPLOYMENT_GROUP_NAME_DEV`, `S3_BUCKET`, `DEPLOYMENT_CONFIG`. Values are not in the repository.
- AWS credentials for boto3 are not in the repository. How they were supplied is **Unknown**.

## Current project status

**Implemented** as a one-commit static theme scaffold with deploy scripts. The Wiki menu opens a theme blog page. The wiki fragment and the page loader do not form a working article feature.

**Not implemented:** article CRUD, search over articles, accounts, sessions, roles, models, the Unity menu, and an active pipeline file name.

**Unknown / Requires Confirmation:**

- Whether any host still serves this tree.
- Whether `bitbucket-pipelines_org.yml` was ever enabled under another name.
- Whether the department dashboard labels (Software, Technical, Support, HR, Finance) were an intended information architecture.
- Whether `SOawsCodeDeploy.pem` is still a live credential. It is an RSA private key committed at the repository root. It is not referenced by the Python deploy scripts. It should be treated as exposed.

## Human review

- Confirm the product name and whether this repository is still in scope.
- Confirm that no live system depends on the committed private key, then rotate and remove it.
- Confirm whether Sonar files existed only on the scan host.
