- Set up Vitest for unit testing with jsdom - Add test setup with Web Audio API and requestAnimationFrame mocks - Create initial test suites for DOM and animations modules - Add test scripts to package.json (test, test:ui, test:run, coverage) - Update CI workflow to include test execution - Create CONTRIBUTING.md with conventional commits guidelines - Create SECURITY.md with security policy - Update ESLint config to support test files - All tests passing (8/8) Co-authored-by: ZaneThePython <102631678+ZaneThePython@users.noreply.github.com>
4.5 KiB
4.5 KiB
Contributing to ZanePersonal
Thank you for your interest in contributing to this project! While this is primarily a personal website, contributions are welcome.
Commit Message Format
This project follows the Conventional Commits specification for commit messages.
Format
<type>(<scope>): <subject>
<body>
<footer>
Types
- feat: A new feature
- fix: A bug fix
- docs: Documentation changes
- style: Code style changes (formatting, missing semi-colons, etc.)
- refactor: Code refactoring without changing functionality
- perf: Performance improvements
- test: Adding or updating tests
- build: Changes to build system or dependencies
- ci: Changes to CI configuration
- chore: Other changes that don't modify src or test files
Examples
feat(effects): add new particle collision detection
fix(animations): resolve timing issue with typewriter effect
docs(readme): update installation instructions
style(css): apply consistent naming convention
refactor(modules): extract sound utilities to separate module
perf(effects): optimize particle rendering loop
test(interactions): add unit tests for ripple effect
build(vite): update build configuration for better tree-shaking
ci(github-actions): add accessibility testing workflow
Development Workflow
-
Fork the repository (if you're an external contributor)
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/ZanePersonal.git cd ZanePersonal -
Install dependencies
npm install -
Create a feature branch
git checkout -b feat/your-feature-name -
Make your changes
- Write clean, readable code
- Follow existing code style
- Add comments where necessary
- Update documentation if needed
-
Run quality checks
npm run lint # Check for linting errors npm run format # Format code with Prettier npm run build # Ensure project builds successfully -
Commit your changes
git add . git commit -m "feat(scope): your descriptive message" -
Push to your fork
git push origin feat/your-feature-name -
Create a Pull Request
- Provide a clear description of changes
- Reference any related issues
- Ensure CI checks pass
Code Style Guidelines
JavaScript
- Use ES6+ features
- Prefer
constoverlet, avoidvar - Use arrow functions for callbacks
- Keep functions small and focused
- Add JSDoc comments for complex functions
- Follow the existing modular structure
CSS
- Use CSS custom properties (variables) defined in
:root - Follow BEM-like naming conventions where appropriate
- Group related properties together
- Use meaningful class names
- Avoid overly specific selectors
HTML
- Use semantic HTML5 elements
- Include proper ARIA labels for accessibility
- Ensure all images have alt text
- Maintain proper heading hierarchy
Testing
While this project doesn't currently have automated tests, please ensure:
- All features work in modern browsers (Chrome, Firefox, Safari, Edge)
- Responsive design works on mobile, tablet, and desktop
- No console errors or warnings
- Accessibility features work with keyboard navigation
Performance Considerations
- Keep total bundle size under 150KB (compressed)
- Optimize images before adding them
- Minimize use of heavy libraries
- Test animations on lower-end devices
- Use lazy loading where appropriate
Accessibility Standards
- Maintain WCAG 2.1 Level AA compliance
- Test with screen readers
- Ensure keyboard navigation works
- Provide sufficient color contrast
- Include focus indicators on interactive elements
Pull Request Checklist
Before submitting a PR, ensure:
- Code follows the project's style guidelines
- All linting checks pass (
npm run lint) - Code is properly formatted (
npm run format) - Project builds successfully (
npm run build) - Changes are tested in multiple browsers
- Documentation is updated if needed
- Commit messages follow conventional commits format
- PR description clearly explains the changes
Questions or Issues?
Feel free to:
- Open an issue for bugs or feature requests
- Start a discussion for questions
- Email contact@zane.org
License
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing! 🎉