Docs · Getting Started

Installation

Prerequisites and how to boot the kit locally with bin/setup and bin/dev.

One Shot runs on a fresh clone with zero external accounts. There is no Postgres to install, no Redis to run, and no API key to request before you see the app working. The database is SQLite, and every third-party integration (billing, email, bot checking) ships with a Local fake that runs the whole flow in-process. You add real keys later, only for the integrations you actually want live. See Bring Your Own Keys for that step.

What you need before you start

Two things, and only one of them is required:

  • Ruby, at the version pinned in .ruby-version, plus Bundler. This is required: the app is a Rails 8 application and won't boot without it.
  • Node, only if you plan to use the optional Stripe MCP server via npx. The app itself needs no Node build step, no npm install, and no JavaScript bundler. Importmap serves JavaScript straight from app/javascript/ with no compile step.

You do not need Docker, Postgres, Redis, or a cloud account of any kind to run the app locally.

Installing and booting the app

From the root of the repository:

bin/setup

This installs gems, prepares the SQLite database, and seeds a demo workspace. It is safe to run more than once.

Then start the app:

bin/dev

bin/dev runs the Rails server (and any watch processes the app needs) in one command. You can also run bin/rails server directly if you don't need the extra watchers. Either way, the app is now running at http://localhost:3000.

What "zero external accounts" actually means

Every integration in One Shot follows the same shape: a real client when you've configured credentials, and a deterministic fake otherwise. Billing without a Stripe key runs entirely through a Local billing fake that behaves like Stripe well enough to develop and test against. Email without a Resend key opens in your browser via letter_opener instead of sending anywhere. This is why installation has no credential step: the app works fully, end to end, before you decide which integrations to turn on. Read The Adapter+Fake Pattern for how this is implemented, in case you want to add your own integration the same way.

Next

Once the server is running, head to First Run to sign in and see what's there.