Start here

Arrows to move, enter to open, escape to close.

Ship/Now

Start here · 2 min

Install

From a fresh clone to a running app on your machine. Four commands, about ten minutes, most of it waiting for Supabase.

Clone it

Use your own repository name. The kit is yours to rename, and you should: every reference to ShipNow in your git history is a reference to somebody else's product.

git clone git@github.com:tryshipnow/shipnow-kit.git my-product
cd my-product
rm -rf .git && git init
npm install

Set it up

npm run setup

That is the whole install. setup is a wizard rather than a script that prints a to-do list: it asks for your product name, your Supabase project, and, if you want them now, email and payments. Every answer is checked against the real service before it moves on, so a wrong key is caught at the prompt instead of three commands later.

It writes .env and src/config.ts, creates your database tables, and offers to start the app.

Skip anything you are not ready for. Run it again later and it reads what is already there, asking only for the rest.

Check it

npm run doctor

Reads your .env and asks each service whether the key still works. This is the command to run when a page goes blank and the console says nothing: the cause is usually one expired key among six, and this names it.

Run it

npm run dev

http://localhost:3000. Sign in with your own email. The magic link is printed in the Supabase dashboard under Authentication, Logs until you wire Resend, so you do not need working email to test the flow.

What just happened

CommandWhat it touched
npm run setupsrc/config.ts, .env
npm run db:pushYour Supabase project's schema
npm run devNothing. Compiles messages first, then serves

npm run dev runs npm run paraglide before it starts. If you edit messages/en.json, the compiled messages regenerate on the next start, not on save. That surprises people once.

Next

Configuration is the one file you change to make this your product.

Something wrong or missing on this page? Tell us.