Skip to main content

Styling Architecture

Our project uses a modern, utility-first approach to styling with Tailwind CSS, complemented by CSS Modules for component-specific styles when needed.

Tech Stack

  • Tailwind CSS - Utility-first CSS framework
  • CSS Modules - Scoped styles for complex components
  • CSS Variables - Theme tokens and design system values
  • PostCSS - CSS processing and optimization

Tailwind CSS

Configuration

Tailwind is configured in tailwind.config.ts:

Global Styles

Define global styles in src/app/globals.css:

Utility Classes

Common patterns using Tailwind utilities:

Component Styling Patterns

Class Variance Authority (CVA)

Use CVA for component variants:
Usage:

CSS Modules

For complex component styles, use CSS Modules:

Theming

Dark Mode

Implement dark mode using Tailwind’s dark mode class strategy:

Custom Themes

Create multiple theme variants:

Responsive Design

Breakpoints

Tailwind’s default breakpoints:
  • sm: 640px
  • md: 768px
  • lg: 1024px
  • xl: 1280px
  • 2xl: 1536px
1

Mobile-First Approach

Start with mobile styles, then add larger breakpoints:
2

Responsive Typography

Scale text appropriately across breakpoints:
3

Conditional Rendering

Show/hide elements at different breakpoints:

Container Queries

Use container queries for component-level responsive design:

Animation

Transitions

Keyframe Animations

Define custom animations in Tailwind config:
Usage:

Best Practices

Composition over duplication - Extract repeated utility combinations into reusable components instead of duplicating class strings.
Avoid inline styles - Use Tailwind utilities or CSS Modules instead of inline styles for better maintainability and performance.

Do’s

  • Use the cn() utility for conditional classes
  • Extract complex class strings into component variants
  • Leverage CSS variables for theming
  • Use semantic color names in your design system
  • Test responsive layouts on real devices
  • Optimize for accessibility (focus states, color contrast)

Don’ts

  • Don’t use arbitrary values excessively (e.g., w-[37px])
  • Don’t mix CSS methodologies unnecessarily
  • Don’t forget to purge unused styles in production
  • Don’t hardcode colors/spacing - use theme tokens
  • Don’t ignore mobile viewport testing

Performance Tips

Usage: