Back to the portfolio
Case study · Vizion Portal

No more "where are we?"
Clients can just look.

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.

Who it's for
Our clients during their project; our team behind the scenes
Runs on
Any web browser, on a phone, tablet or laptop
Built with
Next.js, Supabase (Postgres)
Status
Our own product, hosted on Vercel; started Sept 2026

01 — The problem

Project updates were scattered across chats.

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:

  • Progress and the current phase at a glance, without asking us
  • A clear list of what's waiting on the client, so nothing stalls quietly
  • Design sign-offs on record, not buried in a chat
  • Test versions and bug reports in one place, with a way to confirm a fix
  • Each client seeing only their own company's projects

02 — How we built it

The same six steps we use for every client.

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.

  1. 1

    Brief

    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.

  2. 2

    Design decisions

    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.

  3. 3

    Clickable prototype

    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.

  4. 4

    Build in small pieces

    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.

  5. 5

    Test and harden

    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.

  6. 6

    Ship and support

    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

Click through the prototype.

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.

  • Open "Approve the checkout design" and approve it, or ask for changes
  • Go to Releases to see the latest test version and how to install it
  • Open ticket #14 in Feedback and confirm the fix
portal.vizion.dev

04 — Key decisions

Four choices that keep it simple and private.

In plain English, without the jargon.

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.

Privacy is enforced by the database

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.

Clients can only do a few things, on purpose

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.

Our tools feed it, but a person writes the words

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

What it's made of.

App

Next.js 15 and React 19 with server actions, written in TypeScript

Design

Tailwind CSS 4, light and dark themes, motion that switches off for reduced-motion settings

Data

Supabase Postgres with row-level security; the activity log is written by database triggers

Sign-in & live

Supabase email-link sign-in, and Supabase Realtime so pages update as things change

Files & email

Private Supabase Storage with short-lived links; Resend for notification emails and a weekly digest

Integrations

A signed GitHub webhook for draft updates; GitHub Actions to build and post Android test versions

06 — What's next

Part of how we work with you.

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:

  • Uploading large files straight to storage, for big designs and reports
  • Per-client branding inside the portal
  • Shona and Ndebele versions of the screens

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

Want something like this for your business?

We follow the same steps for every client, and you see a clickable prototype before you pay for the build.

Book a free consultation → See more of our work