Development and Contribution
Thank you for your interest in this project! It's a private open-source hobby project that I maintain in my free time. Therefore, there are some simple but important rules for contributions:
Project Goal
This project is primarily intended to remain functional, stable, and easy to understand. It is available for free, but maintenance is provided without commercial support and for a limited time.
Contributions are welcome!
Feel free to contribute, e.g. E.g., with:
- Functional enhancements
- Bug fixes
- Documentation improvements
- Suggestions that provide clear added value
Things that I think would benefit the project
| Area | Skills needed |
|---|---|
| Revision of the design, UI/UX of the application | UI/UX design, CSS, Angular (+ Material) |
| Windows and MacOs build | Electron, Rust, Windows and / or MacOs |
| Revision of the design, UI/UX of the Website | UI/UX design, CSS, 11ty |
What I don't want
Please refrain from:
- Discussions about purely stylistic issues (e.g., branch names, commit formats) if they don't solve functional problems
- Criticism without concrete solutions or practical benefits
- PRs or issues that restructure existing functionality without a clear benefit
Submitting suggestions
If you have ideas or requests:
- Please describe specifically what you are suggesting.
- Why is it helpful?
- If possible, offer a solution or PR right away.
Writing PRs
I value well-structured code. All code styles and best practices are automatically reviewed by various Woodpecker Actions.
Please ensure that your changes do not violate the guidelines beforehand. To do so, run the file bash run-ci-manual.sh and check that the text "all done" is displayed and that no changes have been made automatically in the Git repository.
I reserve the right to close issues or pull requests that don't fit the project framework or that require too much maintenance without providing any benefit.
Thank you for your understanding and enjoy the project!
Development Setup
Build backend and frontend
Build and start the backend in development mode. The frontend will reload automatically when changes are made, the backend will need to be restarted manually.
- Clone the repository.
- Navigate to the frontend directory:
cd frontend/looksyk - Install frontend dependencies:
npm install - Start the frontend server:
npm run ng serve --proxy-config=proxy.config.json - Navigate to the backend directory:
cd backend - Install backend dependencies:
cargo run - The frontend will be available at
http://localhost:4200 - The backend will be available at
http://localhost:11000
Run backend tests
- Navigate to the backend directory:
cd backend - Run the tests:
cargo test
If there are changes at the high-efficiency parts of the codebase (e.g. the parser), it's recommended to run the benchmark tests as well:
- Navigate to the backend directory:
cd backend - Run the benchmark tests:
cargo bench - Make your changes
- Run the benchmark tests again to compare the results
Build electron app
- Change into the application-wrapper directory
cd application-wrapper/Looksyk/ - Install electron dependencies
npm install - Build the electron app
npm run package - The application is now in the
outfolder e.g.out/looksyk-linux-x64/looksyk
Contribution Guidelines
Contributions are welcome! Here are the steps to contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch). - Make your changes.
- Check if your changes pass the tests and checks. Run
bash run-ci-manual.shto run all tests and checks. If there are any issues, please fix them before proceeding. - Commit your changes (
git commit -am 'Add new feature'). - Push to the branch (
git push origin feature-branch). - Create a new Pull Request into the
mainbranch. Here, all changes are collected, manually tested by me, and combined into a single version. To release a version, the main branch is merged into the stable branch.~~~~
Where should I target my pull request?
Pull requests should be targeted to the main branch.
The stable branch is reserved for the latest release.
Troubleshooting
- see FAQ Install + Run