Logo

Ourora Core is the in-house workspace where we run tasks, bugs, releases, analytics and feedback, so product and user data stay inside our own stack.

Role
Co-founder, product designer
Platform
Web app (internal)
Stage
Redesign specified, Oct 2026
Focus
Internal tooling, dense UI, design system
Ourora Core — coverOurora Core — cover
01

A privacy-first company needs its own tools

Ourora is privacy-first. We share as little data with third parties as we can, and today that list is three names: Google, Apple and Agora. Everything else has to be first-party.

That rule has a cost. A small team still needs task management, documentation, bug reports, releases, analytics, user feedback and admin. The usual answer is a SaaS tool for each, or another SDK in the app. Not being able to reach for those, and not trusting SDKs that may or may not be safe, was real friction.

Ourora Core is the other answer: one internal tool that does all of it. I am co-founder and product designer at Ourora, and I have also done engineering on the product, so I designed Core knowing who would have to build and maintain it.

  • Brief: one in-house workspace for planning, docs, bug reports, releases, analytics, user feedback and admin.
  • Sign-in is Google Workspace only. There is no sign-up and no public surface.
  • Every module sits on Duet Web, the web layer of Ourora's design system.

The trade-off

The usual way
A tool or SDK per job
  • Product and user data spread across vendors
  • Each new SDK is another party to trust
  • Every tool has its own patterns and logins
Core
One first-party workspace
  • Data stays in our own stack
  • Only Google, Apple and Agora see any data
  • One shell, one design system, one sign-in
02

Starting from the live tool

Core already existed as a working frontend, so the research was an audit of it rather than interviews. I went through the live screens and noted what a team of our size trips over.

Three problems came up repeatedly, and each one became a principle for the redesign.

Audit findings

What I foundWhy it hurtWhat the redesign does
Surfaces looked and behaved differently from module to moduleEvery module had to be re-learnedOne app shell and one component set behind every page
Controls that did nothingPeople stopped trusting the UIA control ships only if it works; settings that cannot persist yet stay hidden
Analytics numbers without events behind themPlausible numbers that could not be trustedCards say Not tracked yet instead of showing a value

Principles

01
Decide once, apply everywhere

The shell, overlays and stat cards are designed once and reused by every module.

02
Say when we don't know

If the app does not report an event, the dashboard says so rather than faking a number.

03
Status at a glance

Live counts in the sidebar and a Today view show what needs attention without opening each module.

04
Dense, not cramped

A working tool with many rows, tuned for density while staying legible in dark and light.

03

Information architecture

I started with the frame, not the screens. Core has one shell: a header with global search (Command-K), help, notifications and profile, and a sidebar grouped the way the team works. Every module is a page inside it.

Workspace holds daily work, Operations holds queues and analytics, Admin holds releases, feedback and access. Ops Queue and User Feedback show live counts, so the sidebar doubles as a small status board.

Sidebar and modules

Ourora Core
Workspace
Dashboard · Today
Planner · Board, List, Calendar
Notes · All notes, Document
Operations
Ops Queue · Board, List
Analytics · Summary, Details, Feature usage, Retention cohorts
Admin
Releases
User Feedback · Dev server, Production
Admin · Members
Global
Search ⌘K
Notifications
Profile & sign out
Sign in with Google Workspace
04

The redesign, module by module

With the shell fixed I worked module by module. Drawers and dialogs share one header and footer, tables share one row pattern, and every stat strip is the same Stat Card. All data in the screens below is sample data.

05

Built on Duet Web, not styled from scratch

Core is built on Duet Web, Ourora's web design system. It uses the Duet colours from the Ourora app as-is, with the same names and Dark and Light modes, so the internal tool and the product share one visual language. Dark is the default.

The rules are strict: if Duet has a colour, icon, button, avatar or input, use it; colours are variables, never hex; every padding, gap and radius is a token. Priority chips use the 100 step for text and the 50 step for border and accent bar, so they read in both modes.

The components exist to remove inconsistency. One Stat Card replaces the different stat strips on Dashboard, Queue, Admin, Profile and Analytics. One Status Badge covers queue types and statuses. Duet Web went from v0.1 to v0.4 in two days while the screens were being designed.

Colour, type and components

Values as resolved in Duet's Dark mode. Type is Lato.

Brand
AaBrand fillPink/50 · #B71280
Accent text#ED45B5
Neutrals
Text#FFFFFF
Raised#3E3E3E
Surface#191919
Page#000000
Priority
Low #98E698Medium #FFF2AAHigh #FFC680Urgent #F7ADBC
Accents
Info #33ADFFHighlight #C194E2
Title 1 · Lato Bold 32/40How is Ourora doing?
Title 3 · Lato Bold 20/28Calls drop after 30s on Android 14
Headline · Lato Bold 18/24Needs attention
Callout · Lato Regular 14/20Overdue Planner work and high-priority Ops Queue items.
Footnote · Lato Regular 12/18Data through Oct 5 · refreshed daily
Caption · Lato Bold 11/16WORKSPACE
Side NavApp HeaderPage HeaderSection HeaderStat CardStatus BadgePriority ChipTask CardBoard ColumnData TableTabSegmented ControlFieldForm FieldAvatarDialog & DrawerEmpty StateNotification Item & List Row

Tokens

GroupValues
Space0, 2, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 96, 128, 160
Radiusnone 0 · xs 4 · sm 6 · md 8 · lg 12 · xl 16 · 2xl 24 · full
TranslucentTB 25/50/75/100 = white at 20/40/60/80% for hairlines, disabled, supporting and secondary text
06

Where it stands

As of October 2026 the redesign is specified: ten modules on one shell and one component set, with the analytics decisions written down for build. Nothing is counted as shipped until it is built.

I am not putting adoption numbers or time savings here, because there are none to stand behind yet. What the design commits to: product and user data stay in our own stack, the interface says when it does not know something, and one system keeps the whole tool consistent.

10Modules in one shellDashboard, Planner, Notes, Ops Queue, Analytics, Releases, User Feedback, Admin, Profile, Auth.Core Figma file, Oct 2026
3Third parties with data accessGoogle, Apple and Agora. Everything else is first-party.Ourora privacy principle, per Sanay
Duet Web v0.1 to v0.4Design system iterationsFour versions in two days during the Core design work.Duet Web changelog, 6-7 Oct 2026
Still open

Some Founder summary KPIs, such as crash-free sessions, need events from the app before they can show a real number. Until then they read Not tracked yet.

Next Project

Fundraising Platform

Next