logo
By Lawrence

6 minutes

Browse the Catalog

TL;DRbjs bbs opens a full-screen catalog right in your terminalThe text window where you type commands and read their output; the only surface a CLI gets to draw on., and you drive it with the keyboard. It shows components, courses, assets, and your own dev projects. Every component row shows a price in cheddarThe BabylonJS Market's spendable unit; acquiring a catalog component costs an amount of cheddar set by the listing. Shown as chdr in the BBS., or an ownedA component you already have access to — free, previously acquired, or covered by your membership — and can pull without spending. badge if you already have it. bjs cheddar shows your balance and ledgerThe running record of every unit of cheddar you earned or spent, printed under your balance by bjs cheddar..

Last lesson, Scaffold a Project, ended with a running game and an empty spot for community code. That spot is the src/Components/ folder, plus a registry.ts that finds anything you drop in it. Now you need something to drop in. And most of what you want to build, someone already built and published. So before you write any code, you go shopping.

The store is one command: bjs bbs. It is not a menu that prints a list and quits.

bjs bbs

What opens is a full-screen, animated bulletin board you drive with the keyboard. Courses, components, assets, your downloads, and the dev projects on your own disk all show at once. Its look comes from the old dial-up bulletin boards. Everything the marketplace sells sits on one set of shelves, and you walk them without leaving the terminal you're already working in.

The BBS home screen: the masthead carries your theme and cheddar balance, the nav runs across the top, and the hotkeys sit in the footer

The nav across the top is the same split the website uses. Code is the market you buy from. Library is what you already own.

A retro terminal library screen listing community components on shelves, some unlocked and some marked for members, drawn as 90s instruction-manual art

Themes and flags for bbs

The BBSBulletin board system, the dial-up-era online catalog whose look and keyboard-driven feel bjs bbs recreates in your terminal. is a normal subcommand, and it takes a few options — each one a switch you flip when you launch the board. The most useful is the themeA named color palette the BBS draws its whole interface in, chosen once and remembered for later sessions..

Six themes come built in: classic, desert, matrix, commando, sandiego, and ed209. classic is the default. Want green text on black for one session? Try this:

bjs bbs -t matrix

Pick a theme inside the settings screen instead and it sticks. Every future session opens in that theme. The other flags are about your connection, not the look. --no-animations skips the transitions on a slow link. --no-mouse falls back to keys only. And --saveTo ./assets sets where a file you grab from inside the BBS lands, instead of the folder you launched from:

bjs bbs --no-animations
bjs bbs --saveTo ./assets

Moving around works the way you'd expect. Arrow keys move, enter opens, and Q or escape backs you out.

The login from Lesson 1 is what makes the shelves yours. If the BBS needs to know who you are before it can show what you already own, it runs the same device-code handshake in a popup inside the board, drawn in whatever theme you picked.

Every component row has a price

Scroll into the component shelves and each row shows more than a name. There's a description, a dependency line, and a price marker — either a cost in cheddar, or an owned badge when the component is already yours.

That marker is personal. The server knows which components your account holds, so those rows read owned and cost nothing to pull. Everything else shows its price, which falls back to one cheddar when the listing doesn't set one. Two members can open the same shelf and read different numbers off it.

The Code shelf: each component with its category and an Access column reading ACQUIRED or a price in cheddar

Here's a made-up shelf, so you can see the shape of a row before you open one yourself:

HealthBar      floating health display       needs: Health      owned
EnemySpawner   timed enemy waves             needs: Enemy       owned
Homing         projectile target tracking    needs: Bullet        3 chdr

That needs: column hints at the footprint, and it matters more than it looks. When you acquire a component, you get its full dependency closureThe full set a component drags in: itself plus everything it needs, transitively, so acquiring one grants them all.. Homing pulls in Bullet, so you pay once and get both. That means "I'll just grab this one thing" can quietly turn into three. One warning: the needs: line shows only the direct dependencies, not the whole web. The server works out the full closure, and the final cost, when you acquire. So the real footprint can be larger than that one line suggests. Read the dependency line before you reach for a row. The eject command (Lesson 5) walks that same dependency web for you.

Check your cheddar balance and ledger

If acquiring costs cheddar, you need a way to see how much you have and where it went. That's a separate, smaller command: bjs cheddar. (It also answers to bjs credits, the name it shipped under.)

It takes one option, --json, for scripts. Run it plain and it prints your balance and the recent ledger. The ledger is the running record of what you earned and spent. It shows the same account balance the BBS shows:

bjs cheddar
  Cheddar balance: 42

Recent activity
delta  reason                     date
-----  -------------------------  ----------------
+50    welcome cheddar            2026-06-20 14:03
-3     acquired Homing (+ Bullet) 2026-06-21 09:17
-5     acquired TwinStickShooter  2026-06-22 16:40

The minus rows are acquisitions. Notice the second one names the dependency it carried along. Earning cheddar is the other side of this loop. When a component you submit gets merged (Lesson 7), cheddar lands here.

Make a shortlist without spending cheddar

Open the board with your scaffolded game in mind. You already have a player and a camera. What comes next? A score? An enemy? A health bar for when the enemy hits you? Arrow through the component shelves, read the dependency lines, and check owned-versus-cost. Write down the two or three names that match the feature you're imagining. But don't acquire anything yet.

Acquiring spends cheddar, and it's a careful choice you'll make in Lesson 5. You'll do it alongside arcade eject, the free way to pull the arcade package's own built-in components into your code. For now the catalog is open in front of you, your balance is read, and you have a short list of names. Next you turn those names into files.

Next: Download Assets and Componentsbjs download grabs an asset with a key that self-destructs in seconds, and acquires a component when the key names one instead.

Was this page helpful?

We read every note — tell us what's working and what isn't.

↑↓ NavigateEnter SelectEsc CloseCtrl+K Open Search