Contributing

How to Contribute

We're always looking for people to help make Kavita even better, there are several ways to contribute.

Reach out to us on the discord if you have any questions!

Development

Tools required

Getting started

  1. Fork Kavita
  2. Clone the repository into your development machine. Info (opens in a new tab)
  3. Install the required Node Packages
cd Kavita/UI/Web
npm install
npm install -g @angular/cli
  1. Start angular server ng serve
  2. Build the project in Visual Studio/Rider, Setting the startup project to API
  3. Debug the project in Visual Studio/Rider
  4. Open http://localhost:4200 (opens in a new tab)
  5. (Deployment only) Run build.sh and pass the Runtime Identifier for your OS or just build.sh for all supported RIDs.

Contributing Code

  • If you're adding a new, already requested feature, please comment on Github Issues (opens in a new tab) so work is not duplicated (If you want to add something not already on there, please talk to us first)
  • Rebase from Kavita's develop branch, don't merge
  • Make meaningful commits, or squash them
  • Feel free to make a pull request before work is complete, this will let us see where it is at and make comments/suggest improvements
  • Add tests (unit/integration)
  • Commit with *nix line endings for consistency (We checkout Windows and commit *nix)
  • One feature/bug fix per pull request to keep things clean and easy to understand
  • Use 4 spaces instead of tabs, this is the default for VS 2019 and WebStorm (to my knowledge)
    • Use 2 spaces for UI files

Pull Requesting

  • Only make pull requests to develop, never main, if you make a PR to main we'll comment on it and close it
  • You're probably going to get some comments or questions from us, they will be to ensure consistency and maintainability
  • We'll try to respond to pull requests as soon as possible, if it has been a day or two, please reach out to us, we may have missed it
  • Each PR should come from its own feature branch (opens in a new tab) and not develop in your fork, it should have a meaningful branch name (what is being added/fixed)
    • new-feature (Bad)
    • fix-bug (Bad)
    • patch (Bad)
    • develop (Bad)
    • feature/parser-enhancements (Great)
    • bugfix/book-issues (Great)

Swagger API

If you just want to play with Swagger, you can just

If you have any questions about any of this, please let us know.