# Project plan — website (1 For The Road)

Evidence date: 2026-09-28.

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

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

## Product

**1 For The Road** is a membership chauffeur service. A member drives their own car to a venue. When they are ready to leave, a call centre sends a driver who drives the member home in the member's car. A second driver follows in the company vehicle so both drivers can leave after the drop-off.

Provenance: **Documented** on branch `development_russel` in `aboutus.html`, `index.html`, `packages.html`, and `faq.html`.

The public brand on that branch is "1 For The Road" (trademark mark in the footer). Founder named in the About copy: Joffy Senekal. Footer credit: developed by Silicon Overdrive, copyright line reads 2021.

A second brand, **14ya / 1 For Young Adults**, is present in the same admin codebase (`bookingYA.php`, `invoiceYA.php`, emails to `info@14ya.co.za` and `bookings@14ya.co.za`, and host entries for `www.14ya.co.za`). Provenance: **Implemented** on `development_russel`. How the two brands share operations is **Unknown / Requires Confirmation**.

## Branch reality

The repository has two relevant lines of history. They diverged at `bbdc3a0` (2021-04-21, "basic start") and were never merged.

| Line | Tip | Date | What it is |
|---|---|---|---|
| `master` (default; `origin/HEAD`) | `581c5d9` | 2023-05-05 | Prime Cab HTML theme plus a Matomo snippet aimed at `1fortheroad.co.za` |
| `origin/development_russel` | `a87b0c5` | 2021-06-25 | Custom 1 For The Road public site and PHP `webadmin` |

`master` history after the split is two commits, both by Jaco Brits, both editing only `index.html` analytics:

- `340f848` (2021-08-16) — add Matomo (`analytics.siliconsoftware.net`, site id 3).
- `581c5d9` (2023-05-05) — point Matomo at `analytics.medmin.co.za`, site id 5, cookie domain `*.1fortheroad.co.za`.

`development_russel` is 28 commits by Russel Sauer, from 2021-04-29 ("Initial commit after refresh changes - still busy") through 2021-06-25 ("update contact page front and backend … add 1fortheroad live DB details, replace logo").

**Discrepancy:** the default branch that was last touched in 2023 still shows the Prime Cab template (title "Prime Cab HTML5 Responsive Template", placeholder phone `+1-234-000-2345`, address "Primecab, United States"). The Matomo cookie domain on that same file is `*.1fortheroad.co.za`. The customised product is on a branch that stopped in June 2021 and is not in `master`.

Which tree is deployed to `www.1fortheroad.co.za` is **Unknown / Requires Confirmation**.

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

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

No project plan, README, or requirements document exists in the repository. The following objectives are **Inferred** from public copy on `development_russel`:

- Give members a way to get themselves and their car home without driving after drinking.
- Sell monthly membership packages (Basic, 20, 40, 80, and a bespoke Function package) and collect bank details for a debit order.
- Take bookings through a call centre (`0861 622 642`), not through a public booking form.
- Operate an internal admin (`webadmin`) for clients, vehicles, drivers, bookings, trips, invoices, and payments.
- Publish marketing pages: home, about, packages, why join, FAQ, contact, and registration.

## Scope

### In scope of the repository

On `development_russel`:

- Static marketing HTML for 1 For The Road.
- `register.php` and `contact.php` (reCAPTCHA, database write, email).
- `webadmin` PHP application on the Nemo class framework (clients, packages, bookings, young-adult bookings, invoices, payments, drivers, vehicles, areas, schedule, users, security groups, reports).
- PDF terms under `pdfs/` and `webadmin/Documents/`.

On `master`:

- Vendored Prime Cab theme (HTML, CSS, JS, images, fonts) under the repository root and again under `template/`.
- Matomo snippet on root `index.html` only.
- Theme PHP samples: contact forms, a ride-booking mailer, Mailchimp subscribe, and a Twitter OAuth helper. These are part of the theme, not the 1 For The Road membership system.

### Out of scope / not in this repository

- The call-centre telephony system. The site tells members to phone. No telephony integration is in the code.
- A member mobile app. `faq.html` has a "Download our App" heading and the theme includes app-store images. No app project, store URL, or app binary is in the repository. **Unknown / Requires Confirmation** whether an app exists elsewhere.
- The Matomo server (`analytics.medmin.co.za` / previously `analytics.siliconsoftware.net`).
- The MySQL server. Connection targets are configured in code; the database itself is not in git.
- Automated tests, CI, Docker, and a documented deployment pipeline. None are in the repository.

## System architecture

Two architectures exist, on different branches.

### Default branch (`master`)

