Versi Inggris: README_EN.md · dokumentasi Inggris untuk penulis extension: docs/en/
Pembaca manga dan pemutar anime dengan sistem extension — Mirai tidak membawa satu pun sumber konten. Katalog datang dari extension yang kamu pasang sendiri dari repo pilihanmu, mengikuti pola Aniyomi dan keiyoushi/extensions.
Web-first, mobile-first, dan bisa dibungkus jadi APK lewat Capacitor. Library, riwayat, dan progres baca/tonton tersimpan lokal di SQLite sehingga tetap terbuka tanpa internet. Baca dan nonton tetap butuh koneksi kecuali chapter atau episodenya sudah diunduh.
Stack — Vue 3 · Vite 8 · TypeScript · Tailwind v4 · shadcn-vue (reka-ui) · Pinia · Capacitor 8 · SQLite · pnpm workspaces
pnpm install
cp apps/proxy/.env.example apps/proxy/.env
pnpm --filter @mirai/extensions build # extension → extensions/dist
pnpm dev # http://localhost:5180
pnpm dev:proxy # http://127.0.0.1:5181, di terminal lainDi build web semua request extension menempuh proxy, jadi tanpa pnpm dev:proxy
halaman Browse memuat daftar sumbernya tapi tidak bisa mengambil katalog. Hasil
build extension disajikan di /ext-dev sebagai repo lokal selama dev.
| Perintah | Fungsi |
|---|---|
pnpm dev |
Dev server app (port 5180, strictPort) |
pnpm dev:proxy |
Proxy CORS + stream untuk build web |
pnpm build |
Build seluruh workspace |
pnpm typecheck |
vue-tsc di seluruh workspace |
pnpm lint / pnpm lint:fix |
ESLint |
pnpm format / pnpm format:check |
Prettier |
pnpm test |
Vitest |
node scripts/smoke.mjs |
Smoke test Playwright (butuh pnpm dev jalan) |
apps/app Vue SPA + host Capacitor — ini yang jadi APK
apps/proxy Proxy CORS/stream untuk build web
packages/
extension-api Kontrak extension. Nol dependensi.
extension-lib Toolkit penulis extension (parser, http, resolver)
extension-runtime Loader + sandbox Worker + manajemen repo
db Skema SQLite, migrasi, repositories
extensions Source extension bawaan + skrip build repo
Alasan pembagiannya ada di docs/architecture.md.
APK dibangun GitHub Actions, bukan di mesin lokal: buat Release ber-tag vX.Y.Z,
dan mirai-X.Y.Z.apk menempel di Release itu beberapa menit kemudian. Versinya
diturunkan dari tag (versionCode = X*10000 + Y*100 + Z).
pnpm cap:sync # build web + salin ke apps/app/android
pnpm android:open # sync lalu buka Android Studio (helper WSL)
pnpm android:icons # gambar ulang ikon & splashKetiganya butuh Android SDK, yang belum terpasang di mesin pengembangan — jadi APK-nya belum pernah diuji di perangkat fisik. Rinciannya, termasuk kenapa keystore debug ikut di-commit dan kenapa halaman luar dibuka di WebView aplikasi, ada di docs/features/android.md.
| Fase | Isi | Status |
|---|---|---|
| 0 | Fondasi monorepo, shell layout, tooling | ✅ |
| 1 | Extension API, runtime sandbox, proxy | ✅ |
| 2 | Repo extension, manajemen, Komikcast + Otakudesu | ✅ |
| 3 | SQLite, Library offline-first, Updates | ✅ |
| 4 | Reader manga (paged + webtoon) | ✅ |
| 5 | Player anime | ✅ |
| 6 | Unduh manga | ✅ |
| 7 | Unduh anime (mp4 + HLS) | ✅ |
| 8 | Build Android (APK) | ✅ |
| 9 | Backup, dwibahasa, polish | ✅ |
Rincian tiap fase: docs/roadmap.md.
| Dokumen | Isi |
|---|---|
| docs/PRD.md | Masalah, tujuan, scope, non-goals |
| docs/DESIGN.md | Token warna, tipografi, pola komponen |
| docs/architecture.md | Lapisan, alur data, jaringan, penyimpanan |
| docs/conventions.md | Aturan koding yang wajib diikuti |
| docs/roadmap.md | Fase 0–9 dan kriteria selesainya |
| docs/features/ | Satu dokumen per fitur |
| docs/extensions/ | Cara menulis extension + API reference |
| docs/en/ | Terjemahan Inggris untuk penulis extension |
| CHANGELOG.md | Riwayat rilis |
Sumber adalah paket terpisah yang mengimplementasikan satu interface dan dijalankan di dalam Web Worker terisolasi. Mulai dari docs/extensions/writing-an-extension.md.
Mirai adalah klien kosong. Repo extension yang kamu tambahkan dan kepatuhan pada ketentuan layanan situs sumbernya adalah tanggung jawabmu sendiri.