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
Step 01
Project work in Asana
Step 02
Mirrored into the portal
Step 03
Grouped by service stream
Step 04
Client sees progress
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
- 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.
- 02An Asana mirror that keeps the portal fast and works out each project's service stream from its tasks.
- 03A task drawer where staff comment on, complete and edit Asana tasks from the portal, with cultural approval checked on the server.
- 04A weekly calendar to Asana sync that shows a plan first, writes nothing without approval, and blocks duplicates.
- 05Honest numbers and reassuring empty states, so a quiet project never reads as a neglected one.
Build notes
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.
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.
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.
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.
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