Home

Awesome

<p align="center"> <img alt="Stump's logo. Description: A young individual sitting on a tree stump reading a book. Inspired by Stump's creator's childhood, where a large amount of his time was spent sitting on a tree stump reading his comic books." src="./.github/images/logo.png" style="width: 50%" /> <br /> <a href="https://github.com/awesome-selfhosted/awesome-selfhosted#document-management---e-books"> <img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome Self-Hosted"> </a> <a href="https://discord.gg/63Ybb7J3as"> <img src="https://img.shields.io/discord/972593831172272148?label=Discord&color=5865F2" /> </a> <a href="https://github.com/stumpapp/stump/blob/main/LICENSE"> <img src="https://img.shields.io/static/v1?label=License&message=MIT&color=CF9977" /> </a> <a href="https://hub.docker.com/r/aaronleopold/stump"> <img src="https://img.shields.io/docker/pulls/aaronleopold/stump?logo=docker&color=0aa8d2&logoColor=fff" alt="Docker Pulls"> </a> </p> <p align='center'> Stump is a free and open source comics, manga and digital book server with OPDS support, created with <a href="https://www.rust-lang.org/">Rust</a>, <a href='https://github.com/tokio-rs/axum'>Axum</a>, <a href='https://github.com/Brendonovich/prisma-client-rust'>Prisma</a> and <a href='https://reactjs.org/'>React</a>. </p> <p align='center'> <img alt="Screenshot of Stump" src="./.github/images/demo.png" style="width: 90%" /> </p> <!-- prettier-ignore: I hate you sometimes prettier --> <details> <summary><b>Table of Contents</b></summary> <p> </details>

🚧 Disclaimer 🚧: Stump is under active development and is an ongoing WIP. Anyone is welcome to try it out, but DO NOT expect a fully featured or bug-free experience. If you'd like to contribute and help expedite feature development, please review the developer guide.

Roadmap 🗺

The following items are the major targets for Stump's first stable release:

Things you can expect to see afterwards:

Feel free to reach out if you have anything else you'd like to see!

Getting Started 🚀

Stump isn't ready for normal usage yet. To give it a spin, it is recommended to try the nightly Docker image. If you're interested in development, or trying it from source, you can follow the developer guide.

For more information about getting started, check out the guides available on the Stump website.

Developer Guide 💻

Contributions are very welcome! Please review the CONTRIBUTING.md before getting started.

A quick summary of the steps required to get going:

  1. Install yarn, rust and node.

    • If you're running Windows, you will need Visual C++
    • If you're running macOS on Apple Silicon, you'll need to install Rosetta
  2. Install cargo-watch

  3. Run the setup script:

    ./scripts/system-setup.sh
    

    This isn't strictly necessary, and is mostly beneficial for Linux users (it installs some system dependencies). Feel free to skip this step if you'd like, and instead just run:

    yarn run setup
    

    This will build the React app, generate the Prisma client, and generate the Rust-TypeScript types. To do any of these individually, you can run:

     # build the React app
     yarn web build
     # generate the Prisma client and Rust-TypeScript types
     cargo codegen # or cargo prisma generate --schema=./core/prisma/schema.prisma for just the Prisma client
    
  4. Start one of the apps:

    A few example commands are:

    # run the webapp + server
    yarn dev:web
    # run the desktop app + server
    yarn start:desktop
    # run the docs website
    yarn docs dev
    

    Or just cargo for the server (and other Rust apps):

    cargo run --package stump_server --bin stump_server
    

And that's it!

Where to start?

If you aren't sure where to start, I recommend taking a look at open issues. You can also check out the current project board to see what's actively being worked on or planned.

In general, the following areas are good places to start:

Run in Postman

Project Structure 📦

<details> <summary><b>Click to expand</b></summary>

Stump has a monorepo structure managed by yarn workspaces and cargo workspaces. The project is split into a number of different packages and crates, each with their own purpose:

Apps

Stand-alone applications that can be run independently, at /apps in the root of the project:

The only exception to this is the docs app, which is a NextJS application and is located at /docs in the root of the project.

Core

A Rust crate containing Stump's core functionalities, at /core in the root of the project

Crates

Various Rust crates, at /crates in the root of the project:

Docs

A NextJS application for the Stump documentation site at /docs in the root of the project

Packages

Various TypeScript packages, at /packages in the root of the project:

</details>

Similar Projects 👯

There are a number of other projects that are similar to Stump, it certainly isn't the first or only digital book media server out there. If Stump isn't for you, or you want to check out similar projects in the rust and/or self hosting spaces, consider checking out these other open source projects:

License 📝

Stump is licensed under the MIT License. This applies to the entire repository except for subfolders/packages which contain their own license file(s). In such cases, the license file(s) in the subfolder/package take precedence.