# Technical documentation — storefront

Evidence date: 2026-10-02. Source: `git@bitbucket.org:overdrive/storefront.git`, `main` at `1f3fb2cd6580eb93eacd48ae943917aa1a3caa6c`.

Provenance labels: **Documented**, **Implemented**, **Inferred**, **Planned**, **Unknown**.

No technical document existed in the repository or in `silicon_ark/storefront/` before this file.

## What this repository is

A Bitbucket Git repository in the `overdrive` workspace with slug `storefront`. On 2026-10-02 `main` contained two commits and one file.

Provenance: **Implemented** (clone, `git log`, `git ls-tree`).

It is not the Admin Overdrive application documented under `silicon_ark/wca_dms/`. That is a separate repository. The ignore files are compared below. Neither tree names the other.

## Inspection method

1. `git ls-remote git@bitbucket.org:overdrive/storefront.git HEAD` printed `1f3fb2cd6580eb93eacd48ae943917aa1a3caa6c`.
2. The tree was cloned with `git clone git@bitbucket.org:overdrive/storefront.git`. `git status -sb` reported `## main...origin/main`.
3. `git branch -a` listed only `main` and `remotes/origin/HEAD -> origin/main`.
4. `git log --all` showed two commits. `git rev-list --all --count` printed `2`. `git tag -l` printed nothing.
5. `git ls-tree -r HEAD` listed `.gitignore` only.
6. The scan-host path `~/projects/sonar_scan/repos/storefront` does not exist on this machine (`%USERPROFILE%\projects` is absent). The two filenames in OVER-292 were therefore not opened.
7. Bitbucket repository metadata through the Bitbucket API client returned HTTP 401, so project settings, default-branch configuration beyond `origin/HEAD`, and permissions were not read. Git's `origin/HEAD` still points at `origin/main`.
8. `wca_dms` `.gitignore` was fetched from `main` at `9f51c26a4a366bf81272248fc6e5f6e9481697b7` and diffed against this file. The CodeIgniter 4 framework `.gitignore` at tag `v4.0.0-rc.3` was read from the public framework repository for the template comparison.

## Application structure

```text
storefront/
└── .gitignore
```

No `app/`, `public/`, `src/`, `spark`, `composer.json`, tests, or infra directory exists in the remote. Local `.git/` after the clone is client metadata and is not a project source file.

## The only file

### At `d1ecaaf` (removed by the next commit)

`.gitignore` was 50 lines. The first lines are comments:

- "These are some examples of commonly ignored file patterns."
- "You should customize this list as applicable to your project."
- A link to `https://www.atlassian.com/git/tutorials/saving-changes/gitignore`.

Patterns that followed, grouped as the file comments grouped them:

| Comment in the file | Patterns |
|---|---|
| Node artifact files | `node_modules/`, `dist/` |
| Compiled Java class files | `*.class` |
| Compiled Python bytecode | `*.py[cod]` |
| Log files | `*.log` |
| Package files | `*.jar` |
| Maven | `target/`, `dist/` (second time) |
| JetBrains IDE | `.idea/` |
| Unit test reports | `TEST*.xml` |
| Generated by MacOS | `.DS_Store` |
| Generated by Windows | `Thumbs.db` |
| Applications | `*.app`, `*.exe`, `*.war` |
| Large media files | `*.mp4`, `*.tiff`, `*.avi`, `*.flv`, `*.mov`, `*.wmv` |

Provenance: **Implemented** (file contents at `d1ecaaf`, visible in `git show 1f3fb2c`).

**Inferred:** this was a host-generated starter ignore file. The commit message is `Initial commit`, the commit contains nothing else, and the header tells the reader to customize the examples. That file does not select a language. Node, Java, Python, and Maven patterns appear together because the template lists them together.

### At `1f3fb2c` (current)

`.gitignore` is 141 lines. The starter patterns above are gone. The new file is grouped by its own comments:

| Section comment | Patterns that matter for identifying the template |
|---|---|
| Operating Specific Junk Files | macOS, Windows, and Linux junk (`.DS_Store`, `Thumbs.db`, `*~`, and similar) |
| Environment Files | `.env`, `.vagrant`, `Vagrantfile`. Comment says environment files should not be versioned |
| Temporary Files | `writable/cache/*`, `writable/logs/*`, `writable/session/*`, `writable/uploads/*`, `writable/debugbar/*`, each with a negation for `index.html` except `debugbar`. Also `php_errors.log` |
| User Guide Temp Files | `user_guide_src/build/*` and `user_guide_src/cilexer/` build, dist, and egg-info |
| Test Files | `tests/coverage*`, a `phpunit` binary, `/results/`, `/phpunit*.xml`, `/.phpunit.*.cache` |
| Composer | `vendor/`, `composer.lock` |
| IDE / Development Files | `_modules/*`, `.php-version`, JetBrains, NetBeans, Sublime, `/api/`, `.vscode/` |
| Project Specific Folders | `uploads/`, `public/log.txt`, `public/errorLogs/` |

Extra temporary paths that are not in the CodeIgniter 4.0.0-rc.3 framework `.gitignore`:

| Pattern | Negation kept in the file |
|---|---|
| `writable/temp_export/*` | `!writable/temp_export/index.html` |
| `writable/company_orders_xml/*` | `!writable/company_orders_xml/index.html` |
| `writable/company_invoices_xml/*` | `!writable/company_invoices_xml/index.html` |

Provenance: **Implemented** (file contents at `1f3fb2c`).

`sonar-project.properties` and `sonarqube_scan.bat` are not among the patterns.

## Comparison with CodeIgniter 4

