Software product · Case study
Shahan Workspace
A calm, invite-only workspace for teams: tasks at the centre, with chat, calendar and announcements supporting the work. Built for mobile with React Native and Supabase, with a companion desktop app.
- Role
- Product owner & design direction
- Year
- 2026
- Discipline
- Apps, Software & Development, Websites
- Tools & technologies
- React Native
- Expo
- TypeScript
- Supabase
- PostgreSQL
- TanStack Query
- Zustand
- React Hook Form
- Zod
- Next.js

Responsibilities
- Product direction
- UX and design approval
- Release testing on iPhone and Android
- Type
- Team workspace — mobile and desktop
- Platforms
- iOS and Android (Expo), desktop (Next.js)
- Backend
- Supabase: Postgres, Auth, Storage, Realtime, Edge Functions
- Role
- Product owner & design direction
Overview
Shahan Workspace is a premium workspace for teams. Its design philosophy is closer to Linear, Apple and Notion Calendar than to dense project-management tools: one primary action per screen, and white space treated as a feature.
What it does
Home / My Day — today's tasks, a once-a-day Morning Brief, pinned announcements and notifications that need attention.
Projects & tasks — a list and timeline view, single-assignee tasks with statuses and priorities, swipe to complete.
Calendar — agenda-first month and week views with quick add.
Chat — channels and direct messages with replies, reactions, read receipts, typing indicators, attachments and search.
Announcements, push notifications, Spotlight-style global search, a people directory and System / Light / Dark appearance.
Architecture
The mobile app uses Expo Router with TypeScript in strict mode. Server state lives only in TanStack Query; Zustand holds short-lived interface state. Forms are validated with Zod through React Hook Form.
The backend is Supabase: Postgres with Row-Level Security, Auth with invite-only accounts, Storage for attachments and avatars, Realtime for chat and activity, and Edge Functions for invitations and push delivery. The desktop app is a separate Next.js client of the same backend.
Security, performance and accessibility
A privilege-escalation path was closed with column-level grants beneath Row-Level Security, and cross-tenant isolation was verified with executed attack tests. Uploads have size caps and MIME allow-lists.
The calendar agenda was virtualised, taking its p95 render time from 61 ms to 14 ms (documented in the project's benchmarks).
Text contrast meets WCAG AA, controls are labelled, and touch targets are at least 44 pt.
