Beacon VTS · Growth

How Beacon grew

Every merged branch, decision record, pull request and release since the first vanilla JavaScript folder in May 2025, grown into one tree. The seed is the original idea. The tip is today.

commits in git
1,523
decision records
199
branches merged
175
releases
232
dated backups of the original
10

Height is time, squeezed so the busy months stay readable. The thin lower trunk and the seed are the vanilla JavaScript app; the thick upper trunk is the rebuild, tracked in git. Each family of branches is one area of the product.

Ring on the trunk
a release
Octahedron
a merged branch
Small pyramid
a decision record (ADR)
Hexagon
a pull request
Cube
a dated backup or a file in the original app
Icosahedron
a branch that was never merged
Ember
the tip

Drawing the tree

  1. beacon-vts-app created

    The vanilla JS project folder is created. This is the seed.

  2. First files on disk

    Earliest surviving file dates: logos, Firestore indexes, the login network-animation.js.

  3. Source data gathered

    Open Builds tracker PDF, a customer materials sheet and attendance workbook land in VTS project tools and files, plus two OneDrive zips of about 400 MB.

  4. Data transform tool

    Data_tool.html: a standalone page for reshaping the workbooks before they go into Beacon.

  5. Refactoring Tool splits build-schedule.js

    A 129 KB build-schedule.js is cut by script into 12 modules (table view, calendar view, upload handler, data service and more).

  6. Nine screen recordings

    VTS Recording holds nine mp4 walkthroughs of the app from this day.

  7. Passdown App starts

    Sibling shift-handoff app created on the same vanilla stack.

  8. Material system upgrade

    Plain table replaced by a Tabulator grid with server-side pagination (MaterialService). The write-up claims about 95% faster first load.

  9. Cloud Functions + sign-up flow

    functions/index.js reaches 68 KB; password-change and registration scripts added.

  10. beacon-vts-v2: first Next.js scaffold

    15 files: materials page, auth hook, Zustand store, tenant provider. Three weeks later the work restarts as app-rebuild.

  11. app-rebuild begins

    Next 15 + TypeScript + Firebase. By 26 Oct it has 19 dashboard routes and 16 services, including Checkpoint, Coverage Analyzer and Executive Dashboard.

  12. Vanilla history.js still edited

    history.js reaches 204 KB and index.html 512 KB on the same day the rebuild is running in parallel.

  13. Git begins

    The first commit in the repository. Everything before it is known only from dated backup folders.

  14. v2.0.0

    TypeScript Rebuild

  15. v2.10.0

    Labor Planner Redesign

  16. v2.20.0

    Line Layout Builder

  17. v2.30.0

    Access-control release

  18. v2.40.0

    Stock Ages Between Uploads

  19. v2.50.0

    Peak Headcount Now Means People

  20. v2.60.0

    The Headcount Ceiling Now Actually Holds

  21. v2.70.0

    The Price You Agreed Is the Price You Bill

  22. v2.80.0

    Switch Off a Role You Do Not Use

  23. v2.90.0

    Put a SKU’s Rate on Its Engineering Standards

  24. v2.100.0

    Add a New Candy or Corrugate Without Leaving the Material

  25. v2.110.0

    Things That Arrived And Were Quietly Dropped

  26. v2.120.0

    Every Order Shows Its Own Plan

  27. v2.130.0

    Change A Step's Frequency Right In The Dossier

  28. v2.140.0

    Run Ahead Of The Plan: Pull Forward And Overrun Trims

  29. v2.150.0

    Pull Forward by Hours, and Fill the Week

  30. v2.160.0

    Each SKU Opens at Its Own Quote Quantity

  31. v2.164.0

    Stages Run on the Floor: Checkpoint Live, Boards and Shift Review

  • The vanilla JavaScript app had no git. Its dates come from backup folders and file modified times, so a file “first seen” on a date may be older than that backup.
  • Nothing was found between the last rebuild builds in November 2025 and the first commit on 24 February 2026.
  • Branches and decisions are sorted into families by keyword, so some sit on the wrong limb. Sign-in and access-control items keep their number and date but their wording is withheld.