A static site. The browser loads `index.html`, which pulls local CSS and JS (Bootstrap, jQuery 1.12.5, Owl Carousel, a colour switcher) and a Matomo tracker. Other theme pages live under `template/` and are not linked correctly from the root page (links are `aboutus.html`, while the file is `template/aboutus.html`).

### Product branch (`development_russel`)

```text
Browser
  → static HTML (index, about, packages, why join, FAQ, contact, register)
  → register.php / contact.php
       → Google reCAPTCHA siteverify
       → MySQL database "1fortheroad" (mysqli)
       → PHP mail() via NemoEmail
Staff browser
  → webadmin/login.php (email + MD5 password, PHP session)
  → webadmin entity pages (clients, bookings, invoices, …)
       → same MySQL database
```

Hosting names in `system.php` point at `sql24.jnb1.host-h.net` and `*.www452.jnb1.host-h.net`. Provenance: **Implemented** configuration. The inference that this is xneelo shared hosting is **Inferred** from the hostname pattern.

## Major components

| Component | Branch | Role |
|---|---|---|
| Marketing HTML | `development_russel` | Public site for 1 For The Road |
| `register.php` | `development_russel` | Membership application |
| `contact.php` | `development_russel` | Contact form email |
| `webadmin` | `development_russel` | Staff operations UI |
| Nemo classes (`_nemo.*.cls.php`) | `development_russel` | Database, email, menus, security, page layout |
| Prime Cab theme | `master` and `template/` | Uncustomised HTML template |
| Matomo snippet | `master` `index.html` only | Page analytics |

## Milestones visible in git

There is no milestone document. The commit sequence is the only timeline.

1. 2021-04-20 — initial commit and template add (`master`).
2. 2021-04-21 — theme assets copied to the repository root (`bbdc3a0`). This is the common ancestor.
3. 2021-04-29 to 2021-06-25 — `development_russel`: refresh, webadmin, registration, contact backend, reCAPTCHA, styling, Joffy feedback, live database settings. Commit messages say the first refresh was "still busy". No later commit says it was finished.
4. 2021-08-16 and 2023-05-05 — `master` analytics only.

No release tags were found.

## Implementation plan

No forward plan is written in the repository. **Unknown / Requires Confirmation** whether further work is expected.

What the code shows as unfinished or inconsistent:

- `development_russel` is unmerged. `master` does not contain the product.
- `aboutus.html` references `./videos/about_video1.mp4`. No `videos/` directory is in the branch.
- `packages.html` shows one set of monthly prices in the visible cards and different prices inside HTML comments. Charged prices are read from `tblPackage` at registration time, so the page and the database can disagree.
- Booking status text written on cancel-billable does not match the text the delete query excludes. See business rules.
- `contact.php` calls `Send()` and then calls `Send()` again when checking the result.

## Known dependencies

- PHP with `mysqli` and `mail()`. Version is **Unknown**.
- MySQL database named `1fortheroad`.
- Google reCAPTCHA v3 (site key is in the HTML; the secret is hardcoded in `register.php` and `contact.php`).
- jQuery 1.12.5, Bootstrap CSS/JS shipped in the repo, Owl Carousel, Font Awesome (a Font Awesome Pro CDN link is on the russel homepage).
- Matomo at `analytics.medmin.co.za` (master only).
- SMTP identity comes from system settings keys `SMTP Send As` and `SMTP BCC` (`$SystemSettings`). Where those values are stored at runtime is the settings table / Nemo settings loader. **Requires Confirmation** of the live values. Commented-out addresses in the PHP include `info@1fortheroad.co.za` and personal mailboxes; those lines are not the active path.

## Current project status

**Dormant in git, with an unresolved branch split.**

- Default branch last changed 2023-05-05, and that change did not add product behaviour beyond retargeting analytics.
- Product implementation last changed 2021-06-25 on an unmerged branch.
- No tests, no CI config, no README.
- Production database credentials and a reCAPTCHA secret are committed on `development_russel` in `system.php`, `register.php`, and `contact.php`. They are not repeated in this documentation. They need human review and rotation.

## Human confirmation required

1. Which branch, if either, is deployed to `www.1fortheroad.co.za` and `www.14ya.co.za`?
2. Is `development_russel` abandoned, or is it the source that should be documented as current?
3. Are the visible package prices (R99 / R275 / R418 / R677) the commercial prices, or does `tblPackage` differ?
4. Is the COVID hours notice (close at midnight instead of 02:00) still in force?
5. Is 14ya a live sister product on this codebase?
6. Should the committed database password and reCAPTCHA secret be rotated?
7. Were `sonar-project.properties` and `sonarqube_scan.bat` ever part of this project?
