diff --git a/.github/ISSUE_TEMPLATE/01-bug-report.md b/.github/ISSUE_TEMPLATE/01-bug-report.md new file mode 100644 index 0000000..699106b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-bug-report.md @@ -0,0 +1,42 @@ +--- +name: "Bug report" +about: Report a bug +--- + + + +# Bug Report + +## Description + + + +## Is this a regression? + + + +## Minimal Reproduction + + + +1. +2. +3. + +## Your Environment + + + +## Exception or Error or Screenshot + + + +

+
+
+ +## Additional Context + + diff --git a/.github/ISSUE_TEMPLATE/02-feature-request.md b/.github/ISSUE_TEMPLATE/02-feature-request.md new file mode 100644 index 0000000..684ca10 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02-feature-request.md @@ -0,0 +1,34 @@ +--- +name: "Feature request" +about: Suggest a feature +--- + +# Feature Request + +## Description + + + +## Describe the solution you'd like + + + +## Describe alternatives you've considered + + + +## Use Case + + + +## Priority + + + +- [ ] Low - Nice to have +- [ ] Medium - Would improve my workflow +- [ ] High - Critical for my use case + +## Additional Context + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..5a7ca50 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,54 @@ +# โœจ Pull Request + +### ๐Ÿ““ Referenced Issue + + + +### โ„น๏ธ About the PR + + + +### ๐Ÿ”„ Type of Change + + + +- [ ] ๐Ÿ› Bug fix (non-breaking change which fixes an issue) +- [ ] โœจ New feature (non-breaking change which adds functionality) +- [ ] ๐Ÿ’ฅ Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] ๐Ÿ“š Documentation update +- [ ] ๐Ÿงน Code cleanup/refactoring +- [ ] โšก Performance improvement + +### ๐Ÿ–ผ๏ธ Testing Scenarios / Screenshots + + + +### โœ… Checklist + + + +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published + +### ๐Ÿงช How Has This Been Tested? + + + +### ๐Ÿ“ฑ Platform Testing + + + +- [ ] macOS (Intel) +- [ ] macOS (Apple Silicon) +- [ ] Windows (if applicable) +- [ ] Linux (if applicable) + +### ๐Ÿ“‹ Additional Notes + + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..19c40e3 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,28 @@ +# Code of Conduct + +All participants of the Donut Browser project (referred to as "the project") are expected to abide by our Code of Conduct, both online and during in-person events that are hosted and/or associated with the project. + +## The Pledge + +In the interest of fostering an open and welcoming environment, we pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## The Standards + +Examples of behavior that contributes to creating a positive environment include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism + +Examples of unacceptable behavior by participants include: + +- Trolling, insulting/derogatory comments, public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Not being respectful to reasonable communication boundaries, such as 'leave me alone,' 'go away,' or 'I'm not discussing this with you.' +- Other conduct which you know could reasonably be considered inappropriate in a professional setting. + +## Enforcement + +Violations of the Code of Conduct may be reported by pinging @zhom on Github. All reports will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Further details of specific enforcement policies may be posted separately. + +We hold the right and responsibility to remove comments or other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any members for other behaviors that they deem inappropriate, threatening, offensive, or harmful. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..0bfb4f1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,216 @@ +# Contributing to Donut Browser + +Contributions are welcome and always appreciated! ๐Ÿฉ + +To begin working on an issue, simply leave a comment indicating that you're taking it on. There's no need to be officially assigned to the issue before you start. + +## Before Starting + +Do keep in mind before you start working on an issue / posting a PR: + +- Search existing PRs related to that issue which might close them +- Confirm if other contributors are working on the same issue +- Check if the feature aligns with our roadmap and project goals + +## Tips & Things to Consider + +- PRs with tests are highly appreciated +- Avoid adding third party libraries, whenever possible +- Unless you are helping out by updating dependencies, you should not be uploading your lock files or updating any dependencies in your PR +- If you are unsure where to start, open a discussion and we will point you to a good first issue + +## Development Setup + +Ensure you have the following dependencies installed: + +- Node.js (see `.node-version` for exact version) +- pnpm package manager +- Latest Rust and Cargo toolchain +- [Tauri prerequisites guide](https://v2.tauri.app/start/prerequisites/). + +## Run Locally + +After having the above dependencies installed, proceed through the following steps to setup the codebase locally: + +1. **Fork the project** & [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) it locally. + +2. **Create a new separate branch.** + + ```bash + git checkout -b feature/my-feature-name + ``` + +3. **Install frontend dependencies** + + ```bash + pnpm install + ``` + +4. **Install nodecar dependencies** + + ```bash + cd nodecar + pnpm install --ignore-workspace --frozen-lockfile + cd .. + ``` + +5. **Start the development server** + + ```bash + pnpm tauri dev + ``` + +This will start the app for local development with live reloading. + +## Code Style & Quality + +We use several tools to maintain code quality: + +- **Biome** for JavaScript/TypeScript linting and formatting +- **Clippy** for Rust linting +- **rustfmt** for Rust formatting + +### Before Committing + +Run these commands to ensure your code meets our standards: + +```bash +# Format and lint frontend code +pnpm format:js + +# Format and lint Rust code +pnpm format:rust + +# Run all linting +pnpm lint +``` + +## Building + +It is crucial to test your code before submitting a pull request. Please ensure that you can make a complete production build before you submit your code for merging. + +```bash +# Build the frontend +pnpm build + +# Build the backend +cd src-tauri && cargo build + +# Build the Tauri application +pnpm tauri build +``` + +Make sure the build completes successfully without errors. + +## Testing + +- Always test your changes on the target platform +- Test both development and production builds +- Verify that existing functionality still works +- Add tests for new features when possible + +## Pull Request Guidelines + +๐ŸŽ‰ Now that you're ready to submit your code for merging, there are some points to keep in mind: + +### PR Description + +- Fill your PR description template accordingly +- Have an appropriate title and description +- Include relevant screenshots for UI changes. If you can include video/gifs, it is even better. +- Reference related issues + +### Linking Issues + +If your PR fixes an issue, add this line **in the body** of the Pull Request description: + +```text +Fixes #00000 +``` + +If your PR is referencing an issue: + +```text +Refs #00000 +``` + +### PR Checklist + +- [ ] Code follows our style guidelines +- [ ] I have performed a self-review of my code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published + +### Options + +- Ensure that "Allow edits from maintainers" option is checked + +## Types of Contributions + +### Bug Reports + +When filing bug reports, please include: + +- Clear description of the issue +- Steps to reproduce +- Expected vs actual behavior +- Environment details (OS, version, etc.) +- Screenshots or error logs if applicable + +### Feature Requests + +When suggesting new features: + +- Explain the use case and why it's valuable +- Describe the desired behavior +- Consider alternatives you've thought of +- Check if it aligns with our roadmap + +### Code Contributions + +- Bug fixes +- New features +- Performance improvements +- Documentation updates +- Test coverage improvements + +### Documentation + +- README improvements +- Code comments +- API documentation +- Tutorial content +- Translation work + +## Architecture Overview + +Donut Browser is built with: + +- **Frontend**: Next.js React application +- **Backend**: Tauri (Rust) for native functionality +- **Node.js Sidecar**: `nodecar` binary for proxy support +- **Build System**: GitHub Actions for CI/CD + +Understanding this architecture will help you contribute more effectively. + +## Getting Help + +- **Issues**: Use for bug reports and feature requests +- **Discussions**: Use for questions and general discussion +- **Pull Requests**: Use for code contributions + +## Code of Conduct + +Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. + +## Recognition + +All contributors will be recognized! We use the all-contributors specification to acknowledge everyone who contributes to the project. + +--- + +Thank you for contributing to Donut Browser! ๐Ÿฉโœจ diff --git a/README.md b/README.md index 53ec24e..f2641a4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,66 @@ -# Donut Browser +
+ Donut Browser Logo +

