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:Seifbejaoui/shipnow-kit.git my-product
cd my-product
rm -rf .git && git init
npm install

Name it

npm run setup

It asks for a product name and a domain, writes both into src/config.ts, and copies .env.example to .env if you do not have one. It does not touch anything else. Read the diff.

Create the database

Make a Supabase project first, then put its URL and keys in .env. You need three values from Project settings, API:

NEXT_PUBLIC_SUPABASE_URL=https://<ref>.supabase.co
NEXT_PUBLIC_SUPABASE_KEY=sb_publishable_...
SUPABASE_SECRET_KEY=sb_secret_...

Then apply the schema. This needs a personal access token from supabase.com/dashboard/account/tokens, which is a different thing from the project keys above:

SUPABASE_ACCESS_TOKEN=sbp_... npm run db:push

That creates every table, policy and trigger in supabase/schema.sql, then reads them back to check. The schema is written to be run twice: every create is if not exists and every policy is dropped before it is created, so re-run it whenever you add a table.

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.