A lightweight client communication and contract management app with role-based access.
/
├── / (Chat App)
│ ├── admin view: chat + admin sidebar
│ └── public view: chat + public sidebar
│
└── /admin/
├── /clients (data table)
├── /contracts (data table)
└── /conversations (data table)
AppStore
├── user (Supabase User)
├── profile
├── conversations[]
├── contracts[]
├── messages[]
├── files[]
├── profiles[] (admin only)
└── ui
├── selectedConversationId
├── contractModal
├── profileModal
└── filters
User (1) ←→ (1) Profile
User (1) ←→ (N) Conversations
User (1) ←→ (N) Contracts
Contract (N) ←→ (N) Conversations
Conversation (1) ←→ (N) Messages
Message (1) ←→ (N) Files
- Conditional rendering based on user role
- Public: chat + conversations/contracts sidebar
- Admin: chat + recent items sidebar
- Sortable, filterable data tables
- Status updates via dropdowns
- Search and filter controls
- Contract details with edit restrictions
- Profile management
- React + TypeScript
- Supabase Auth + Database
- Zustand + React Query
- Tailwind CSS