Donut Browser GitHub release

+ A powerful browser orchestrator that puts you in control of your browsing experience. ๐Ÿฉ +
+
-TODO +

+ + PRs Welcome + + + License + + + GitHub stars + +

+ +## Donut Browser + +> A free and open source browser orchestrator built with [Tauri](https://v2.tauri.app/). + +![Donut Browser Preview](assets/preview.png) + +## Download + +The app can be downloaded from the [releases page](https://github.com/zhom/donutbrowser/releases/latest). + +## Supported Platforms + +- โœ… **macOS** (Intel & Apple Silicon) +- ๐Ÿ”„ **Windows** (Planned) +- ๐Ÿ”„ **Linux** (Planned) + +## Development + +### Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md). + +## Issues + +If you face any problems while using the application, please [open an issue](https://github.com/zhom/donutbrowser/issues). + +## Roadmap + +Here is the roadmap for Donut Browser: + +- ๐Ÿ”„ Windows support +- ๐Ÿ”„ Linux support +- ๐Ÿ”„ Browser extensions marketplace +- ๐Ÿ”„ Advanced proxy configuration +- ๐Ÿ”„ Profile synchronization +- ๐Ÿ”„ Enhanced security features + +## Community + +Have questions or want to contribute? We'd love to hear from you! + +- **Issues**: [GitHub Issues](https://github.com/zhom/donutbrowser/issues) +- **Discussions**: [GitHub Discussions](https://github.com/zhom/donutbrowser/discussions) + +## License + +This project is licensed under the AGPL-3.0 License - see the [LICENSE](LICENSE) file for details. diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..9ac1c48 Binary files /dev/null and b/assets/logo.png differ