Tech Stack
stevenson.space is built with modern web technologies:Frontend Framework
- Vue 3 - Progressive JavaScript framework with Composition API
- TypeScript - Type-safe JavaScript for better developer experience
- Pinia - Official state management library for Vue 3
- Vue Router - Official routing library for Vue 3
Build Tools
- Vite - Next-generation frontend build tool
- Sass - CSS preprocessor for advanced styling
- ESLint - Code linting with Airbnb style guide
- Prettier - Code formatting
UI & Animation
- FontAwesome - Icon library
- GSAP - Animation library
- Anime.js - JavaScript animation engine
- Howler.js - Audio library
Infrastructure
- Cloudflare Pages - Static site hosting with global CDN
- Cloudflare Workers - Serverless backend for Jukebox and email forms
- Google OAuth 2.0 - Authentication
- Sentry - Error tracking and monitoring
Project Structure
The source code is organized into the following directories:Key Directories
src/views/
Page-level components representing different routes. Each view directory contains:
- Main Vue component(s) for that page
- Page-specific styles and logic
src/components/
Reusable UI components used across multiple views:
Card.vue- Base card componentCardContainer.vue- Container for card layoutsCheckbox.vue- Custom checkbox componentColorPicker.vue- Color selection componentCustomLink.vue- Enhanced link componentConfirmPopup.vue- Confirmation dialog- And many more…
Components include Storybook stories (
.stories.ts) for documentation and testing.src/stores/
Pinia stores for state management:
authentication.ts- User authentication stateclock.ts- Clock and time-related stateschedules.ts- Bell schedule data and logicthemes.ts- Theme selection and customizationuser-settings.ts- User preferences and settings
src/themes/
Theme system with seasonal and holiday themes:
- Base theme configurations
- Header images for different themes
- Particle effects (candy, fall, halloween, sakura, st-patricks)
src/router/
Vue Router configuration defining:
- Route paths and components
- Navigation guards
- Route-level code splitting
Build Process
The build process is orchestrated by Vite and npm scripts:Build: Vite compilation
Vite Configuration
Key configuration fromvite.config.js:
@ alias allows imports like import Component from '@/components/Component.vue' instead of relative paths.
Testing Infrastructure
The project uses:- Vitest - Unit testing framework
- Storybook - Component development and visual testing
- Playwright - Browser automation for component tests
Backend Services
stevenson.space uses Cloudflare Workers for serverless backend functionality:- Music Backend: Jukebox music storage and streaming
- Email Forms: Contact and notification forms
Code Organization Principles
- Component-based architecture: UI is broken into small, reusable components
- Type safety: TypeScript ensures type correctness across the codebase
- Centralized state: Pinia stores manage shared application state
- Theme system: Modular theme architecture supports easy customization
- Path aliases: Clean imports using
@/prefix
Next Steps
- Review the contribution guidelines for coding standards
- Explore individual components in Storybook
- Check the Pinia stores to understand application state