Civil service HR · Government
SIPSID-KGB salary increment letters
An app for drafting and archiving periodic salary increment (KGB) letters for civil servants, moved off Google Apps Script onto Cloudflare Pages Functions and D1.
Sheets → D1
backend migrated off Google Apps Script
5
D1 tables: users, sessions, throttle, letters, salary grades
Built withCloudflare Pages Functions, D1, JavaScript, Node test runner
The problem
The letters and salary tables lived in Google Sheets behind Apps Script, which made the app slow, hard to test and difficult to secure.
What I built
A static frontend with a Pages Functions gateway handling routing, session cookies, origin checks and a 64 KiB payload limit, plus D1 for users, letters and salary grades. Migration scripts audited and moved the historical Sheets data, and a maintenance mode freezes writes during risky operations.
The result
Pushes to main deploy through Cloudflare Pages, with documented backup and restore via D1 export and Time Travel.
P.S.
If your team still runs on spreadsheets, let’s fix that.
Twenty minutes, no deck. Bring the workflow that slows you down and I’ll tell you what I’d build first, even if we never work together.