Files
data-entry-app/DESIGN.MD
T

281 lines
8.0 KiB
Markdown
Raw Normal View History

2026-04-25 22:51:36 +12:00
# Design Review
## Purpose
This document reviews the current UI design in the app as it exists today and captures the visual direction we should keep building toward.
The current design is strongest on:
- The global application shell
- The dashboard page
- The products page
The current design is weakest on:
- Raw materials
- Mixes
- Scenarios
Those pages still use older styling patterns and do not yet fully match the newer dashboard direction.
## Current Direction
The product is moving toward a modern professional operations dashboard with these core traits:
- Full-screen app layout
- Clean white panels on a pale neutral background
- Arial/Inter/IBM Plex Sans style typography
- Soft green as the primary brand/action color
- Rounded cards with subtle borders and restrained shadows
- Dense but readable information layout
- Dashboard-first composition with summary cards, charts, tables, and status pills
## What Is Working
### 1. App Shell
The shared shell in `frontend/src/routes/+layout.svelte` is the clearest part of the design system.
What works:
- Left navigation is simple and recognizably enterprise/SaaS
- Header layout is clean and easy to scan
- Sidebar, topbar, and content regions are clearly separated
- Border, radius, and spacing values are fairly consistent
- The palette is restrained enough for a data-heavy product
### 2. Typography
The shift toward IBM Plex Sans is a good move.
What works:
- Narrower letterforms help the UI feel more operational and less marketing-oriented
- Headings and labels now feel more compact
- The typography better suits dense tables and metrics
What still needs attention:
- Some older route pages still visually read as if they belong to a previous design phase
- Font sizing and spacing are not yet fully normalized across all pages
### 3. Dashboard Layout
The homepage has the most complete design language in the app right now.
What works:
- Good hierarchy from greeting to metrics to analysis to tasks
- Cards feel purposeful rather than decorative
- The dashboard uses a strong top-level grid
- Status chips and compact controls support the business-app direction
- The table redesign is much more modern than the earlier plain table styling
### 4. Products Table
The products page is now much closer to a polished admin table.
What works:
- Separated rounded rows feel modern and easier to scan
- First-column hierarchy is clearer
- Status and sale-type pills add useful structure
- Supporting metadata is visually subordinate to primary values
## Main Design Problems
### 1. The Design System Is Only Partially Applied
This is the biggest issue in the app right now.
The newer design language appears in:
- `frontend/src/routes/+layout.svelte`
- `frontend/src/routes/+page.svelte`
- `frontend/src/routes/products/+page.svelte`
But older page styles remain in:
- `frontend/src/routes/raw-materials/+page.svelte`
- `frontend/src/routes/mixes/+page.svelte`
- `frontend/src/routes/scenarios/+page.svelte`
This creates a split experience where the app shell feels professional, but some inner pages still feel like prototype screens.
### 2. Raw Materials Page Is Visually Out of Sync
The raw materials page still uses an older look and older tokens.
Current problems:
- Beige/tinted card treatment does not match the newer white panel system
- Buttons and inputs do not match the dashboard and products page controls
- Layout density feels heavier and more form-builder-like than operations-dashboard-like
- Card interiors are functional but not refined
This page matters a lot because it is one of the product's core workflows. It should be one of the strongest designed pages in the app, not one of the weakest.
### 3. Mixes And Scenarios Still Look Like MVP Scaffolding
These pages currently read as placeholders.
Current problems:
- Styling is minimal and visually detached from the newer shell
- Cards use older colors and border treatments
- Information hierarchy is too shallow
- There is little sense of table/list/system structure
### 4. Design Tokens Are Not Yet Truly Centralized
There is a good base token set in the layout, but page-level styles still define their own patterns too freely.
Symptoms:
- Different panel tones across pages
- Different table treatments across routes
- Different button personalities
- Different spacing rhythms
The app is close to needing a lightweight shared component/token layer instead of route-by-route styling.
### 5. Font Loading Strategy Should Be Revisited Later
IBM Plex Sans is the right direction, but it is currently loaded from a CSS `@import` in the route layout.
That is acceptable for now in a prototype, but longer term we should move to a more deliberate font-loading approach for performance and reliability.
## Recommended Design Principles
These should guide future UI work:
### 1. Keep The Shell Quiet
The shell should stay minimal and stable:
- White or near-white surfaces
- Very subtle borders
- Low-contrast background
- Minimal icon noise
The content should carry the visual interest, not the shell.
### 2. Prefer Information Density Over Decoration
The best parts of the current design are useful because they improve scanability rather than adding flourish.
We should keep prioritizing:
- Strong alignment
- Label/value clarity
- Good card grouping
- Useful color coding
- Structured tables
### 3. Use One Table Language Everywhere
The products table is a stronger starting point than the original table styles.
We should standardize around:
- Rounded row groups
- Soft separated rows
- Compact uppercase headers
- Badge-style statuses
- Strong first-column identity
- Muted secondary metadata
### 4. Treat Forms Like High-Value Workflow Surfaces
Raw material editing is a core task. Forms should feel as polished as dashboards.
That means:
- Cleaner sectioning
- Better spacing between fields
- More modern inputs
- Clearer primary/secondary actions
- Better use of inline metadata and supporting summaries
## Route-By-Route Assessment
### Dashboard
Status: Strong
Notes:
- Good overall hierarchy
- Good panel composition
- Good table direction
- Strongest reference page for the rest of the app
### Products
Status: Good
Notes:
- Table treatment is modern and clear
- Metrics row works well
- Could become the standard for other data-heavy pages
### Raw Materials
Status: Needs redesign pass
Notes:
- Strong functionality
- Weak visual consistency relative to the new shell
- Needs updated cards, forms, and downstream panels
### Mixes
Status: Needs redesign pass
Notes:
- Structurally too simple
- Should evolve into a more analytical operations page
- Needs stronger use of summaries, tables, and status markers
### Scenarios
Status: Needs redesign pass
Notes:
- Currently feels like raw prototype output
- JSON presentation is technically useful but visually unfinished
- Needs a proper scenario list and comparison layout
## Suggested Next Steps
### Immediate
1. Bring `raw-materials/+page.svelte` into the same visual language as the dashboard and products page.
2. Redesign the mixes page using the newer card/table tokens.
3. Redesign the scenarios page so it no longer looks like a raw debug view.
### Short Term
1. Standardize shared panel, button, input, and table styles.
2. Create one reusable status pill pattern.
3. Normalize spacing, heading sizes, and section headers across all routes.
### Medium Term
1. Move from route-local styling toward shared UI primitives.
2. Create a small written design system for color, spacing, radius, shadows, typography, and tables.
3. Revisit font loading so IBM Plex Sans is handled more deliberately.
## Final Assessment
The design is moving in the right direction.
The current shell, dashboard, and products page establish a much more credible business application style than the earlier prototype visuals. The main issue is not the direction itself, but inconsistency. Right now the app looks like two design generations living side by side.
If we bring the raw materials, mixes, and scenarios pages into the same system, the product will feel much more cohesive and substantially more production-ready.