A Vue-based application for manuscript workflows, including ruling scheme setup and interactive book spine visualization.
Fenius helps users move from manuscript metadata to visual workflow outputs.
Core workflows:
- Create a ruling scheme
- Visualise a book spine (create new or import VCEditor JSON)
- Bookbinding pathway (currently shown as Coming soon in the UI)
- src/App.vue — root application shell
- src/router/index.js — route definitions
- src/components — UI screens and feature components
- src/bookPaths — book paths state/flow/assets
- src/assets/styles/theme.css — shared theme tokens and global styling
- public — static app assets
- scripts/sync-book-paths-assets.mjs — asset sync utility
- Node.js 18+
- npm 9+
Install dependencies:
npm installRun the app locally:
npm run serveDefault local URL:
http://localhost:8080
Build production assets:
npm run buildRun lint checks:
npm run lintSync generated book-path assets:
npm run sync:book-paths-assets- The project uses Vue CLI (
@vue/cli-service) and serves static production output fromdist/. - Routing is handled in-app via Vue Router, so server rewrites should route unknown paths to
index.html.
This section covers deploying the built app to a Linux server with Nginx.
- Build the app:
npm ci
npm run build- Copy
dist/to your server (example path):
/var/www/fenius/dist
- Use an Nginx site config like:
server {
listen 80;
server_name your-domain.example;
root /var/www/fenius/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico|woff2?)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
try_files $uri =404;
}
}- Validate and reload Nginx:
sudo nginx -t
sudo systemctl reload nginx- (Recommended) Add TLS with Certbot:
sudo certbot --nginx -d your-domain.exampleThis repository includes vercel.json. You can connect the repo in Vercel and deploy directly.
Typical build settings:
- Build command:
npm run build - Output directory:
dist
Ensure your web server rewrites unknown paths to index.html (SPA fallback).
If 8080 is busy, stop the running process or set a custom port in Vue CLI config before starting.
Try a clean install:
rm -rf node_modules package-lock.json
npm installThis project is licensed under the Apache License 2.0. See LICENSE.