Skip to content
Menu
WorkServicesAboutBook an audit
All drawings

Fig. 9 Cultural heritage consulting

Clients see their project work without opening Asana

A private portal that shows each client their Asana project work, grouped by the consultancy's three service streams, with staff task editing gated by cultural approval.

Client
Aboriginal cultural heritage consultancy
Industry
Cultural heritage consulting
Region
Australia
Discipline
Custom apps

How it works

  1. Step 01

    Project work in Asana

  2. Step 02

    Mirrored into the portal

  3. Step 03

    Grouped by service stream

  4. Step 04

    Client sees progress

  5. Step 05

    Staff edits written back, approval checked

The problem

The consultancy's delivery work lives in Asana, but its clients need a calm, accurate view of it without logging in to Asana. Some tasks need sign-off from a designated cultural approver, so access rules matter as much as the data.

Built with

  • React
  • Next.js
  • TypeScript
  • Supabase
  • Postgres row-level security
  • Asana API
  • TanStack Query
  • Python

What I built

  1. 01A branded client portal, forked from a proven agency portal and stood up in a day, with its own database where hours, budgets and tasks stay hidden until staff share them.
  2. 02An Asana mirror that keeps the portal fast and works out each project's service stream from its tasks.
  3. 03A task drawer where staff comment on, complete and edit Asana tasks from the portal, with cultural approval checked on the server.
  4. 04A weekly calendar to Asana sync that shows a plan first, writes nothing without approval, and blocks duplicates.
  5. 05Honest numbers and reassuring empty states, so a quiet project never reads as a neglected one.

Build notes

  1. Edit Asana tasks from the portal, with cultural approval enforced

    Staff can now comment on, complete and edit Asana tasks without leaving the client portal, and changes write straight back to Asana. Only a task's designated cultural approver can act on it, checked on the server.

  2. Portal numbers that match reality, and calmer empty states

    The open-requests count now matches the inbox it links to. Projects with no shared deliverables say "Nothing needed from you right now" instead of a discouraging 0%. Small numbers, big trust cost on a live client account.

  3. Safe weekly calendar to Asana sync with duplicate protection

    A weekly chore that once created 96 duplicate tasks in a client's live Asana is now safe to run. It shows a plan first, writes nothing without approval, catches near-duplicates, and checks the task count after each run.

  4. Asana projects mirrored into the portal, grouped by stream

    The portal now reads from a fast local mirror of the consultancy's Asana projects instead of calling Asana live. Each project's service stream is worked out from its tasks, because Asana only stores it per task.

  5. A new branded client portal, stood up in one day

    A cultural heritage consultancy got a client portal in one day, forked from a proven agency portal. A design system built on its three service streams, and a database where hours, budgets and tasks stay hidden until shared.

Next drawing

Medical records platform synced into GHL, no re-keying

Next drawing

Yours. What keeps breaking?

Tell me how many sub-accounts you run and what's been failing. I'll tell you where I'd start.

Prefer email?

Your details