First off, thank you for considering contributing! Every bit of help is appreciated.
Before creating bug reports, please check existing issues to avoid duplicates.
When filing a bug, include:
- A clear, descriptive title
- Steps to reproduce the behavior
- Expected behavior vs. actual behavior
- Screenshots or GIFs if applicable
- Browser, OS, and version information
Feature requests are welcome! Open an issue with the enhancement label.
A good feature request includes:
- A clear description of the problem it solves
- The proposed solution
- Alternative approaches considered
- Mockups or examples if applicable
- Fork the repo and create your branch from
main - Install dependencies:
npm install - Develop with hot reload:
npm run dev - Test your changes in multiple browsers
- Follow the existing code style
- Commit with Conventional Commits:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for formatting changesrefactor:for code refactoringperf:for performance improvements
- Push to your fork and open a Pull Request
# Clone your fork
git clone https://github.com/YOUR_USERNAME/prospective.git
cd prospective
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewsrc/
├── index.tsx # Server-side routes + security middleware + JSX UI
└── renderer.tsx # HTML document shell
public/static/
├── app.js # Client-side interactions, i18n, source protection
└── style.css # All animations, easing tokens, dark mode
- CSS: Use CSS custom properties for theming. Follow the easing token system.
- JavaScript: Vanilla JS only. No frameworks. Keep it performant.
- TypeScript: Strict mode enabled. Use proper types.
- Animations: Target 60fps. Use
will-changesparingly. Respectprefers-reduced-motion. - Security: Never bypass security middleware. All new routes go through the full middleware chain.
- i18n: Add translations for both
zh(Chinese) anden(English) for any new UI text.
- Add the JSX template in
src/index.tsx - Add interaction logic in
public/static/app.js - Add styles and animations in
public/static/style.css - Add i18n keys for both languages
- Update the component list in
/api/info
<type>(<scope>): <subject>
<body>
<footer>
Examples:
feat(buttons): add elastic stretch button component
fix(nav): correct indicator position on mobile
docs(readme): add animation reference table
perf(css): optimize scroll-reveal with will-change
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
Feel free to open a discussion or issue.
Thank you for helping make Micro-interaction Lab better!