About the Starter

Built because every other starter wastes your first week.

Wabbit runs a working agency on top of the tome platform. The Starter is the thing we fork when a new client shows up and we want to stop setting up and start shipping. Nothing in this repo is aspirational. Every block, every collection, every seed row is something we already use on real sites.


The bet is simple. Agency work lives or dies on how fast you go from "kickoff call" to "first live demo." If you spend the first week wiring a CMS, you are charging the client for work that should have been free, and you are the one who pays when the budget tightens in week three.

So we took the first week and put it in a repo. Fork, install, seed, and you are already past the plumbing. The starter is the reference composition for the entire tome platform, which means the code you see here is the same code that runs the Wabbit sites and the client sites the team ships every month.

How forking actually goes

Four steps between clone and client demo.

No walls of README. No nested setup scripts. The path from empty terminal to working site is short on purpose, so you spend your time on the thing the client is paying for.


The stack

Six layers, one working composition.

Each layer below is a real package you can read, patch, or rip out. The starter is the proof they compose cleanly. Click through the block gallery to see every descriptor rendered once, with the same field shapes you will use when you wire your own content.


Tome Platform

Core

tome-coretome-blocks-coreauth + gdpr + media

Surface Layers

tome-lmstome-orgtome-catalog

Block Packs

lms-packcatalog-packorg-pack

Demo Campaign

The org-pack campaign-banner block rendering a real campaign row from the tome-org seed.

3 objectivesOpen the campaign

The philosophy behind the starter is fork-and-own. You are not renting a framework and you are not running a SaaS. You clone the repo, and from that moment the code belongs to you. We will keep improving the starter, and you can pull those improvements when you want them, but the site on disk is yours the second you finish the git clone.

We picked Payload because the admin is generated from the schema, the access control is real, and the plugin surface does not fight you when your client asks for the third weird field. We picked blocks as the composition primitive because pages live longer than frameworks and blocks survive the next rewrite. We picked CSS Modules because the design token story has to survive theme packs, and global utility classes lose that fight every time.

If any of that sounds like the way you already work, you are the reader this starter was written for. Open the block gallery, walk a course, browse the org directory, and see whether the first mile we built matches the first mile you keep rebuilding.

The first fork where I did not rip out the seed data before starting. Everything there was already the thing I would have built anyway.

Agency lead

Ready to see the block catalog?

Every descriptor the Starter ships with, rendered once, on a single page. The fastest way to decide whether the Starter is the right starting point for your next project.

If blocks are not your thing, the courses gallery is the other end of the showcase. A seeded LMS, a working enrollment CTA, and the same tome-lms blocks you just read about, composed into a real learner flow.