A FortuneSheet-based price spreadsheet. Visitors can view; admins can edit after login. Data and multi-admin accounts are stored in SQLite (data/app.db).
- Full Excel-like spreadsheet (FortuneSheet): multiple sheets, merge cells, zoom, styling
- Public read-only view; logged-in admins can edit and save manually
- Multi-admin management (create / change password / delete)
- Optional WhatsApp / WeChat contact QR buttons
- Admin-only Import Excel (.xlsx) appends new sheets (does not replace existing); click Save to publish
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3000.
On first run the database is created and seeded with:
| Field | Value |
|---|---|
| Username | admin |
| Password | admin123 |
Change this password immediately via Admin → Change password.
| Variable | Description |
|---|---|
SESSION_SECRET |
Cookie encryption key (32+ characters), not the login password |
NEXT_PUBLIC_SITE_NAME |
Header brand name |
NEXT_PUBLIC_SITE_TAGLINE |
Header subtitle |
SQLite file lives at data/app.db (created automatically). Keep this directory backed up; it holds users, spreadsheet JSON, and contact settings. The data/ folder is gitignored.
npm run dev # development
npm run build # production build
npm run start # run production serverRelease packages are built only by GitHub Actions.
Workflow: .github/workflows/release-linux-x64.yml
| Trigger | Result |
|---|---|
Push / PR to main |
Build + upload artifact |
Tag v* (e.g. v0.1.0) |
Build + GitHub Release with .tar.gz |
| Manual Run workflow | Same as push |
Download: Actions → Artifacts → pricesheet-linux-x86_64, or Releases after tagging.
Automatic HTTPS via Caddy (Let's Encrypt). Default domain: example.com.
See deploy/README.md.
tar -xzf pricesheet-*-linux-x86_64.tar.gz
cd pricesheet-*-linux-x86_64
# 1. Edit DOMAIN=... inside one-click.sh
# 2. Install
sudo ./one-click.sh
# → https://your-domainDNS: A records for your domain + www → server IP; open ports 80/443.
- Domain HTTPS:
https://your.domain - IP HTTP:
http://SERVER_IP/(plaintext, no certificate)
| Path | Access |
|---|---|
/ |
Public spreadsheet (edit if logged in) |
/login |
Admin login |
/admin |
Manage admins & contact settings |
- Sample sheet content is placeholder demo data, not real commercial prices.