All designs android-starter / designs
Clinicana
Design concept

The clinic, from the phone

The phone counterpart of the Clinicana CMS — a hair-transplant clinic's management system covering patients, operations, reservations, calendars, reports and a thirteen-role ACL. Drawn from the running product: the palettes are its own six styles, the icons are the Font Awesome glyphs it actually references, the login artwork is its own canvas routine replayed as SVG, and the brand mark is its own asset. Every one of its 60 pages is here — in Verde, Ember, Slate, Cocoa, Sky and Mono, light and dark. Pick a style above; every screen re-skins from the same markup.

103 screens × 6 styles × 2 themes 60 CMS pages covered 412 × 915 dp 1,236 renders
Designed from the running product Nothing here was guessed. All six palettes are the product's own data-variation blocks from tokens.css — radii and typefaces incl…

Nothing here was guessed. All six palettes are the product's own data-variation blocks from tokens.css — radii and typefaces included — verified against the running app's computed styles in both modes; the semi-dark rail is the html[data-nav="dark"] override, which is the CMS's shipped default. Only four groups are derived rather than copied: the login panel stops, the phone chrome, the dark field border, and the text inks that lift 37 colour roles to 4.5:1 at badge size — README.md lists every one with both numbers. The icons are the 164 Font Awesome glyphs a scan of frontend/src found the product actually uses. The six login artworks are its own LoginArt.vue canvas routines, replayed as SVG from a PRNG that reproduces the reference implementation bit for bit. The names, hospitals, hotels, airlines and packages come from the module seeders; the role catalogue and its permission counts from the legacy-ACL port; the 196 permission names from each module's config/actions.php. The brand mark is the product's own public/brand/logo.png, masked so it takes the active style's primary — exactly as AppLogo.vue does it.

Style Ember is the product’s default. Every screen is rendered in all six.

Getting in

9

The web login is a two-pane card. A phone has one column, so the brand panel becomes the header — which is exactly what the product's own ≤860px breakpoint does. The six artworks are the product's own canvas routines, replayed as SVG from the same seeded PRNG.

Splash
001

Splash

The one moment the app is pure brand, on the whorl motif.

Sign in
002

Sign in

The shipped default: Ember style, strands artwork.

Sign in — failed
003

Sign in — failed

The message the API actually returns for bad credentials.

Artwork · Follicles
004

Artwork · Follicles

Grafts leaving their units — the second of six motifs.

Artwork · Transfer
005

Artwork · Transfer

Donor area to recipient area, drawn as two densities.

Artwork · Whorl
006

Artwork · Whorl

The crown spiral.

Artwork · Hairline
007

Artwork · Hairline

The drawn hairline with its four reference points.

Artwork · Growth
008

Artwork · Growth

Twelve months of results as a rising curve.

Access denied
009

Access denied

A 403 that names the permission you are missing and the role you hold.

Dashboard

7

One request decides which widgets a role gets and in which band; the page renders what it is handed. Three of the profiles are drawn here — super-admin, responsible person and driver — because they are genuinely different screens, not the same screen with things hidden.

Dashboard
010

Dashboard

The super-admin profile: today, needs attention, this week.

Dashboard — responsible
011

Dashboard — responsible

Caseload-scoped: my pending, my conversions, my operations.

Dashboard — driver
012

Dashboard — driver

The smallest role in the system sees one list: its own transfers.

Operating list
013

Operating list

Today’s nine operations, with the two that are missing something called out.

Capacity · 7 days
014

Capacity · 7 days

Where the week is tight, and which day is already full.

Navigation drawer
015

Navigation drawer

The semi-dark rail — the CMS’s signature furniture — in its phone role.

Search
016

Search

The command palette: records first, then pages.

Patients

16

The desktop table has fourteen columns and three densities. A phone row shows five fields, so a sheet decides which five. The record keeps all six of the product's tabs rather than flattening them.

Patients
017

Patients

287 records, filtered by status, with hotel state on the row.

Search
018

Search

Matching across name, CRM ID and passport.

Filters
019

Filters

Status and hotel as chips; the long tail as rows.

