Biome reported 229 diagnostics after aligning the config with
bsi-ni.brain.riken.jp. Fix them all so `biome check` passes clean
without per-rule overrides.
- replace `any` in LokiJS queries with an `ItemFilter` interface and
a single `asLokiQuery()` cast, matching bsi-ni
- type the XOOPS redirect maps as
`Record<string, { key: string; isNumber: boolean }>`
- use `ItemSubTypes<string>` instead of `any` for sub item types
- join author lists with `.join(', ')` instead of index-keyed nodes
- give list elements stable keys derived from their own data
- return `React.ReactNode` from `ListBase.renderBody()`
- drop the temporary `noArrayIndexKey` override from biome.json
Visiome Platform
Static front-end for the archived Visiome Platform site, built with Vite, React and TypeScript.
Requirements
- Node.js 20.19+ / 22.12+ (Vite 8)
- npm
Setup
npm install
Site data
The pages are rendered from JSON dumped out of the original XooNIps/XOOPS
installation by xoops-static-exporter
(sites/visiome.neuroinf.jp/).
All of it lives in static-contents/, which sits next to the repository rather
than inside it:
visiome.neuroinf.jp/
├── visiome.neuroinf.jp/ this repository
└── static-contents/ database/, credits/, pico/, manual_ja/, primface/, rss.xml
The dev and preview servers mount that directory at the site root. It is
deliberately kept out of dist/: it runs to gigabytes, and the web server maps
it in directly. It is generated content and is not tracked in git.
Scripts
| Command | Description |
|---|---|
npm run dev |
Start the dev server on http://localhost:3000 |
npm run build |
Type-check and build into dist/ |
npm run preview |
Serve the production build locally |
npm run lint |
Lint with Biome |
npm run format |
Format with Biome |
npm run check |
Lint, format and organize imports, applying the safe fixes |
@types/node is pinned to the major that matches the Node runtime in use (24);
.ncurc.json keeps npm-check-updates from bumping it past that.
There is currently no test suite.
Deployment
Upload the contents of dist/ to the document root. The bundled .htaccess
rewrites the legacy XOOPS download URLs and sends every unmatched path to
index.html so client-side routing works on a full page load. On a server
without Apache, configure the equivalent SPA fallback.
Google Analytics
GOOGLE_ANALYTICS_TRACKING_ID in src/config.ts is empty, which disables
tracking. Set a GA4 measurement ID (G-XXXXXXXXXX) to enable it; the old
Universal Analytics property was shut down in 2023.