Frontend Design Expert
Create production-grade frontend interfaces that are distinctive, polished, and avoid generic "AI slop" aesthetics. This skill activates when building web components, pages, or applications.
Design Thinking
Before writing code, understand context and commit to intentional design choices:
- Purpose: What problem does this interface solve? What action should users take?
- Audience: Upper middle class American Muslim professionals (doctors, lawyers, engineers)
- Tone: Pick a direction with conviction—minimalist restraint, data-forward trust, or warm sophistication
- Constraints: React 19, Tailwind v4, existing theme system, accessibility requirements
- Differentiation: What makes this memorable? What will someone recall after leaving?
Critical: Bold intentionality beats timid compromise. A clear aesthetic point-of-view—whether minimal or maximal—is always better than splitting the difference.
Audience Profile
The primary audience is upper middle class American Muslim professionals:
| Trait |
Implication |
| Highly educated |
Don't oversimplify; they understand nuance |
| Time-constrained |
Get to the point; respect their attention |
| Discerning |
They notice quality (or lack thereof) |
| Data-literate |
Show numbers, methodology, sources |
| Skeptical of hype |
Substance over marketing speak |
| Quality expectations |
They use Stripe, Notion, Apple—match that bar |
What they value:
- Transparency over emotional appeals
- Data over vague impact claims
- Intellectual respect over patronizing explanations
- Efficiency over decoration
Project Tech Stack
Framework
- React 19 with Vite 6.2
- TypeScript 5.8 for type safety
- Tailwind CSS v4.1 with PostCSS (no custom config file)
Theme System
Light/Dark Mode:
import { useLandingTheme } from '@/contexts/LandingThemeContext';
const { isDark, toggleTheme } = useLandingTheme();
Brand Variants:
import { useTheme } from '@/types/theme';
const { variant } = useTheme(); // 'amal' | 'third-bucket'
Component Patterns
- Icons: Lucide React (
import { Icon } from 'lucide-react')
- Charts: Recharts for data visualization
- Sanitization: DOMPurify for user-generated content
Key Reference Files
website/src/components/CharityCard.tsx - Color pattern examples
website/src/components/BaselineCharityDetail.tsx - Wallet tag styling
website/src/themes.tsx - Experimental theme presets
website/contexts/LandingThemeContext.tsx - Dark mode implementation
Typography
| Purpose |
Class |
Notes |
| Headlines, brand moments |
font-merriweather |
Serif, distinctive |
| Body text, UI |
font-sans |
System stack, readable |
| Quranic references |
font-arabic |
Arabic typography only |
| Data displays, technical |
font-mono |
Monospace for numbers |
Typography Principles:
- Clear hierarchy: One dominant element per section
- Readable line lengths: ~60-75 characters
- Generous line height:
leading-relaxed for body copy
- Restrained headings: Meaningful, not "Welcome to our platform"
Color & Theme
Primary Palette
- Emerald: Primary actions, positive states (
emerald-600, emerald-700)
- Slate: Neutrals, backgrounds (
slate-100 to slate-950)
- White/Black: Text, highest contrast
Semantic Colors (Wallet Tags - Self-Assertion Model)
- Emerald (
emerald-700): Zakat Eligible (ZAKAT-ELIGIBLE) - charity claims zakat on website
- Indigo (
indigo-700): Strategic Sadaqah (SADAQAH-STRATEGIC) - high-impact systemic work
- Gray (
gray-600): General Sadaqah (SADAQAH-GENERAL) - standard charitable giving
- Slate (
slate-500): Insufficient Data (INSUFFICIENT-DATA)
Dark Mode
- Background:
slate-950 (not pure black)
- Surface:
slate-900 for cards
- Text:
white / slate-400 for hierarchy
- Always provide dark mode variants:
isDark ? 'bg-slate-900' : 'bg-white'
Color Pattern Example
const colors = {
bg: isDark ? 'bg-slate-900' : 'bg-white',
text: isDark ? 'text-white' : 'text-slate-900',
muted: isDark ? 'text-slate-400' : 'text-slate-600',
border: isDark ? 'border-slate-800' : 'border-slate-200',
};
Motion & Animation
Philosophy: Purposeful, not decorative. Every animation should serve UX.
| Purpose |
Pattern |
| Standard interactive |
transition-all duration-300 |
| Theme switching |
transition-colors duration-500 |
| Hover lift |
hover:shadow-lg hover:-translate-y-1 |
| Arrow indicators |
group-hover:translate-x-1 |
Avoid: Parallax for its own sake, spinners that spin forever, bouncing elements, page load fireworks.
What NOT to Do (AI Slop Detection)
Visual Anti-Patterns
AVOID:
- Generic gradients (purple→blue on white)
- Glassmorphism cards without purpose
- Oversized hero sections with tiny CTAs
- Parallax scrolling that adds nothing
- Blob shapes behind text
- Neon accents on dark backgrounds (the "Discord look")
- Cards with excessive rounded corners + drop shadows
- Placeholder icons (generic house, heart, people silhouettes)
Typography Anti-Patterns
AVOID:
- Inter, Roboto, Poppins, Montserrat (the default AI fonts)
- Hero text 80px+ with no content hierarchy
- Excessive letter-spacing everywhere
- ALL CAPS subheadings on everything
- "Welcome to our platform" headers
Islamic Design Anti-Patterns
AVOID:
- Bright green (#00FF00) as primary (the "masjid green" trap)
- Crescent moon icons everywhere
- Mosque dome silhouettes in backgrounds
- Stock photos of people praying or giving money
- Arabic calligraphy as meaningless decoration
- Overwhelming geometric tessellations
- "Salam" as the hero greeting (performative authenticity)
Charity Website Anti-Patterns
AVOID:
- "Just $1 can save a life" emotional manipulation
- Crying children imagery
- Progress bars showing "90% of goal reached" (fake urgency)
- Impact counters that spin up on scroll
- Vague claims: "We've helped millions" without methodology
- Generic world map with pins
- "Your donation goes directly to..." without actual breakdown
Copy Anti-Patterns
AVOID:
- "Empowering communities through innovative solutions"
- "Making a difference, one [X] at a time"
- "Join our mission to transform..."
- Bullet points all starting with verbs (Empower, Transform, Enable)
- Three-column feature grids with identical structure
- FAQ sections with softball questions
Interaction Anti-Patterns
AVOID:
- Hover effects on everything
- Skeleton loaders that never resolve
- Infinite scroll without pagination option
- Modal popups on page load
- Chatbot widgets in bottom-right corner
- Newsletter popup within 5 seconds
Technical Tells (These Scream "AI Generated")
AVOID:
- Components that ignore theme context
- Hardcoded colors instead of Tailwind tokens
- Inconsistent spacing (mixing
px-4 with px-6 randomly)
- Missing dark mode variants
- Buttons without proper states (hover, active, disabled)
- No loading states for async operations
- No error states
- No empty states
Trust Architecture
Build trust through transparency, not emotional appeals.
Show Your Work
- Display data sources (Form 990, ProPublica, IRS data)
- Link to primary documents
- Explain methodology in accessible terms
- Show confidence levels when data is uncertain
Acknowledge Complexity
- Note where scholars differ on zakat eligibility
- Don't pretend contested topics are settled
- Provide nuance, not false certainty
Avoid Trust Destroyers
- Vague impact claims ("millions helped")
- Round numbers without context
- Hidden methodology
- Unverifiable testimonials
Cultural Authenticity
Do
- Bismillah in Arabic (subtle, not dominant)
- Geometric patterns used sparingly
- References to Islamic scholarship with proper citation
- Inclusive of diverse Muslim backgrounds (not just Arab aesthetics)
- Respect for legitimate differences (madhab pluralism)
Don't
- Performative religiosity (excessive "insha'Allah" in UI copy)
- Stereotypical imagery (domes, minarets, prayer photos)
- Assuming one correct interpretation
- Excluding converts, non-Arabic speakers, or non-traditional Muslims
Implementation Checklist
Before shipping any component:
1---2name: frontend-design-103description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.4---5
6# Frontend Design Expert
7
8Create production-grade frontend interfaces that are distinctive, polished, and avoid generic "AI slop" aesthetics. This skill activates when building web components, pages, or applications.
9
10## Design Thinking
11
12Before writing code, understand context and commit to intentional design choices:
13
141. **Purpose**: What problem does this interface solve? What action should users take?
152. **Audience**: Upper middle class American Muslim professionals (doctors, lawyers, engineers)
163. **Tone**: Pick a direction with conviction—minimalist restraint, data-forward trust, or warm sophistication
174. **Constraints**: React 19, Tailwind v4, existing theme system, accessibility requirements
185. **Differentiation**: What makes this memorable? What will someone recall after leaving?
19
20**Critical**: Bold intentionality beats timid compromise. A clear aesthetic point-of-view—whether minimal or maximal—is always better than splitting the difference.
21
22---
23
24## Audience Profile
25
26The primary audience is upper middle class American Muslim professionals:
27
28| Trait | Implication |
29|-------|-------------|
30| **Highly educated** | Don't oversimplify; they understand nuance |
31| **Time-constrained** | Get to the point; respect their attention |
32| **Discerning** | They notice quality (or lack thereof) |
33| **Data-literate** | Show numbers, methodology, sources |
34| **Skeptical of hype** | Substance over marketing speak |
35| **Quality expectations** | They use Stripe, Notion, Apple—match that bar |
36
37**What they value:**
38- Transparency over emotional appeals
39- Data over vague impact claims
40- Intellectual respect over patronizing explanations
41- Efficiency over decoration
42
43---
44
45## Project Tech Stack
46
47### Framework
48- **React 19** with Vite 6.2
49- **TypeScript 5.8** for type safety
50- **Tailwind CSS v4.1** with PostCSS (no custom config file)
51
52### Theme System
53
54**Light/Dark Mode:**
55```tsx
56import { useLandingTheme } from '@/contexts/LandingThemeContext';
57const { isDark, toggleTheme } = useLandingTheme();
58```
59
60**Brand Variants:**
61```tsx
62import { useTheme } from '@/types/theme';
63const { variant } = useTheme(); // 'amal' | 'third-bucket'
64```
65
66### Component Patterns
67- Icons: Lucide React (`import { Icon } from 'lucide-react'`)
68- Charts: Recharts for data visualization
69- Sanitization: DOMPurify for user-generated content
70
71### Key Reference Files
72- `website/src/components/CharityCard.tsx` - Color pattern examples
73- `website/src/components/BaselineCharityDetail.tsx` - Wallet tag styling
74- `website/src/themes.tsx` - Experimental theme presets
75- `website/contexts/LandingThemeContext.tsx` - Dark mode implementation
76
77---
78
79## Typography
80
81| Purpose | Class | Notes |
82|---------|-------|-------|
83| Headlines, brand moments | `font-merriweather` | Serif, distinctive |
84| Body text, UI | `font-sans` | System stack, readable |
85| Quranic references | `font-arabic` | Arabic typography only |
86| Data displays, technical | `font-mono` | Monospace for numbers |
87
88**Typography Principles:**
89- Clear hierarchy: One dominant element per section
90- Readable line lengths: ~60-75 characters
91- Generous line height: `leading-relaxed` for body copy
92- Restrained headings: Meaningful, not "Welcome to our platform"
93
94---
95
96## Color & Theme
97
98### Primary Palette
99- **Emerald**: Primary actions, positive states (`emerald-600`, `emerald-700`)
100- **Slate**: Neutrals, backgrounds (`slate-100` to `slate-950`)
101- **White/Black**: Text, highest contrast
102
103### Semantic Colors (Wallet Tags - Self-Assertion Model)
104- **Emerald** (`emerald-700`): Zakat Eligible (ZAKAT-ELIGIBLE) - charity claims zakat on website
105- **Indigo** (`indigo-700`): Strategic Sadaqah (SADAQAH-STRATEGIC) - high-impact systemic work
106- **Gray** (`gray-600`): General Sadaqah (SADAQAH-GENERAL) - standard charitable giving
107- **Slate** (`slate-500`): Insufficient Data (INSUFFICIENT-DATA)
108
109### Dark Mode
110- Background: `slate-950` (not pure black)
111- Surface: `slate-900` for cards
112- Text: `white` / `slate-400` for hierarchy
113- Always provide dark mode variants: `isDark ? 'bg-slate-900' : 'bg-white'`
114
115### Color Pattern Example
116```tsx
117const colors = {
118 bg: isDark ? 'bg-slate-900' : 'bg-white',
119 text: isDark ? 'text-white' : 'text-slate-900',
120 muted: isDark ? 'text-slate-400' : 'text-slate-600',
121 border: isDark ? 'border-slate-800' : 'border-slate-200',
122};
123```
124
125---
126
127## Motion & Animation
128
129**Philosophy**: Purposeful, not decorative. Every animation should serve UX.
130
131| Purpose | Pattern |
132|---------|---------|
133| Standard interactive | `transition-all duration-300` |
134| Theme switching | `transition-colors duration-500` |
135| Hover lift | `hover:shadow-lg hover:-translate-y-1` |
136| Arrow indicators | `group-hover:translate-x-1` |
137
138**Avoid**: Parallax for its own sake, spinners that spin forever, bouncing elements, page load fireworks.
139
140---
141
142## What NOT to Do (AI Slop Detection)
143
144### Visual Anti-Patterns
145
146**AVOID:**
147- Generic gradients (purple→blue on white)
148- Glassmorphism cards without purpose
149- Oversized hero sections with tiny CTAs
150- Parallax scrolling that adds nothing
151- Blob shapes behind text
152- Neon accents on dark backgrounds (the "Discord look")
153- Cards with excessive rounded corners + drop shadows
154- Placeholder icons (generic house, heart, people silhouettes)
155
156### Typography Anti-Patterns
157
158**AVOID:**
159- Inter, Roboto, Poppins, Montserrat (the default AI fonts)
160- Hero text 80px+ with no content hierarchy
161- Excessive letter-spacing everywhere
162- ALL CAPS subheadings on everything
163- "Welcome to our platform" headers
164
165### Islamic Design Anti-Patterns
166
167**AVOID:**
168- Bright green (#00FF00) as primary (the "masjid green" trap)
169- Crescent moon icons everywhere
170- Mosque dome silhouettes in backgrounds
171- Stock photos of people praying or giving money
172- Arabic calligraphy as meaningless decoration
173- Overwhelming geometric tessellations
174- "Salam" as the hero greeting (performative authenticity)
175
176### Charity Website Anti-Patterns
177
178**AVOID:**
179- "Just $1 can save a life" emotional manipulation
180- Crying children imagery
181- Progress bars showing "90% of goal reached" (fake urgency)
182- Impact counters that spin up on scroll
183- Vague claims: "We've helped millions" without methodology
184- Generic world map with pins
185- "Your donation goes directly to..." without actual breakdown
186
187### Copy Anti-Patterns
188
189**AVOID:**
190- "Empowering communities through innovative solutions"
191- "Making a difference, one [X] at a time"
192- "Join our mission to transform..."
193- Bullet points all starting with verbs (Empower, Transform, Enable)
194- Three-column feature grids with identical structure
195- FAQ sections with softball questions
196
197### Interaction Anti-Patterns
198
199**AVOID:**
200- Hover effects on everything
201- Skeleton loaders that never resolve
202- Infinite scroll without pagination option
203- Modal popups on page load
204- Chatbot widgets in bottom-right corner
205- Newsletter popup within 5 seconds
206
207### Technical Tells (These Scream "AI Generated")
208
209**AVOID:**
210- Components that ignore theme context
211- Hardcoded colors instead of Tailwind tokens
212- Inconsistent spacing (mixing `px-4` with `px-6` randomly)
213- Missing dark mode variants
214- Buttons without proper states (hover, active, disabled)
215- No loading states for async operations
216- No error states
217- No empty states
218
219---
220
221## Trust Architecture
222
223Build trust through transparency, not emotional appeals.
224
225### Show Your Work
226- Display data sources (Form 990, ProPublica, IRS data)
227- Link to primary documents
228- Explain methodology in accessible terms
229- Show confidence levels when data is uncertain
230
231### Acknowledge Complexity
232- Note where scholars differ on zakat eligibility
233- Don't pretend contested topics are settled
234- Provide nuance, not false certainty
235
236### Avoid Trust Destroyers
237- Vague impact claims ("millions helped")
238- Round numbers without context
239- Hidden methodology
240- Unverifiable testimonials
241
242---
243
244## Cultural Authenticity
245
246### Do
247- Bismillah in Arabic (subtle, not dominant)
248- Geometric patterns used sparingly
249- References to Islamic scholarship with proper citation
250- Inclusive of diverse Muslim backgrounds (not just Arab aesthetics)
251- Respect for legitimate differences (madhab pluralism)
252
253### Don't
254- Performative religiosity (excessive "insha'Allah" in UI copy)
255- Stereotypical imagery (domes, minarets, prayer photos)
256- Assuming one correct interpretation
257- Excluding converts, non-Arabic speakers, or non-traditional Muslims
258
259---
260
261## Implementation Checklist
262
263Before shipping any component:
264
265- [ ] Theme-aware (responds to `useLandingTheme`)
266- [ ] Uses Tailwind tokens (no hardcoded colors)
267- [ ] Dark mode tested
268- [ ] Mobile responsive
269- [ ] Loading state implemented
270- [ ] Error state implemented
271- [ ] Empty state implemented
272- [ ] Hover/focus/active states on interactive elements
273- [ ] Accessible (semantic HTML, proper contrast, keyboard navigation)
274- [ ] No AI slop patterns (review list above)