Sort & display
020

Sort & display

Which five of the fourteen columns the second line carries.

Selection
021

Selection

Bulk delete, with what it actually deletes spelled out.

No results
022

No results

A search plus three filters, and the way back out.

Record · General
023

Record · General

Identity, ownership, and the note.

Record · Operation
024

Record · Operation

Date, hospital, method, team and technique.

Record · Payments
025

Record · Payments

The multi-currency price lines and the two documents.

Record · Flights
026

Record · Flights

Arrival and departure, and why editing one re-syncs a transfer.

Record · Hotel
027

Record · Hotel

The stay, and the covered-nights checklist that splits the bill.

Record · Drivers
028

Record · Drivers

Both transfers, including the one with no driver.

Record · Notes
029

Record · Notes

The operation-note thread, oldest context last.

Send
030

Send

The four things the product can email a patient.

Add patient
031

Add patient

Step 1 of 3 — the patient half.

Add patient — full day
032

Add patient — full day

Step 2 refuses a full date and offers three that are not.

Calendar & capacity

8

All five of the product's calendar views survive the move to a phone, because they answer different questions. The capacity rules that colour them sit at the end of the flow.

Month
033

Month

August 2026, with full days, closed days and per-day load.

Day
034

Day

One day as an agenda, against its capacity.

List
035

List

The next days as a flat feed.

Year
036

Year

Twelve month cards and the status split behind one of them.

Filter
037

Filter

Available-spots overlay and the responsible-person narrowing.

Capacity · weekdays
038

Capacity · weekdays

The default operations per weekday.

Capacity · custom dates
039

Capacity · custom dates

The overrides that beat the weekday rule.

Add override
040

Add override

Opening two extra slots on a day that is already full.

Transfers & stays

8

Hotel Reservations and Driver Reservations are two unrelated desktop tables. From a phone they are one job — get everybody where they need to be — so they share a destination and a segmented control.

Transfers
041

Transfers

Today in time order, with the three that have no driver.

Transfer
042

Transfer

One leg drawn as a route, with what is read-only and why.

Assign driver
043

Assign driver

Picked by current load, not alphabetically.

Add transfer
044

Add transfer

Standalone or linked — the choice that changes the rest of the form.

Hotel stays
045

Hotel stays

Check-ins this week and which are still unconfirmed.

Hotel stay
046

Hotel stay

The stay, its covered nights, and a check-in two days out.

Confirm booking
047

Confirm booking

What marking it booked changes elsewhere.

Filters
048

Filters

Type and driver as chips; the rest as rows.

Reports

9

Seven reports, each a wide table on the desktop. On a phone the summary leads and the rows follow, and one shared filter sheet drives all seven.

Reports
049

Reports

The seven, with the reporting period pinned at the top.

Filters
050

Filters

Set once — every report re-runs against it.

Patients Stats
051

Patients Stats

Volume, income in three currencies, countries and airlines.

Responsible Stats
052

Responsible Stats

Per person, with the weekday shape behind one of them.

Nurses Stats
053

Nurses Stats

Plantings, FUE bands and opening channels across 287 operations.

Drivers Stats
054

Drivers Stats

Missions per driver, and the missions themselves.

Patients List
055

Patients List

The exportable row-per-operation report.

Payment Stats
056

Payment Stats

Currency totals by payment method — super-admin only.

Performance
057

Performance

Month × year with year-over-year growth.

Communications

5

Seven email templates, a token catalogue, and the log of everything the system has sent — including what failed and why.

Templates
058

Templates

Seven templates, six active.

Editor
059

Editor

Subject, recipient rule and a body with live tokens.

Preview
060

Preview

Rendered against a real patient, with the tokens it used.

Email log
061

Email log

Everything sent today, and the one that did not arrive.

Failed email
062

Failed email

The SMTP reason, and the two ways forward.

Users & access

10

Thirteen roles ported from the legacy ACL, 196 permissions discovered from the modules' own config, and the four person-shaped lists the product keeps separate because they mean different things.

Users
063

Users

16 accounts across three statuses.

User
064

User

