No passwords to forget
Clients type their email and get a sign-in link. There's no password to set up, forget or reset. Signing in alone shows nothing: a client only sees a project once we've added their email to it.
Vizion Portal is the dashboard our own clients sign in to while we build their software. It shows progress, milestones and test versions, and it's where they approve designs and report bugs. This page shows how we built it, and what using it looks like during your project.
01 — The problem
Clients kept asking "where are we?" over WhatsApp and email. Approvals got lost in long chat threads, and a test version sent as a file was easy to lose track of.
We wanted one place a client could open at any time and see where their project stands. It needed:
02 — How we built it
The portal is our own product, so we were the client too. Each step also says what you'll see in the portal when we follow that step on your project.
We set one order for every client screen: status, then progress, then what's happening, then what you need to do, then what's next. Payments stay out of it; we handle those with clients directly. On your project: we add your email to your project, you request a sign-in link, and your project appears with its milestones.
Before any screens, we decided who may see what, and wrote those rules into the database rather than the screens. We also chose email links instead of passwords. These choices are explained below. On your project: when we need your sign-off on a design, it shows up under "Your action is required" for you to approve or ask for changes.
We mapped the screens a client touches most (home, the project, an approval, releases and feedback) as a clickable prototype, using a sample shopping-app project. Try it below. On your project: designs and other files we share sit under Documents, grouped by type.
Each part was built on its own: milestones with tasks, approvals, documents, a feedback desk with reply threads, releases, notifications, an activity timeline and a "Your Vizion team" card. On your project: as we finish pieces of work, a short plain-English update appears, which can include screenshots and "Completed" and "Next" lists.
We checked each flow against the brief and kept the code type-checked. Every list has a friendly empty state, pages show loading outlines instead of spinners, and the error page offers "Try again". On your project: each new test version lands under Releases, ready to install, and you report bugs as numbered tickets with a priority.
The portal runs on Vercel, with the database and file storage on Supabase. On your project: when we fix a bug you reported, you confirm it's fixed or say it's still broken, and the help page lets you reach us by WhatsApp, email or a message.
03 — Try it
This is the clickable prototype, running live on the page. It uses a sample project and made-up names, and it may be a step behind the real portal.
04 — Key decisions
In plain English, without the jargon.
Clients type their email and get a sign-in link. There's no password to set up, forget or reset. Signing in alone shows nothing: a client only sees a project once we've added their email to it.
The rule "you only see your own company's projects" lives in the database itself, not just in the screens, and live updates follow it too. Contracts, designs and reports are kept private and downloaded through links that expire after 60 seconds.
A client can comment, report a bug, approve or ask for changes, and confirm a fix. They can't move a milestone or change a status by accident. Every approval is recorded with the client's email and the date.
When we merge a piece of code on GitHub, the portal makes a draft update; we reword it in plain English before the client sees it. When we tag a new Android version, it's built automatically and appears under Releases as "Download app".
Smaller touches came from the same thinking. Pages refresh by themselves when anything changes, so nobody has to reload. A slow or failed email never stops a save from going through, and every client notification also appears under the bell in the portal. Each person chooses which emails they get, and clients can add colleagues from their own company.
05 — Tech stack
Next.js 15 and React 19 with server actions, written in TypeScript
Tailwind CSS 4, light and dark themes, motion that switches off for reduced-motion settings
Supabase Postgres with row-level security; the activity log is written by database triggers
Supabase email-link sign-in, and Supabase Realtime so pages update as things change
Private Supabase Storage with short-lived links; Resend for notification emails and a weekly digest
A signed GitHub webhook for draft updates; GitHub Actions to build and post Android test versions
06 — What's next
If you work with us, the portal is where you follow your project. You'd open it to see progress and the current phase, anything waiting on you, the latest updates and test version, and a day-by-day timeline of what happened. A weekly digest email can sum up the week.
We're still improving it. These are on our list but not built yet:
The portal is a private, sign-in app, so there's no public link. Ask us and we'll walk you through it during a consultation.
Your project
We follow the same steps for every client, and you see a clickable prototype before you pay for the build.