ESO Guild Gold Ledger is a live web app for tracking Elder Scrolls Online guild bank gold flow across one or more guilds, with secure accounts, shared guild access, and server-backed persistence.
- Website:
https://www.esoguildgoldledger.com - Render subdomain:
https://eso-guild-bank-management.onrender.com
- Secure sign up and login backed by a Node and Express API
- Verified recovery email and password reset flow
- Server-side SQLite persistence instead of browser-only storage
- HTTP-only cookie sessions and hashed passwords with Node
crypto.scrypt - Guest mode for temporary drafting before account creation or login
- One-click import of legacy local browser data after login
- Multi-guild support with create, rename, delete, and select flows
- Shared guild access with owner-managed invite codes
- Invite options for expiration windows and single-use access
- Member leave flow and owner-only member removal
- Deposits, withdrawals, and sales tax entry tracking with notes
- Edit and delete support for existing entries
- Daily, weekly, monthly, and overall gold statistics
- Audit logging for important account and guild actions
- Automatic server-side backup snapshots
- React + Vite frontend
- Material UI interface
- Node + Express API server
- SQLite database with
better-sqlite3
Install dependencies:
npm installRun the Vite frontend and API server together:
npm run devBuild the frontend and run the production server locally:
npm run build
npm startBy default, the API server listens on http://localhost:3001.
The app is designed to run as a single Node service in production. The production server serves the built frontend from dist/ and the API from the same process.
Typical production flow:
- Run
npm install --include=dev - Run
npm run build - Set
NODE_ENV=production - Set
DATABASE_FILEto a persistent disk path - Set
PUBLIC_APP_URLto your live canonical URL - Configure SMTP delivery for verification and password reset emails
- Run
npm start
For Render-style deployments with SQLite persistence, use a mounted disk path such as /var/data/guild-bank.db.
Recommended Render health check path:
/healthz
PORT: API and production web server port. Default:3001DATABASE_FILE: SQLite database path. Use a persistent disk path in production.PUBLIC_APP_URL: canonical public site URL. Default:https://www.esoguildgoldledger.comSMTP_HOST: SMTP host used for verification and password reset emailsSMTP_PORT: SMTP port. Default:587SMTP_SECURE: set totruefor implicit TLS SMTP transports such as port465SMTP_USER: SMTP usernameSMTP_PASS: SMTP passwordSMTP_FROM_EMAIL: sender email address shown on verification and reset messagesSMTP_FROM_NAME: optional sender name. Default:ESO Guild Gold LedgerEMAIL_VERIFICATION_TOKEN_TTL_HOURS: verification link lifetime in hours. Default:24PASSWORD_RESET_TOKEN_TTL_MINUTES: password reset link lifetime in minutes. Default:60SESSION_COOKIE_NAME: optional session cookie name overrideSESSION_TTL_DAYS: session lifetime in days. Default:14
For local testing without a real SMTP provider, you can set MAIL_CAPTURE_DIRECTORY to write outgoing email payloads to disk instead of sending them.
- Confirm the Render health check path is set to
/healthz - Set
PUBLIC_APP_URLtohttps://www.esoguildgoldledger.com - Configure SMTP environment variables before opening public signups
- Submit
https://www.esoguildgoldledger.com/andhttps://www.esoguildgoldledger.com/sitemap.xmlin Google Search Console - Smoke-test sign up, email verification, password reset, guild creation, and shared-guild invite flows on the live domain
npm test
npm run build