feat: add static score lookup site with Node.js DB builder

- Node script parses 119 Excel files into SQLite (847K students)
- Vite + React frontend with sql.js for client-side querying
- Search by exam ID (số báo danh) or student name
- Gzipped DB (36MB) with download progress bar
- GitHub Actions workflow for GitHub Pages deployment
This commit is contained in:
tiennm99 committed 2026-04-12 23:54:06 +07:00
1 parent cee9df9f1a
commit 2bed92547b
17 files changed
+4098

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: |
package-lock.json
web/package-lock.json
- name: Install root dependencies
run: npm ci
- name: Build database
run: npm run build:db
- name: Compress database
run: gzip -k -9 web/public/thptqg2017.db
- name: Install web dependencies
run: cd web && npm ci
- name: Build site
run: cd web && npx vite build
- name: Remove uncompressed db from dist
run: rm -f web/dist/thptqg2017.db
- uses: actions/upload-pages-artifact@v3
with:
path: web/dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4