Docs

Shionlib Development Overview

Shionlib development overview: React Router/React frontend and Go/ent/PostgreSQL backend, with Redis, the River job queue, S3-compatible storage, and i18n.

ringyuki
ringyuki

October 28, 2025

Repository

Shionlib

The repository is a monorepo: apps/web is the web client, apps/api is the backend, and apps/download-worker and apps/og are the download proxy and the share image service that run at the edge.

Tech stack

Frontend

Core stack: React Router 8, React 19, TypeScript, Vite, Tailwind CSS, hina-ui, use-intl, valibot, MDX, Tiptap, pnpm

  • Framework: React Router 8 (framework mode, server-side rendering)
  • Language & runtime: React 19 + TypeScript
  • Styles & UI: Tailwind CSS 4, @hina-ui/react, Lucide
  • i18n: use-intl (route-based multilingual support with locale negotiation)
  • API types: generated from the backend's OpenAPI document with openapi-typescript
  • Forms & validation: valibot
  • Content/Docs: MDX (@mdx-js/rollup), with frontmatter parsed by remark-frontmatter
  • Rich text editing: Tiptap
  • Testing: Vitest, Playwright
  • Deployment: Docker images, deployed by Dokploy

Backend

Core stack: Go, chi, Huma, ent, PostgreSQL, Redis, River, AWS S3 SDK, Backblaze B2 (S3-compatible), ClamAV, 7-Zip, OpenTelemetry

  • Language: Go
  • HTTP: chi router + Huma (generates the OpenAPI document from code)
  • Data layer: ent, PostgreSQL; migrations are generated by Atlas and run by golang-migrate
  • Cache & rate limiting: Redis
  • Job queue: River (based on PostgreSQL)
  • Storage & uploads: AWS S3 SDK, Backblaze B2 (game files), S3-compatible storage (images)
  • File checks: 7-Zip (integrity testing and reading of contents), ClamAV (virus scanning)
  • Auth: JWT, passkeys (WebAuthn), Hikarinagi ID (OIDC)
  • i18n: multilingual error messages and notifications, resolved from the Cookie / Accept-Language
  • Observability: OpenTelemetry
  • Deployment: Docker images, deployed by Dokploy

Contributing

If you’re able, come build Shionlib with us! 👏

Please read the Contributing Guide before submitting your Pull Request. If you have any questions, open an Issue/Discussion, or ping the maintainers in your PR.

Edit this page on GitHub