Role, direct permissions, and what caseload scoping means for her.

Add user
065

Add user

With the taken-username error the API really returns.

Choose a role
066

Choose a role

Each role with its permission count and headcount.

Responsible Persons
067

Responsible Persons

Case owners, ranked by 30-day income.

Translators
068

Translators

The permission twin of Responsible Person.

Drivers
069

Drivers

Six permissions — the smallest role in the system.

Roles
070

Roles

All thirteen, with the two that cannot be deleted marked.

Role editor
071

Role editor

Permissions grouped by module, with per-module counts.

Permissions
072

Permissions

The catalogue, and where the names come from.

Reference data

13

Eighteen lookup pages behind the product's own Settings / Clinic / Travel split. Eleven of them are literally the same list, so the design draws that shape once and says so.

More
073

More

The fifth destination: everything that is not a daily job.

Settings
074

Settings

Eight areas, each behind its own permission.

Clinic
075

Clinic

What an operation is made of — plus the one row you must not rename.

Languages
076

Languages

23 locales, with RTL flagged and volume behind each.

Countries
077

Countries

One row expanded to show the per-locale translations repeater.

Currencies
078

Currencies

Reorderable, because the order is the dropdown order.

Hospitals
079

Hospitals

Two live branches, one inactive, one deleted.

Hotels
080

Hotels

Partner hotels ranked by stays.

Nurses
081

Nurses

Reference data, not accounts — and why that matters.

Methods
082

Methods

The shape eleven other reference pages share.

Lookup editor
083

Lookup editor

The sheet behind every reference row.

Pricing Packages
084

Pricing Packages

The legacy packages and their Euro list prices.

Travel
085

Travel

Airlines and airports, ranked the way the reports rank them.

Monitoring

9

Super-admin surfaces. On the desktop these are wide diagnostic tables; the question you ask from a phone is “is it broken right now”, so status leads and the table follows.

Monitoring
086

Monitoring

Six pages, each carrying a live signal rather than just a name.

Health Checks
087

Health Checks

Eight categories, one failing.

Security
088

Security

The four checks behind the failure.

Activity Logs
089

Activity Logs

Who did what, grouped by day.

Log entry
090

Log entry

The field-by-field diff, old struck through.

Backups
091

Backups

History plus one run mid-progress.

Errors
092

Errors

Two in 24 hours, with a stack expanded.

Manage Pages
093

Manage Pages

The switch that hides a page from everyone.

Data Migration
094

Data Migration

The three-step wizard, its fifteen tasks, and a fenced danger zone.

Account & system

9

Your own account, the appearance customizer that makes the other five styles real, and the two states you meet when something is wrong.

My profile
095

My profile

Identity, preferences, and the three things you can change.

Change password
096

Change password

The product’s own rules, as a live checklist.

Notifications
097

Notifications

Six, three unread, tinted by severity.

Notification settings
098

Notification settings

Per type, per channel — and the honest note about realtime.

Appearance
099

Appearance

All six styles and all six login motifs, as the customizer offers them.

Six styles
100

Six styles

Where each style lives, and why one theme.css re-skins everything.

Cache
101

Cache

Device-local storage, cleared without touching the API.

Offline
102

Offline

What still reads, and what needs the server.

Session expired
103

Session expired

The real error code, and no lost work.

No screen matches that.

How this folder is built

Tokens

cms/theme.css is the CMS's own “Ember” block from tokens.css, in both modes, plus the semi-dark rail and the text inks the phone needed. tokens.json is the same set in Tokens Studio format for Figma.

Components

cms/base.css is the component layer, built on the product's own vocabulary — card, badge, chip, seg, tabs, drawer — at 12/16/24 radii with pill buttons. Screens compose it; they rarely add CSS.

Icons & type

164 Font Awesome 6 glyphs — every fa-* the CMS references, plus a bell and a phone a desktop never needs. Bricolage Grotesque and Instrument Sans are base64'd into fonts.css, so a screen opened off disk still looks like the product.

Rendering

node render.js renders every screen to both themes at 2× in seconds, node lint.js checks them, and node gallery.js rebuilds this page.