Giter Site home page Giter Site logo

mangatsu / server Goto Github PK

View Code? Open in Web Editor NEW
44.0 3.0 6.0 12.12 MB

๐ŸŒ• Media server for storing, tagging and viewing doujinshi, manga, art collections and other galleries with API and user control. Written in Go.

License: GNU General Public License v3.0

Dockerfile 0.44% Go 99.56%
manga doujinshi api go storage metadata mediaserver docker sadpanda nas manga-server self-hosted comic comic-reader manga-api manga-storage

server's Introduction

Mangatsu

๐ŸŒ• Server application for storing, tagging and reading doujinshi, manga, art collections and other galleries with API access and user control. Written in Go. The name, Mangatsu, is a play on Japanese words mangetsu (ๆบ€ๆœˆ, full moon) and manga (ๆผซ็”ป, comic).

At experimental stage until version 1.0.0. Expect breaking changes.

๐Ÿ“Œ Features

  • Organizing and tagging local (and remote, with tools like rclone) collections of manga, doujinshi and other art
    • Mangatsu will never do any writes inside specified locations.
    • Supports ZIP (or CBZ), RAR (or CBR), 7z and plain image (png, jpg, jpeg, webp, avif, heif, gif, tiff, bmp) files.
      • PDF and video support is planned.
  • Metadata parsing from filenames and JSON files (inside or beside the archive)
    • Support for more sources is planned such as TXT files from EH/ExH
  • API-access to the collection and archives
    • Extensive filtering, sorting and searching capabilities
    • Additional features for registered users such as tracking reading progress and adding favorite groups. Currently only in API, not in UI.
  • User access control
    • Private: only logged-in users can access the collection and archives (public registration disabled by default).
    • Restricted: users need a global passphrase to access collection and its galleries
    • Public: anyone can access (only read) collection and its galleries
    • Assignable roles (admin, member, viewer), and login sessions (can be managed through web)
  • Local cache and thumbnail support. File server can be disabled to allow web servers like NGINX to handle the files.

๐Ÿ–ผ๏ธ Preview

Main Catalogue Main Catalogue (grouped galleries)
catalogue grouped catalogue
Gallery Page + Editing Series Listing
editing gallery series listing
User Settings Administration
settings administration

๐Ÿ“Œ Clients

๐ŸŒ Web client

๐Ÿ“ฑ Tachiyomi extension for Android

  • Coming soon

๐Ÿ“Œ Installation and usage

๐Ÿ“– Guides

๐Ÿณ Docker setup (recommended)

GitHub Container Registry: server & web

DockerHub: server & web images

  • Set up a webserver of your choice. NGINX is recommended.
    • Example config. The same config can be used for both the server and the web client. Just change the domains, SSL cert paths and ports.
  • Install Docker (Linux, Windows or MacOS)
  • Local archives
    • Download the docker-compose.example.yml and rename it to docker-compose.yml
    • Edit the docker-compose.yml file to your needs
    • Create data and archive directories
  • Network archives with Rclone
  • Run docker-compose up -d to start the server and web client
  • Update by running docker-compose down, docker-compose pull and then docker-compose up -d

๐Ÿ’ป Local setup

  • Set up server
    • Copy example.env as .env and change the values according to your needs
    • Build go build ./cmd/mangatsu-server
    • Run ./mangatsu-server (mangatsu-server.exe on Windows)
  • Set up web

server's People

Contributors

crescentkohana avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

server's Issues

Initialize database and database user on first launch if needed

Initialize database and database user on first launch if needed. Also an environmental to disable this should be present.

For example for MySQL/MariaDB it'd be:

CREATE USER '<USERNAME>'@'<ADDRESS>' IDENTIFIED BY '<PASSWORD>';
CREATE DATABASE IF NOT EXISTS <DATABASE_NAME> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES on <DATABASE_NAME>.* to '<USERNAME>'@'<ADDRESS>';
FLUSH privileges;

The utf8mb4 COLLATE utf8mb4_unicode_ci helps with support for Japanese, Chinese etc. characters.

Video gallery support

Video support (at least mp4, webm) in galleries for both the backend and frontend.

Many cosplay and art collections include them.

Support for periodical scanning

Support for periodical scanning. Allow users to specifify the interval. Maybe library specific (as multiple library locations is supported)?

Metadata sources

Sources to pull metadata from for galleries like manga and doujinshi.

Create separate issues for individual sources.

  • AniList
  • nhentai
  • e(x)-hentai

What else?

Migrate gallery.go and validations.go to goqu

This one might be the most challenging part of the goqu rework.

  • GetGalleries function is very elaborate and prone to bugs if not converted carefully.
  • UpdateGallery can probably be refactored to be much shorter and better written overall. The Jet library made it hard to do partial updates.
  • NeedsUpdate isn't used anywhere currently and can be pretty much ignored

Gallery metadata editing

Allow admins to edit gallery metadata through the web app.

  • Gallery data
  • Gallery reference data
  • Tags

TODO list

Web TODO here

Short term

  • #12
  • #5
  • #1
  • #2
  • #3
  • #28
  • #4
  • #7
  • #26
  • Better plain file support and general improvements for the scanner and tagger
  • More testing especially for the server (db, parsers)
  • Allow disabling internal file server to allow for external file serving (like NGINX)
  • Group structured manga with the same series names

Long term

  • #6
  • Improvements to cache policy (e.g. max size)
  • Rework sessions to utilize JWT refresh tokens (expire in 5-15 minutes or so)?
  • Flutter (or something else) mobile app frontend

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.