Skip to content

Axolotl Reader is a self-hosted web app to organize, browse, and read your comics, manga, or manhwa collection.

License

Notifications You must be signed in to change notification settings

Bastien2203/axolotl-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

Axolotl Reader

Axolotl Reader is a self-hosted web app to organize, browse, and read your comics, manga, or manhwa collection.

Docker Image

Screenshots

Screenshot 1 Screenshot 2

Screenshot Phone Screenshot Phone

Getting started

Create directories that will be used to store the database and the books:

mkdir -p data/
mkdir data/covers
touch data/comics.db

Create a .env file in the root of the project with the following content:

# JWT secret used to sign the JWT token (change it to something else)
JWT_SECRET=your_jwt_secret

# The host of your APP
API_HOST=https://axolotl.bastiengrisvard.com

# Environment variables
ENV=production
GIN_MODE=release

Run the lastest version of the docker image:

docker run -d \
  --env-file .env \
  -p 8888:8080 \
  -v $(pwd)/data:/app/data \
  --restart always \
  --name axolotl-reader \
  ghcr.io/bastien2203/axolotl-reader:latest

Tech stack

This project is split into two folders:
api/ for the Go backend

Go Gin Gorm SQLite


app/ for the React frontend

React Vite TailwindCSS DaisyUI

Development

// TODO : Add a real dev environment

mkdir -p api/data
mkdir api/covers
touch api/comics.db

Backend (Go + Gin + Gorm + Sqlite)

  • Go 1.23.0
  • Sqlite 3
cd api
go mod tidy
go run main.go

Frontend (React + TS + Vite)

  • Node >=22.15.0
cd app
npm install
npm run dev

TODO

Backend

  • Remove facets route when frontend finished removing the usage
  • Add reading progress in the API (should be also available offline in the app)
  • Currently series cover is the first book cover, we should add a dedicated field for it
  • Add Bulk import for series
  • Currently its possible to add a book that is not part of a series, do we want to keep this ? (it needs to be fixed in the frontend too)
  • When registering book cover convert it to webp
  • Convert all images in cbz to webp ?

Frontend

  • Add delete modal for series

  • Refacto ImportBook :

    • Instead of using facets routes, get all tags/seriesNames/authors from the REST Api routes
    • Use a bulk post instead of a post for each book
  • Fix the PWA (doesnt work offline for now)

  • Add possibility download a book (or an entire series) in the app

  • Add pagination in <SeriesTable />

  • Reader : Virtual scroll glitch when scrolling up

Ops

  • Build time for arm64 is too long
  • Add tags for release

// In series page -> if page != 1, there is a 404 err when selecting a book => cause in page loader (router) page number is missing

License

MIT © 2025 Bastien Grisvard

About

Axolotl Reader is a self-hosted web app to organize, browse, and read your comics, manga, or manhwa collection.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages