Core Framework
React 18.3.1
Why React:- Industry-standard component model
- Excellent mobile performance with proper optimization
- Rich ecosystem for UI components
- Strong TypeScript support
- Concurrent rendering features for smoother animations
- Hooks for state management (
useState,useEffect,useCallback) - Error Boundaries for graceful error handling
- Concurrent features for animation prioritization
- Strict Mode for catching potential issues early
TypeScript 5.8.3
Why TypeScript:- Catch bugs at compile time, not runtime
- Better IDE autocomplete and documentation
- Safer refactoring for long-term maintenance
- Type-safe data structures for vocabulary and progress
Build Tools
Vite 5.4.19
Why Vite over Create React App:- ⚡ 10-100x faster - Dev server starts in <1 second
- 🔥 Instant HMR - Hot module replacement without refresh
- 📦 Better bundle optimization - ESBuild for blazing fast builds
- 🎯 Modern by default - ES modules, tree-shaking out of the box
- 🔧 Simple config - Less boilerplate than webpack
@vitejs/plugin-react-swc- Fast Refresh using SWC compilerrollup-plugin-visualizer- Bundle size analysislovable-tagger- Development component tracking
Capacitor 8.0.2
Native mobile bridge:- Core
- Plugins
- Config
@capacitor/core - Core API for native bridgeEnables JavaScript to communicate with native iOS/Android code- Uses standard web technologies (React, not React Native components)
- Single codebase for web, iOS, and Android
- No bridge performance issues
- Easier to debug (web DevTools work)
- Progressive: start web, add native later
Styling
Tailwind CSS 3.4.17
Utility-first CSS framework:- 🎨 No CSS file management - styles live with components
- 📦 Tiny production bundle - PurgeCSS removes unused classes
- 🔄 Easy refactoring - rename component without orphaned CSS
- 📱 Responsive utilities -
md:,lg:breakpoints - 🌙 Dark mode -
dark:variant built-in
tailwindcss-animate- Pre-built animation utilities@tailwindcss/typography- Beautiful prose styles
Custom Design System
Tailwind is extended with Vocab Vault’s design tokens from~/workspace/source/tailwind.config.ts:16:
UI Components
shadcn/ui
Component philosophy:- ✅ Full control - modify any component
- ✅ No version conflicts - no npm dependencies
- ✅ Tree-shakeable - only include what you use
- ✅ Customizable - Tailwind classes, not CSS-in-JS
@radix-ui/react-dialog- Accessible modals@radix-ui/react-tooltip- Smart popovers@radix-ui/react-toast- Notification system@radix-ui/react-toggle- Toggle buttons@radix-ui/react-label- Form labels
- WAI-ARIA compliant out of the box
- Keyboard navigation built-in
- Focus management handled automatically
- Unstyled (bring your own styles)
- Battle-tested by major companies
Utility Libraries
Class management:clsx^2.1.1 - Conditional class namestailwind-merge^2.6.0 - Deduplicates Tailwind classesclass-variance-authority^0.7.1 - Type-safe component variants
Animation & Interaction
Framer Motion 12.29.0
Production-grade animation library:motioncomponents - Animated divs, buttons, listsAnimatePresence- Exit animations for removed elementsdrag- Swipe gestures on flashcardsuseAnimation- Imperative animation controluseMotionValue- Track drag position
- Declarative API (easier than raw CSS animations)
- Physics-based springs (more natural feel)
- Gesture support (drag, tap, hover)
- Layout animations (automatic smooth resizing)
- TypeScript support
canvas-confetti 1.9.4
Celebration effects:- Category completion
- Achievement unlocks
- Streak milestones
Routing
React Router DOM 6.30.1
Client-side routing:/- Main app (category selection, study mode, stats)*- 404 page for invalid URLs
/category/:id- Deep link to specific category/study/:mode- Link to SRS or classic mode/achievements- Achievement showcase page
State & Data
Date Utilities
date-fns 3.6.0:- Streak calculations
- SRS review date formatting
- Achievement timestamps
- Tree-shakeable (only import what you use)
- Immutable (safer than mutating dates)
- Functional API (easier to test)
- Smaller bundle size
Icons
lucide-react 0.462.0:- 1000+ icons, consistent design
- Tree-shakeable React components
- Actively maintained (forked from Feather Icons)
- Customizable with props (size, color, strokeWidth)
Theming
next-themes 0.3.0
Dark mode system:- System preference detection
- Persistent theme choice
- No flash on page load
- CSS variable-based themes
dark: variant:
Notifications
Sonner 1.7.4
Beautiful toast notifications:- Stacking toasts (multiple at once)
- Promise-based loading states
- Rich content (JSX support)
- Swipe to dismiss
- Accessible (ARIA live regions)
- Better animations
- More customization options
- Active development
- Built-in dark mode support
Development Tools
Code Quality
ESLint 9.32.0:eslint-plugin-react-hooks- Enforce hooks ruleseslint-plugin-react-refresh- HMR-safe componentstypescript-eslint- TypeScript-specific linting
Testing
Vitest 3.2.4:- Native Vite integration (same config)
- Faster test execution (ESBuild)
- Compatible with Jest API (easy migration)
- Better TypeScript support
- Component testing with
@testing-library/react
@testing-library/react16.0.0 - Component testing@testing-library/jest-dom6.6.0 - DOM matchersjsdom20.0.3 - DOM environment for tests
Build Analysis
rollup-plugin-visualizer 6.0.5: Generatesdist/stats.html showing bundle composition:
- Which dependencies are largest
- How code splitting worked
- Gzip/Brotli compressed sizes
Debugging
lovable-tagger 1.1.13: Dev-only tool that tags components in the DOM for easier debugging:Patching
patch-package 8.0.1: Allows patching node_modules directly:Asset Pipeline
PostCSS 8.5.6
CSS processor: Plugins:autoprefixer10.4.21 - Adds vendor prefixes automaticallytailwindcss- Processes Tailwind directives
Capacitor Assets 3.0.5
Icon and splash screen generator:- iOS: App icons, launch screens (various sizes)
- Android: Launcher icons, adaptive icons, splash screens
Dependencies Overview
Production Dependencies (17)
View all production dependencies
View all production dependencies
Development Dependencies (19)
View all dev dependencies
View all dev dependencies
Version Strategy
All dependencies use caret ranges (
^) for automatic minor/patch updates while preventing breaking changes.- Weekly - Security patches (npm audit fix)
- Monthly - Minor version updates
- Quarterly - Major version updates (with testing)
Why This Stack?
Developer Experience
Vite + TypeScript + Tailwind = fast iteration with confidence
Performance
Modern bundling, code splitting, and optimized animations
Mobile-First
Capacitor enables true native apps from web code
Maintainability
TypeScript safety, shadcn flexibility, clear architecture
This stack prioritizes shipping fast while maintaining long-term quality - perfect for indie developers and small teams.