First off, thank you for considering contributing to Flicker! 🎉
It's people like you that make Emberly such a great tool. We welcome contributions from everyone, whether it's a bug report, feature suggestion, documentation improvement, or code contribution.
- Code of Conduct
- Getting Started
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Style Guidelines
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@embrly.ca.
Before you begin, ensure you have the following installed:
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/Flicker.git cd Flicker/uploader - Add the upstream remote:
git remote add upstream https://github.com/EmberlyOSS/Flicker.git
Before creating a bug report, please check existing issues to avoid duplicates.
When creating a bug report, include:
- Clear title describing the issue
- Steps to reproduce the behavior
- Expected behavior vs actual behavior
- Screenshots if applicable
- Environment details:
- OS and version
- App version
- Relevant logs
We love feature suggestions! When suggesting a feature:
- Check existing issues to avoid duplicates
- Describe the problem your feature would solve
- Propose a solution if you have one
- Consider alternatives you've thought about
- Find an issue to work on or create one
- Comment on the issue to let others know you're working on it
- Create a branch for your work
- Make your changes following our style guidelines
- Test your changes thoroughly
- Submit a pull request
# Install dependencies
bun install
# Run in development mode
bun run tauri dev
# Run type checking
bun run build
# Build for production
bun run tauri builduploader/
├── src/ # React frontend source
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── types.ts # TypeScript type definitions
│ ├── config.ts # Configuration utilities
│ ├── constants.ts # App constants
│ └── App.tsx # Main app component
├── src-tauri/ # Rust backend source
│ ├── src/
│ │ └── lib.rs # Main Rust code
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
└── public/ # Static assets
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Update the README if you've added features
- Follow commit message conventions (see below)
- Request review from maintainers
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(screenshot): add region selection support
fix(upload): handle network timeout errors
docs(readme): update installation instructions
- Use TypeScript for all new code
- Follow existing code style
- Use functional components with hooks
- Keep components small and focused
- Use meaningful variable and function names
- Follow Rust naming conventions
- Use
rustfmtfor formatting - Add documentation comments for public functions
- Handle errors appropriately
- Use CSS variables for theming
- Follow BEM-like naming for custom classes
- Prefer Tailwind utility classes where appropriate
- Discord: Join us at embrly.ca/discord
- GitHub Discussions: For longer conversations
- Twitter/X: Follow @EmberlyOSS for updates
Don't hesitate to ask questions! You can:
- Open a GitHub Discussion
- Ask in our Discord server
- Email us at hello@embrly.ca
Your contributions make Emberly better for everyone. We appreciate your time and effort!
Made with ❤️ by the Emberly Community