Getting Started
stevenson.space was created in 2016 and has been maintained by student contributors ever since. The site requires constant maintenance, bug fixes, and upgrades made possible only by its contributors.Interested in becoming a dedicated contributor? Apply here to join the team!
Before You Contribute
- Set up your development environment - Follow the setup guide
- Understand the architecture - Review the project architecture
- Find an issue to work on - Check the GitHub issues
Contribution Workflow
Create a feature branch
Create a new branch for your changes:Use descriptive branch names:
feature/add-lunch-menufix/calendar-timezone-bugtheme/add-spring-theme
Make your changes
Write your code following the coding standards below. Make sure to:
- Keep changes focused and atomic
- Test your changes locally
- Run the linter before committing
Lint your code
Run ESLint to check for code quality issues:This will automatically fix many issues. Review and fix any remaining errors.
Coding Standards
ESLint Configuration
The project uses ESLint with the Airbnb style guide and custom rules. Key configurations from.eslintrc.js:6-10:
Code Style Rules
Indentation: 2 spaces (enforced by ESLint).ts and .tsx files
console.logis allowed in development- Warnings in production
- No debugger statements in production
Import Paths
Use the@ alias for cleaner imports:
Vue 3 Best Practices
Use Composition API for new components:State Management
Use Pinia stores for shared state. Available stores:stores/authentication.ts- User authenticationstores/clock.ts- Time and clock statestores/schedules.ts- Bell schedulesstores/themes.ts- Theme managementstores/user-settings.ts- User preferences
Common Contribution Areas
Adding New Themes
- Create theme assets in
src/themes/assets/ - Configure theme in
src/themes/base/ - Update theme store in
src/stores/themes.ts - Test theme switching functionality
Updating Lunch Menus
- Locate menu data in
src/data/ - Update menu items and schedules
- Test rendering in the UI
Fixing Bugs
- Reproduce the bug locally
- Identify the root cause
- Write a fix with minimal changes
- Test thoroughly
- Consider adding a test case
Adding Features
- Discuss the feature in a GitHub issue first
- Design the feature to fit the existing architecture
- Implement using existing patterns and components
- Add Storybook stories for new components
- Update documentation if needed
Testing Your Changes
Pull Request Guidelines
Before Submitting
- Code passes
npm run lint - Changes tested locally
- Commit messages are clear
- No sensitive data or credentials committed
- Branch is up to date with main
PR Description Should Include
- What - Summary of changes
- Why - Reason for the changes
- How - Approach taken
- Testing - How you tested the changes
- Screenshots - For UI changes
Review Process
- A team member will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Your changes will be deployed to Cloudflare Pages
Code Review Checklist
Reviewers will check for:- Code quality: Follows ESLint rules and project patterns
- Functionality: Changes work as intended
- Performance: No unnecessary performance regressions
- Accessibility: UI changes are accessible
- Compatibility: Works across browsers
- Security: No security vulnerabilities introduced
Learning Resources
If you’re new to the technologies used:- Vue 3: Official Vue 3 Documentation
- TypeScript: TypeScript Handbook
- Pinia: Pinia Documentation
- Vite: Vite Guide
There are over 10,000 lines of code in this project - it’s not something that can be learned overnight. Take time to explore and learn!
Getting Help
- GitHub Issues: Ask questions in issue comments
- Team Communication: Join the contributor team for guidance
- Code Comments: Read inline comments for context