Files
social-app/apps/rules/visual_design_language.md
T
2026-03-16 19:04:54 +08:00

646 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Visual Design Language for Flutter Mobile App
This document defines the **visual design language** for the mobile app.
It is intended to guide AI agents, designers, and developers toward a **consistent, premium, mobile-native product experience**.
This file focuses on **visual style, surface hierarchy, interaction feel, motion tone, and design intent**.
Implementation constraints such as token usage, component reuse, testing, and protocol requirements remain defined elsewhere.
---
## 0) Scope and Role (MUST)
- This file applies to all mobile UI work under `apps/**`.
- This file defines the **design intent** and **visual system**.
- This file does **not** replace implementation constraints; it complements them.
- If implementation and visual intent conflict, prefer the stricter rule while preserving as much visual intent as possible.
- The agent **MUST** treat this file as the source of truth for:
- visual tone
- aesthetic direction
- surface hierarchy
- perceived product quality
- motion feel
- assistant-product identity
---
## 1) Product Design Goal (MUST)
The app is a **personal assistant mobile app**.
Its UI must feel like a **premium consumer product**, not a wireframe, dashboard, admin console, or document page.
The overall product impression must be:
- calm
- intelligent
- trustworthy
- soft
- polished
- mobile-native
- slightly futuristic
- assistant-oriented
The UI must communicate:
- clarity without coldness
- capability without heaviness
- elegance without visual noise
- structure without rigidity
The visual result must feel closer to a refined consumer app than to a productivity back office tool.
---
## 2) Core Style Direction (MUST)
The apps visual design language is based on the following style blend:
- **soft blue brand atmosphere**
- **layered card-based interface**
- **subtle depth and hierarchy**
- **selective soft neumorphic influence**
- **light glassmorphism accents where appropriate**
- **modern iOS-inspired spacing and composition**
- **premium startup-product polish**
The UI should feel:
- soft, not blunt
- layered, not flat
- tactile, not decorative
- modern, not trendy for its own sake
- structured, not mechanical
The visual system must avoid extremes:
- not overly flat
- not heavily skeuomorphic
- not toy-like
- not enterprise-heavy
- not overly ornamental
---
## 3) Brand Mood (MUST)
The brand mood is:
- soft blue
- airy
- supportive
- composed
- focused
- warm-tech
- light but capable
The assistant should feel like:
- a calm expert
- a thoughtful companion
- a reliable digital helper
The assistant should **not** feel like:
- a chatbot demo
- a mechanical enterprise workflow engine
- a gaming interface
- a childish mascot product
- a harsh cyberpunk system
Avoid visual moods that are:
- overly playful
- overly sharp
- overly dark and oppressive
- sterile and lifeless
- loud or attention-seeking
---
## 4) Visual Hierarchy Principles (MUST)
Every screen must present a clear and intentional visual hierarchy.
The hierarchy should generally be readable as:
1. page background / spatial field
2. primary surfaces
3. grouped secondary surfaces
4. highlighted interactive elements
5. text and status accents
6. transient states and feedback
The UI must always help the user understand:
- what is primary
- what is grouped
- what is interactive
- what is informational
- what is temporary
- what is currently changing
Hierarchy must not rely on color alone.
It should also be expressed through:
- spacing
- surface grouping
- radius
- depth
- density
- contrast
- scale
- motion
---
## 5) Surface Model (MUST)
The app must be designed as a **surface-based system**, not as a collection of raw containers.
Every major screen should define at least these conceptual surface layers:
- **Background Surface**
The calm spatial field behind all content.
- **Primary Content Surface**
The main assistant response area, key card, major module, or central interaction container.
- **Secondary Grouped Surfaces**
Supporting cards, grouped actions, metadata blocks, previews, summaries, or widgets.
- **Interactive Emphasis Surface**
Elements that deserve stronger presence, such as quick actions, active cards, selected states, or focused modules.
Surfaces must feel intentional and product-grade.
A surface should never read as “just another box”.
Surfaces should feel:
- softly separated
- visually organized
- breathable
- cohesive with surrounding layers
---
## 6) Depth and Elevation Language (MUST)
The UI must use depth carefully and consistently.
Depth should be expressed through:
- layered surfaces
- subtle shadows
- gentle highlights
- tonal contrast
- grouped spacing
- controlled overlap when appropriate
Depth is used to:
- separate surfaces from background
- indicate focus
- elevate important actions
- support tactile feel
- avoid paper-flat layouts
Depth must **not** be used as random decoration.
The app must avoid:
- harsh shadow stacks
- muddy over-layering
- fake 3D gimmicks
- heavy embossed skeuomorphism
- noisy glow effects
The preferred depth quality is:
- soft
- understated
- calm
- premium
- readable
---
## 7) Shape Language (MUST)
The shape language should feel soft, modern, and coherent.
Shapes should communicate:
- friendliness
- calmness
- safety
- clarity
Preferred characteristics:
- rounded corners
- smooth modules
- softened containers
- pill-like or capsule-like actions where appropriate
- continuous visual flow across adjacent surfaces
Avoid:
- sharp aggressive geometry as default
- inconsistent corner treatments
- randomly mixing square and rounded systems
- highly ornamental silhouettes
Shape consistency is important to product polish.
If a screen mixes too many shape styles, it will feel unrefined.
---
## 8) Composition Style (MUST)
The app must use **layered modular composition** rather than flat linear stacking wherever reasonable.
Preferred composition patterns:
- grouped cards
- floating modules
- segmented content blocks
- clearly separated information zones
- visually anchored action regions
- progressive disclosure sections
The screen should feel like a composed product surface, not a long sheet of stacked rectangles.
The design should avoid:
- full-screen blank white slabs
- ungrouped content dumps
- evenly weighted sections with no focal point
- spreadsheet-like layouts
- dashboard density unless explicitly needed
Content layout should guide the eye through the screen in a deliberate way.
---
## 9) Spacing Rhythm (MUST)
Spacing must create visual rhythm, hierarchy, and calmness.
Spacing should:
- separate conceptual groups clearly
- keep related content close enough to feel connected
- create a breathable reading experience
- support scanning within a few seconds
The app should feel:
- compact enough to be useful
- spacious enough to feel premium
Avoid both:
- cramped layouts
- excessively empty layouts
Spacing rhythm should create a sense of:
- confidence
- order
- softness
- ease of use
---
## 10) Color Usage Philosophy (MUST)
The app uses a **soft blue-centered palette**, but blue must be used strategically.
Blue is a brand signal, not a paint bucket.
Use brand color to:
- anchor important actions
- signal focus
- support assistant identity
- reinforce important states
- create premium calmness
Do not use blue by flooding all surfaces equally.
Color distribution must preserve:
- hierarchy
- readability
- tonal balance
- calmness
Preferred color impression:
- light
- trustworthy
- airy
- intelligent
- non-aggressive
Avoid:
- oversaturated color blocks
- excessive accent competition
- flat monochrome sameness
- harsh enterprise-blue overuse
---
## 11) Typography Feel (MUST)
Typography should feel:
- clean
- modern
- readable
- calm
- product-grade
Text hierarchy must be immediately understandable.
The text system should communicate:
- primary focus
- supportive explanation
- metadata
- actionability
- transient status
Avoid:
- text-heavy document appearance
- dense paragraph dumps
- weak heading contrast
- decorative typography
- oversized headline drama unless intentionally needed
Typography should support assistant use cases:
- fast scanning
- digestible summaries
- calm reading
- structured conversation
- confidence in results
---
## 12) Information Density (MUST)
The product is a personal assistant, so information density must be carefully balanced.
The UI must avoid:
- toy-like under-information
- enterprise-dashboard over-information
The ideal density is:
- compact but breathable
- rich but organized
- helpful without overwhelming
Assistant outputs should be:
- quickly scannable
- clearly grouped
- progressively explorable
- structured for decision support
When complexity increases, use:
- grouping
- folding
- summarization
- layered detail reveal
Do not dump all content at the same visual weight.
---
## 13) Interaction Feel (MUST)
Interactions must feel:
- responsive
- soft
- clear
- premium
- mobile-native
The UI should feel alive, but not noisy.
Interaction feedback should reinforce:
- user action
- state transition
- focus shift
- hierarchy change
- successful completion
- temporary waiting
The product should feel smooth and intentional under touch.
Avoid interaction feel that is:
- abrupt
- dead
- jittery
- overly animated
- flashy for its own sake
---
## 14) Motion Language (MUST)
Motion is part of the product language and must be treated as meaningful.
Motion should communicate:
- causality
- continuity
- spatial relationship
- emphasis
- system responsiveness
Preferred motion patterns:
- soft press feedback
- gentle surface transition
- smooth card expand/collapse
- subtle content entrance
- assistant response reveal continuity
- calm loading transitions
- state changes that feel connected rather than replaced
Motion must not feel:
- bouncy in a toy-like way
- abrupt and mechanical
- dramatic and distracting
- overloaded with simultaneous effects
The best motion is:
- noticeable enough to feel polished
- restrained enough to remain calm
---
## 15) Assistant-Specific UI Tone (MUST)
This is not a generic CRUD app.
It is an assistant product.
Therefore, the UI must visually support:
- conversation
- guidance
- summaries
- suggestions
- action handoff
- confidence-building
- clarity of next steps
Assistant screens should feel:
- structured but conversational
- intelligent but approachable
- helpful rather than commanding
Key assistant outputs should feel like:
- curated result modules
- decision-support surfaces
- intelligent summaries
- actionable insight cards
They should not feel like:
- raw logs
- plain transcript dumps
- developer console output
- generic list rows only
---
## 16) Visual Anti-Patterns (MUST NOT)
The UI must not look like any of the following:
- a plain document page
- a white sheet with blue buttons
- a spreadsheet-like admin panel
- a low-fidelity wireframe
- a default Flutter demo app
- an over-glowing concept shot that is not implementable
- a generic template marketplace screen
- a visually noisy Dribbble-style mockup without product discipline
Specifically avoid:
- full-screen flat white blocks with little hierarchy
- arbitrary shadow usage
- inconsistent card treatments
- too many competing accent colors
- overly dense content without grouping
- equally weighted sections with no focus
- raw container stacking with no surface semantics
- excessive decorative gradients
- empty “pretty” layouts with weak usability
---
## 17) Preferred Inspirations (SHOULD)
The product should loosely evoke qualities found in:
- modern iOS app composition
- premium startup productivity apps
- calm AI-native product interfaces
- refined card-based mobile layouts
- soft glass / soft depth surface systems
Useful inspiration qualities include:
- compositional discipline
- strong spacing rhythm
- excellent hierarchy
- restrained polish
- tactile clarity
- premium consumer feel
Inspiration must be translated into this products identity, not copied literally.
---
## 18) Screen-Level Decision Rules (MUST)
When generating or refining a screen, the agent must decide in this order:
1. What is the primary focus of the screen?
2. What is the surface hierarchy?
3. What needs strongest emphasis?
4. What should be grouped together?
5. What should remain lightweight or secondary?
6. Where should motion reinforce understanding?
7. How can the result feel more like a premium assistant app and less like a document page?
When multiple valid layouts exist, prefer the one that:
- has clearer hierarchy
- feels more mobile-native
- has stronger surface semantics
- feels calmer and more polished
- better supports future micro-interactions
- better matches the assistant-product identity
For top navigation and title areas:
- prefer concise, high-signal header titles to communicate page identity
- avoid repeating equivalent helper text in the first body section when it does not add new actionable meaning
- use body copy only for new context, constraints, or decision guidance
---
## 19) AI Generation Guidance (MUST)
When an AI agent generates UI, it must think in terms of:
- visual hierarchy
- surface system
- product polish
- interaction states
- motion readiness
- assistant identity
- premium mobile composition
It must not think in terms of:
- raw widget stacking only
- “just make it functional”
- generic default mobile layouts
- admin or dashboard templates
- flat page sections without depth
- a document-first visual model
Before finalizing a UI, the agent should mentally verify:
- Does this feel like a product, not a page?
- Is there clear hierarchy?
- Do surfaces feel intentional?
- Does the screen feel calm and premium?
- Is the assistant identity visually present?
- Would this look plausible in a polished shipping app?
If the answer is no, the UI is not finished.
---
## 20) Relationship with Design Tokens (MUST)
This document defines **what the UI should feel like**.
Implementation files define **how those values are encoded**.
Therefore:
- the visual language must be realized through the projects design token system
- any missing visual semantics should be added to tokens or shared theme primitives
- the agent must not bypass the design system to approximate the visual intent locally
The correct workflow is:
1. understand desired visual effect
2. map it into shared tokens / shared components
3. implement consistently
4. preserve future reusability
---
## 21) Final Design Standard (MUST)
Every shipped screen should aim to satisfy all of the following:
- visually coherent
- recognizably premium
- mobile-native
- calm and intelligent
- structurally clear
- not flat
- not noisy
- clearly assistant-oriented
- implementation-realistic
- design-system-compatible
The final bar is not merely:
- “works”
- “renders”
- “uses tokens”
- “passes lint”
The final bar is:
- **feels like a polished personal assistant product**