The public CodeIgniter 4 file at tag `v4.0.0-rc.3` (framework repository `.gitignore`) has the same section headers through Visual Studio Code, the same `writable/` cache/logs/session/uploads/debugbar block, the same `user_guide_src/cilexer/` lines, and the same Composer and IDE blocks. That tag's file ends at `/phpunit*.xml`. It does not contain `/.phpunit.*.cache`, the three extra `writable/` directories, or the "Project Specific Folders" block.

Later framework tags (compared: `v4.0.4` and `v4.5.0`) drop the `cilexer` lines and add `writable/**/*.db` and `writable/**/*.sqlite`. This repository's file still has the `cilexer` lines and does not have the `*.db` / `*.sqlite` lines.

**Inferred:** the current ignore file started from a CodeIgniter 4 ignore list of about the 4.0.0-rc.3 shape, then gained `/.phpunit.*.cache` and the project-specific blocks. That inference identifies the template. It does not mean this repository contains CodeIgniter. There is no `spark`, `app/Config`, `public/index.php`, or `composer.json`.

## Comparison with wca_dms

`git diff` of `wca_dms` `.gitignore` at `9f51c26` against this file shows a single difference. `wca_dms` has this extra pattern, and storefront does not:

```text
writable/reports/*
```

Every other line matches, including `writable/company_orders_xml/`, `writable/company_invoices_xml/`, `writable/temp_export/`, and the project-specific `uploads/` and `public/errorLogs/` lines.

Provenance: **Implemented** as that diff on 2026-10-02.

`wca_dms` `main` is a CodeIgniter 4 application. Its Silicon Ark notes say the repository history begins 2025-09-01, which is after this file was committed (2025-02-06). See `project-plan.md` for why that date blocks "copied from the wca_dms remote" and leaves a shared older tree as **Unknown / Requires Confirmation**.

## Frameworks and languages

No source file exists from which a language could be identified by syntax.

| Signal | What it supports | Provenance |
|---|---|---|
| Slug `storefront` | Nothing technical | **Unknown** |
| `.gitignore` at `d1ecaaf` | No single language. Example list | **Implemented** file, since replaced |
| `.gitignore` at `1f3fb2c` | The template is CodeIgniter 4 / PHP / Composer shaped | **Inferred** template source. The runtime is not installed |
| `composer.json`, `*.php`, `spark` | Would identify PHP. None are in git | **Unknown** whether PHP was the intended stack |

**Unknown / Requires Confirmation** what stack was intended, if any.

## Runtime configuration

No `.env`, `env` template, `app/Config`, or Vagrantfile is in git. `.env` and `Vagrantfile` are ignore patterns only.

## Authentication

No application auth. Bitbucket access control for push and admin was not listed (API client returned 401). **Unknown / Requires Confirmation.**

## Data

No database, migration, schema, or local store.

## APIs

No HTTP route, client, or OpenAPI file. The pattern `/api/` ignores a directory of that name. The directory is not in the tree.

## Background work

No worker, queue, cron, or pipeline definition. There is no `bitbucket-pipelines.yml`.

## Storage

No bucket, disk path, or upload handler. `uploads/`, `writable/uploads/`, and `public/errorLogs/` are ignore patterns. They are not storage integrations.

## Build, environments, and scripts

No build script. No `Dockerfile`, `docker-compose`, `Makefile`, or host-specific config.

`composer.lock` is ignored. There is no `composer.json` to lock.

## Testing

No test runner and no tests. `tests/coverage*` and PHPUnit patterns appear only as ignore patterns. There is nothing to execute.

## Security notes (observed, not a pentest)

No application surface is present, so there is no route or dependency to review. No credential file was in the tree.

`.gitignore` does list `.env`, with a comment that environment files are a security risk if committed. That exclusion is **Implemented** as an ignore rule. It is not evidence that an environment file exists on a server.

`composer.lock` being ignored would, in a real Composer app, make installs non-reproducible. There is no Composer project here, so that risk is latent in the template only.

## Deployment and operations

**Unknown / Requires Confirmation.** Nothing in git names a host, a pipeline, a document root, or a monitoring system. The slug is not shaped like a hostname.

OVER-292 lists `sonar-project.properties` and `sonarqube_scan.bat` on the scan-host working tree. They are not in the remote, and their contents were not read. A Sonar project key, server URL, or scan command cannot be stated.

## Git metadata

| Field | Value |
|---|---|
| Default branch | `main` (`origin/HEAD`) |
| Tip | `1f3fb2cd6580eb93eacd48ae943917aa1a3caa6c` |
| Tip author | Wessels `<wessels@overdrive.co.za>` |
| Tip author date | 2025-02-06 10:26:44 +0200 |
| Tip message | `Update gitignore file` |
| Parent | `d1ecaaf05d14b48a77d117b77b0aa5e33e83901f` |
| Root author | Wessels de Wet `<wessels@overdrive.co.za>` |
| Root author date | 2025-02-04 13:15:07 +0000 |
| Root message | `Initial commit` |
| Other branches / tags | none |

## Related repositories

| Repository | Relationship as evidenced | Provenance |
|---|---|---|
| `wca_dms` | Separate repo. `.gitignore` matches except `writable/reports/*`. Silicon Ark docs describe a CodeIgniter 4 Admin Overdrive app that writes `writable/company_orders_xml/`. History there starts 2025-09-01, after this file. No cross-reference in this remote | **Unknown** whether they share a parent tree or a product |

A Markdown search of Silicon Ark for `storefront` before this directory returned no hits.

## Human confirmation

- Intended language, framework, and host, if this repository is still a planned codebase.
- Bitbucket project permissions.
- Whether the ignore file should stay aligned with `wca_dms`, including the missing `writable/reports/*` line.
- Contents of the scan-host Sonar files, if they are considered part of the project.
- Whether any part of `wca_dms` belongs with this slug.
