Skip to content

stumpapp/stump

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

* WIP: misc job improvements

* WIP: queue scan then thumbnail

* WIP: thumbnail queue basics work

* WIP: library management

* fix lints, fix sync scanner

* small wording changes

* how irritating

* >:(

* use temp fork

* Revert ">:("

This reverts commit 297fbf1.

* what a day 😭

* fix script

* add migration, use websockets, start job settings page

* WIP: job table

* flight was delayed 4 hours hahahahahahaha

* add delete job and delete all jobs

* small tweaks

* small tweaks, format and update entrypoint.sh

* WIP: job table update, delete thumbnails

* tiny fix

* barebones cleanup

* review and small changes
2ef6c7b

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
y
March 26, 2023 11:00
October 22, 2022 15:36
January 1, 2022 16:12

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.
Awesome Self-Hosted Docker Pulls

Stump is a free and open source comics, manga and digital book server with OPDS support, created with Rust, Axum, Prisma and React.

Screenshot of Stump

Table of Contents

🚧 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, bug-free experience. Some features will be missing and/or broken. Additionally, I will likely flatten the migrations immediately prior to the 0.1.0 release, which would break existing Stump databases. If you'd like to contribute and help expedite Stump's first release, please review the developer guide. Otherwise, stay tuned!

Roadmap πŸ—Ί

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

  • πŸ“ƒ Full OPDS + OPDS Page Streaming support
  • πŸ“• EPUB, PDF, and CBZ/CBR support
  • πŸ“š Organize libraries with collections and reading lists
  • πŸ” Role-based access-control with managed user accounts
  • πŸš€ Easy setup and deployment using Docker or bare metal
  • πŸ‘€ Fully responsive, built-in UI with a dark mode
  • πŸƒ Low resource utilization with excellent performance
  • 🧰 Easily consumable and documented REST API, so community tools and scripts can interact with Stump
  • 🌏 Language support (see this issue)
  • 🌈 And more!

Things you can expect to see after the first release:

  • πŸ–₯️ Cross-platform desktop app (Windows, Mac, Linux)
  • πŸ“– Tachiyomi support
  • πŸ“± In-house mobile app (Android, iOS)
  • πŸ”Ž Versitile full-text search (blocked by prisma#9414)
  • πŸ‘₯ Configurable book clubs (see this issue)

I am very open to suggestions and ideas, so feel free to reach out if you have anything you'd like to see!

For more, feel free to view the FAQ page. If you're interested in tracking the development of specific features, you can take a look at the open issues.

Getting Started πŸš€

Stump isn't ready for normal usage yet. For now, follow the Developing section to build from source and run locally, or use the nightly Docker image to give it a try.

For more information about getting started, how Stump works, how it manages your library, and much more, please visit stumpapp.dev.

Developer Guide πŸ’»

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

A quick summary of the steps required to get going:

  1. Install pnpm, 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:
pnpm run setup
  1. Start one of the apps:

I use moonrepo for Stump's repository management

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

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 milestones page for a more curated list of issues that need to be addressed. I typically organize issues into milestones based on the non-patch version they will be released in.

Some other good places to start:

  • Translation, so Stump is accessible to non-English speakers.
    • Stump uses Crowdin for translations. You can find the project here.
  • Writing comprehensive tests.
  • Designing UI elements/sections or improving the existing UI/UX.
  • Docker build optimizations, caching, etc.
  • CI pipelines, automated releases and release notes, etc.
  • And lots more!

Run in Postman

Project Structure πŸ“¦

Stump has a monorepo structure managed by pnpm workspaces and moonrepo:

/apps

  • desktop: A React+Tauri application.
  • docs: A NextJS application for the Stump documentation site.
  • mobile: A React Native application.
  • server: An Axum HTTP server.
  • web: A React application.

/core

  • core: A Rust crate containing Stump's core functionalities.

/packages

  • api: All of the API functions used by the client package.
  • client: React-query config, hooks, and other client-side utilities utilities.
  • components: Shared React components for the web and desktop applications.
  • interface: A React component responsible for the main UI layout for the web and desktop applications.
  • prisma-cli: A small rust app to run the Prisma CLI.
  • types: Shared TypeScript types for interfacing with Stump's core and API

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:

Acknowledgements πŸ™

  • Komga is a huge inspiration for Stump, an amazing comics/manga media server written in Kotlin.
  • Brendonovich for building prisma client rust, which allows me to use Prisma with Rust. Stump originally used SeaORM, but the DX simply can't compare to Prisma.