A modern, beautiful web application to explore the world of The Simpsons
Live Demo β’ Report Bug β’ Request Feature
- π¨ Modern UI/UX - Beautiful design with Simpsons-inspired color palette
- π Dark Mode - Toggle between light and dark themes with localStorage persistence
- π΅ Theme Music - Play the iconic Simpsons opening theme
- π± Fully Responsive - Works seamlessly on desktop, tablet, and mobile
- β‘ Fast & Optimized - Built with Vite for lightning-fast performance
- π§ͺ Well Tested - ~92% code coverage with comprehensive unit tests
- π³ Docker Ready - Deploy anywhere with Docker containers
- βΏ Accessible - SEO optimized and accessible design
- Vue.js 3.5 - Progressive JavaScript framework
- Vue Router 4 - Official routing solution
- Composition API - Modern Vue 3 approach
- Tailwind CSS 4 (Beta) - Utility-first CSS framework
- PostCSS - CSS transformation
- CSS Variables - Dynamic theming
- Vite 6 - Next-generation frontend tooling
- @tailwindcss/vite - Tailwind CSS 4 Vite plugin
- ESLint 9 - JavaScript linting (Flat Config)
- Prettier - Code formatting
- Vitest 4 - Unit testing framework
- @vue/test-utils - Vue component testing
- @vitest/coverage-v8 - Code coverage reporting
- Axios - HTTP client
- The Simpsons API - External API for character, episode, and location data
- Docker - Containerization
- Nginx - Production web server
- Git - Version control
The application follows a modular component-based architecture:
src/
βββ components/ # Reusable UI components
β βββ AudioPlayer.vue
β βββ Card.vue
β βββ Hero.vue
β βββ Navbar.vue
β βββ ThemeToggle.vue
βββ views/ # Page-level components
β βββ Home.vue
β βββ Characters.vue
β βββ Episodes.vue
β βββ Locations.vue
βββ services/ # API and business logic
β βββ api.js
βββ router/ # Routing configuration
βββ assets/ # Static assets
-
Composition API Pattern - Leverages Vue 3's Composition API for better code organization and reusability
-
Service Layer Pattern - Centralized API calls in
services/api.jswith Axios interceptors for response normalization -
Component Composition - Small, focused components that can be composed together
-
Reactive State Management - Using Vue's
refandreactivefor state management -
Dark Mode Strategy - CSS custom properties with class-based theme switching
- Node.js 18+ and Yarn
- Or Docker and Docker Compose
# Clone the repository
git clone https://github.com/userlg/The-Simpsons-App.git
cd simpsons-app
# Install dependencies
yarn install
# Start development server
yarn dev
# Open http://localhost:5173# Build for production
yarn build
# Preview production build
yarn preview
# Run tests
yarn test
# Generate coverage report
yarn coverage
# Lint and fix code
yarn lint# Build and start the container
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the container
docker-compose downThe app will be available at http://localhost:8080
# Build the image
docker build -t simpsons-app .
# Run the container
docker run -d -p 8080:80 --name simpsons-vue-app simpsons-app
# Stop the container
docker stop simpsons-vue-app
docker rm simpsons-vue-appThe project has comprehensive test coverage (~92%):
# Run all tests
yarn test
# Generate coverage report
yarn coverage
# Open coverage report
open coverage/index.htmlTest Suites:
- β API Service (100% coverage)
- β All Views (100% coverage)
- β Core Components (90%+ coverage)
simpsons-app/
βββ public/ # Static assets
βββ src/
β βββ assets/ # Audio, images
β βββ components/ # Vue components
β βββ router/ # Vue Router config
β βββ services/ # API services
β βββ views/ # Page components
β βββ App.vue # Root component
β βββ main.js # Entry point
β βββ style.css # Global styles
βββ coverage/ # Test coverage reports
βββ dist/ # Production build
βββ Dockerfile # Docker configuration
βββ docker-compose.yml # Docker Compose config
βββ vitest.config.js # Test configuration
βββ vite.config.js # Vite configuration
βββ eslint.config.js # ESLint configuration
The app uses the iconic Simpsons color scheme:
--color-simpson-yellow: #ffd90f;
--color-simpson-blue: #0c6cbf;
--color-simpson-pink: #d14294;
--color-simpson-text: #333333;Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
GitHub: @usrlg
- The Simpsons API for providing the data
- Vue.js Team for the amazing framework
- Tailwind Labs for Tailwind CSS
- The Simpsons for decades of entertainment
Made with β€οΈ and π©
