Docs · Getting Started

First Run

Signing in with a magic code, the seeded demo account, and what you will see.

One Shot has no passwords. Every sign-in, yours and your future users', is either a one-time code sent by email or a Google/Apple sign-in button. On your first run, this means signing in takes one extra step compared to typing a password, and it's worth seeing that step happen once before you build anything on top of it.

Signing in with a magic code

Go to http://localhost:3000 and start a sign-in with any email address. In development, the app doesn't actually send that email anywhere: it opens in your browser automatically, through a gem called letter_opener. Open the message, copy the six-digit code, and enter it on the verification screen. That's the whole flow, and it's the same flow a real user goes through in production, just delivered by letter_opener instead of Resend.

The first time an email address signs in, it creates both a User and an Account together, in one transaction. There's no separate signup step: signing in for the first time is signing up. See Accounts and Tenancy for why that single chokepoint matters.

Or use the two seeded accounts

bin/setup seeds two demo accounts so you don't have to go through the email flow just to look around:

  • [email protected]: a member with a subscription already active, so you can see what a paying workspace looks like without touching Stripe.
  • [email protected]: an admin, exempt from entitlement checks, useful for seeing what an admin can reach that a regular member can't.

Request a sign-in code for either address the same way as any other email; the code still opens in letter_opener.

What you'll see

Once you're signed in, you land on the dashboard. From there you can look at:

  • Settings, where account-level preferences and the GDPR data export/delete flow live.
  • Pricing, which reads live from whichever billing mode is active (Local fake or real Stripe).
  • Projects, the example account-scoped, billed resource. It exists purely as a working template to copy from, and bootstrap-app removes it once you start building your real product; see Adding a Resource.

Next

Run bin/check to confirm the whole install is healthy: Verifying Your Setup.