Context
When redesigning the portfolio, I evaluated different styling approaches. The main contenders were Tailwind CSS and CSS Modules with a custom design system.
Decision Drivers
- Control: Wanted precise control over the design system
- Performance: Zero runtime overhead
- Maintainability: Clear separation of concerns
- Learning: Opportunity to deepen CSS knowledge
Considered Options
Tailwind CSS
- Rapid development with utility classes
- Consistent spacing and colors
- Large community and ecosystem
- Potential for cluttered markup
CSS Modules + Custom Properties
- Full design system control
- Clean component markup
- Native CSS features
- More setup work
Outcome
CSS Modules with custom properties was chosen. Benefits realized:
- Design system is explicit and documented in CSS variables
- Components have clean, semantic class names
- Easy to maintain consistent theming (light/dark modes)
- No build-time or runtime CSS processing overhead