miruzo-web is a Solid.js single-page application for browsing the miruzo photo
archive hosted by the companion miruzo-core backend. It provides a responsive,
touch-friendly masonry layout, infinite scrolling for large collections, and a
localized UI that can switch between English and Japanese.
- Adaptive layout that automatically switches between grid and masonry modes to show photos at the sharpest available resolution.
- Infinite scrolling with batched prefetching to keep navigation smooth on both desktop and mobile.
- Solid.js + TypeScript architecture with strict typing, making it easy to add new components or integrate with other Miruzo services.
- Full i18n support out of the box (English and Japanese translations ship by default).
Follow these steps to run miruzo-web locally.
- Node.js 25 or newer (use the latest stable version listed in
.nvmrc; this project tracks current stable releases rather than LTS) - Git
- Clone the repository, and install dependencies
git clone https://github.com/mntone/miruzo-web.git && cd miruzo-web && npm install - Start the development server
Runnpm run devand open the provided URL in your browser.
npm run build: Runs type checking and builds the app.npm run preview: Serves the production build locally.npm run test: Runs type check, lint, tests, and build to verify changes.
- Launch the dev server (
npm run dev) or open the hosted build in your browser. - Make sure the miruzo backend (miruzo-core) is running and that the frontend
can reach its REST API endpoint (configure via
.env*if needed). - Browse, filter, and load more photos with the on-screen controls. Favorite or score actions will sync through the configured API.
- Backend endpoint: set
VITE_API_BASE_URL(and other variables documented in.env.example) in.env.developmentand.env.productionso the frontend can reach your miruzo-core instance. The app is bundled with Vite, soVITE_*variables are exposed at build time.
- Latest stable release of Chrome, Edge, or Firefox
- Safari (latest stable) on macOS and iOS
- Previous stable release of the same browsers (n-1)
This project is licensed under the terms of the GNU General Public License v3.0 (GPLv3).
See the LICENSE file for full details.
You are free to use, modify, and distribute this software under the terms of the GPL, provided that any derivative work is also distributed under the same license.
Interested in contributing? See CONTRIBUTING.md.
- miruzo-core — FastAPI/SQLModel backend
- gataku — Source asset repository used by the importer
miruzo-core is developed and maintained by mntone.
- GitHub: https://github.com/mntone
- Mastodon: https://mstdn.jp/@mntone
- X: https://x.com/mntone