The developer portal for PortixOne — landing, docs, tutorials, examples, roadmap, changelog, and comparisons. Not just a marketing site: the home for the whole developer ecosystem, separate from a future
portix.onecommercial site.
Astro + TypeScript + Tailwind CSS, deployed on Vercel. Waitlist backed by Supabase (Postgres + Edge Functions) + Resend for confirmation emails.
| Route | Status |
|---|---|
/ |
Hero, problem, how it works, SDK snippet, use cases, waitlist |
/docs |
Links to what exists today (runtime + SDK READMEs, examples, cheatsheet) |
/learn |
Tutorial stub — empty until the weekly content cycle starts |
/examples |
Table linking to browser-printing-examples |
/roadmap |
Real roadmap from printing → cash drawer → scanner → scales → displays → marketplace → full edge platform |
/changelog |
Build log #1, in the manual's Built/Learned/Fixed/Next/Question format |
/compare |
vs QZ Tray, vs JSPrintManager |
npm install
cp .env.example .env # fill in Supabase values once you have a project (see below)
npm run devWithout .env values, the site still runs — the waitlist form shows a "not connected yet" message instead of crashing.
You don't have accounts yet, so here's the exact path to a working waitlist:
- Create a free project at supabase.com.
- Run the migration in
supabase/migrations/20260702000000_create_waitlist.sql— either paste it into the Supabase SQL editor, or with the CLI:supabase link --project-ref <your-project-ref> supabase db push
- Deploy the Edge Function:
supabase functions deploy waitlist
- Copy Project URL and anon public key from Project Settings → API into
.envasPUBLIC_SUPABASE_URL/PUBLIC_SUPABASE_ANON_KEY.
- Create a free account at resend.com and verify a sending domain (or use their shared test domain to start).
- Create an API key.
- Set it as a Supabase secret (never in
.env— the Edge Function reads it server-side):supabase secrets set RESEND_API_KEY=re_your_key_here - Update the
from:address insupabase/functions/waitlist/index.tsto match your verified domain (it's currentlyhello@portix.dev).
vercel link
vercel env add PUBLIC_SUPABASE_URL
vercel env add PUBLIC_SUPABASE_ANON_KEY
vercel --prodOnce all three are connected, submitting the waitlist form inserts a row into the waitlist table and sends a confirmation email — no code changes needed.
MIT