Thank you for your interest in contributing to Trestle! This document provides guidelines and information for contributors.
- Node.js 22.x or later
- Bun (recommended) or npm
- Git
- An Are.na account with a Personal Access Token
-
Fork and clone the repository
git clone https://github.com/your-username/trestle.git cd trestle -
Install dependencies
bun install
-
Set up environment variables
cp .env.example .env # Edit .env and add your Are.na token -
Start the development server
bun dev
- We use Biome for formatting and linting
- Run
bun lintbefore committing to ensure code consistency - Follow TypeScript best practices
- Use meaningful variable and function names
src/
├── components/ # Reusable UI components
│ ├── ArenaBlock/ # Core block rendering
│ ├── icons/ # SVG icon components
│ └── ...
├── lib/ # Utilities and hooks
├── routes/ # File-based routing
└── styles.scss # Global styles
- Use functional components with TypeScript
- Export components from
index.tsxfiles - Use SCSS modules for component styling
- Follow the existing naming conventions
- Test on both mobile and desktop viewports
- Verify keyboard navigation works correctly
- Test swipe gestures on touch devices
- Ensure Are.na blocks load and display properly
When reporting issues, please include:
- Description: Clear description of the problem
- Steps to reproduce: Detailed steps to reproduce the issue
- Expected behavior: What you expected to happen
- Actual behavior: What actually happened
- Environment: Browser, OS, device type
- Screenshots: If applicable
We welcome feature requests! Please:
- Check existing issues to avoid duplicates
- Provide a clear description of the feature
- Explain the use case and benefits
- Consider implementation complexity
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the coding guidelines
- Add tests if applicable
- Update documentation
-
Test your changes
bun lint bun build bun dev
-
Commit your changes
git add . git commit -m "feat: add your feature description"
- Title: Use conventional commit format
- Description: Explain what changes you made and why
- Screenshots: Include screenshots for UI changes
- Testing: Describe how you tested the changes
- Breaking changes: Note any breaking changes
Use conventional commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changesrefactor:- Code refactoringtest:- Test additions/changeschore:- Build process or auxiliary tool changes
Examples:
feat: add keyboard navigation supportfix: resolve block loading issue on mobiledocs: update API documentation
- Performance optimizations: Image loading, bundle size
- Accessibility improvements: Screen reader support, keyboard navigation
- Mobile experience: Touch gestures, responsive design
- Documentation: Code comments, usage examples
- New block types: Support for different Are.na block types
- Theming system: Customizable color schemes
- Analytics: Usage tracking and insights
- SEO improvements: Meta tags, structured data
- Internationalization: Multi-language support
- Advanced animations: Micro-interactions, transitions
- Plugin system: Extensible architecture
- Discussions: Use GitHub Discussions for questions
- Issues: Create an issue for bugs or feature requests
- Email: Contact jake@jake.kitchen
By contributing to Trestle, you agree that your contributions will be licensed under the MIT License.
Contributors will be recognized in:
- README.md acknowledgments
- Release notes
- Project documentation
Thank you for contributing to Trestle! 🎉