Ionian. content reader.
  • Go 50.2%
  • TypeScript 39.3%
  • HTML 9.7%
  • CSS 0.6%
  • JavaScript 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-01 08:05:39 +00:00
.forgejo/workflows feat(server_go): add Actions workflow for server_go testing 2026-03-14 21:59:32 +09:00
.github feat: add Copilot instructions for Ionian project, detailing architecture, workflows, and conventions 2025-10-01 02:01:49 +09:00
.vscode feat: add launch configuration for Chrome debugging 2025-08-15 21:44:45 +09:00
cmd feat: embbed assets 2026-01-10 12:40:41 +09:00
packages merge: sync origin/main into feat/favorite 2026-08-01 02:28:54 +09:00
.gitignore feat(server_go): enhance configuration management and update documentation for config file support 2026-03-14 19:58:11 +09:00
.hintrc chore: add .hintrc configuration file for development hints 2025-10-08 02:39:50 +09:00
.impeccable.md refactor: use bookmark icons for favorites 2026-07-31 17:34:51 +09:00
.npmrc feat: retry when initDesc Failed 2025-05-01 16:12:14 +09:00
AGENTS.md doc(server_go): remove SESSION_HANDOFF.md as it is no longer needed 2026-03-09 02:11:22 +09:00
biome.jsonc BREAKING: Rework (#6) 2024-04-17 01:45:36 +09:00
deno.lock [BREAKING!]: 서버 재작업 (#16) 2024-10-09 00:18:56 +09:00
LICENSE.md add: dprint fmt 2023-06-01 14:18:53 +09:00
package.json feat: embbed assets 2026-01-10 12:40:41 +09:00
pnpm-lock.yaml feat: switch to baseui and change layout 2026-07-05 00:45:15 +09:00
pnpm-workspace.yaml BREAKING: Rework (#6) 2024-04-17 01:45:36 +09:00
README.md feat: update README for local development setup and add comic data generator 2026-08-01 01:16:57 +09:00

Ionian

Content File Management Program.

Local development

Requirements

  • Go 1.25 or later
  • Node.js and pnpm

1. Build the client

The Go server embeds the built client files, so build and copy them before starting the server.

pnpm install
pnpm --filter client build
rm -rf packages/server_go/internal/assets/dist
cp -R packages/client/dist packages/server_go/internal/assets/dist

2. Create development scan data

The development data generator creates three comic ZIP files with valid PNG pages and a root-level desc.json. One ZIP is placed in a nested directory to exercise recursive scanning.

cd packages/server_go
go run ./examples/devdata

By default, the files are written to the OS temporary directory under ionian-dev-library. Choose another location with:

go run ./examples/devdata -output /absolute/path/to/ionian-dev-library

The generator is safe to run again and prints the absolute SCAN_PATHS value when it finishes.

The scanner reads .zip files recursively. Each ZIP can contain image pages with the extensions .jpg, .jpeg, .png, .gif, .bmp, .webp, or .avif. Optional metadata is read from a root-level desc.json:

{
  "title": "Quiet Archive",
  "artist": ["Luna"],
  "group": ["Ionian Lab"],
  "series": ["Development Shelf"],
  "type": "manga",
  "character": ["Mira"],
  "tags": ["archive", "night", "sample"]
}

The leading number in a filename such as 1001 Quiet Archive.zip becomes its GID. Without desc.json, the filename becomes the title and the comic has no metadata tags.

3. Configure the server

Create packages/server_go/.env:

DATABASE_DSN=./db.dev.sqlite3
HTTP_ADDR=127.0.0.1:8080
DOMAIN=
JWT_SECRETKEY=local-development-secret-change-me
SCAN_PATHS=/tmp/ionian-dev-library
SECURE=false

Replace SCAN_PATHS with the absolute path printed by the generator. Multiple scan roots can be separated by spaces.

4. Initialize and start

From packages/server_go:

go run ./cmd/ionian migrate
go run ./cmd/ionian admin-reset
go run ./cmd/ionian server

admin-reset asks you to set the password for the admin account. Open http://127.0.0.1:8080, sign in as admin, then open Difference and start a comic scan. The generated items will appear in search after the scan finishes.

For client hot reload, keep the Go server running and start Vite from the repository root:

API_BASE_URL=http://127.0.0.1:8080 pnpm --filter client dev

Then open http://127.0.0.1:5173.

Tests

Run the client checks from the repository root:

pnpm --filter client lint
pnpm --filter client build

Run the Go tests with repository-local caches:

cd packages/server_go
mkdir -p .gocache .gotmp
GOCACHE="$PWD/.gocache" GOTMPDIR="$PWD/.gotmp" go test ./...

Additional server configuration and deployment notes are in packages/server_go/README.md.

License

MIT License