
A digital yearbook for alumni discovery, batch pages, approved memories, and school-led moderation.
A digital yearbook for alumni discovery, batch pages, approved memories, and school-led moderation. The local demo uses fictional people and stories. Stock portraits are illustrative and do not depict the named alumni.
public/.The Figma Make connector returned a source manifest naming Layout, AlumniProfileView, YearbookView, MemoriesView, and HonorsView. Its actual source resources and screenshot could not be opened in this session, and the public page reader could not access the Make URL. The application follows the recognizable gallery/profile/yearbook/memories page structure, but the visual design is an original interpretation of the brief. No exact wireframe colors, spacing, assets, or flows are claimed.
Cache-Control: private, no-store.wrangler.jsonc deploys the clearly labeled fictional demo without external bindings. Copy wrangler.production.example.jsonc to a private production config and replace its resource values before deploying real alumni data.APP_ORIGIN./api/* executes the Worker first, and direct page URLs fall back to the app shell.Requirements: Node.js 20.19+ (24 tested) and npm. PostgreSQL, R2, Cloudflare credentials, and email are not needed for this demo.
cd "C:\Personal Project\Alumni's Gallery"
npm install
npm run dev
Open http://127.0.0.1:5173. Vite proxies /api to the Hono demo server on 127.0.0.1:8788. Demo data resets when the API process restarts.
| Role | Password | |
|---|---|---|
| Alumnus | [email protected] |
AlumniDemo2026! |
| Moderator | [email protected] |
ModeratorDemo2026! |
| Administrator | [email protected] |
AdminDemo2026! |
You can also register a new fictional alumnus and complete the review journey. Register with a listed batch and program, provide sample school evidence, upload a portrait, then submit a profile and memory. The school administrator must approve verification first; a moderator can then approve uploaded photos and the profile or memory. A rejection note appears in the owner's account. Never use real personal records in the demo.
npm run typecheck
npm test
npm run build
npm run test:browser # keep npm run dev running in another terminal
The browser check uses the installed Chrome executable at C:\Program Files\Google\Chrome\Application\chrome.exe. Change that path in scripts/browser-check.mjs if Chrome is elsewhere.
alumni_gallery with a dedicated application user. Give the app user access to the created tables. Set DATABASE_URL in your shell or a local, uncommitted environment file, then run npm run db:migrate. The migration is migrations/001_initial.sql. The demo seed is never applied to production.ADMIN_EMAIL and a long random ADMIN_PASSWORD along with DATABASE_URL, then run npm run db:create-admin. Remove the password from your shell history and environment afterward. Sign in and create your school's programs and batches before alumni registration.wrangler.production.example.jsonc to a private file such as wrangler.production.jsonc, replace REPLACE_WITH_REAL_HYPERDRIVE_UUID with the real UUID, then deploy with npx wrangler deploy --config wrangler.production.jsonc. The Worker uses its HYPERDRIVE.connectionString. For wrangler dev against a local database, set CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_HYPERDRIVE to a local PostgreSQL URL.alumni-gallery-photos, or change bucket_name in the private production config. The Worker needs its PHOTOS binding. Uploaded objects use generated keys under the user's ID and are never exposed through a public bucket URL.APP_ORIGIN in the private production config to the exact HTTPS origin that serves the Worker. Replace the generic Alumni Gallery name, monogram, content, colors, and sample imagery with approved school material before a real school launch.npm run build, then npx wrangler deploy to publish the fictional demo. For the production database-backed app, run npx wrangler deploy --config wrangler.production.jsonc after authenticating Wrangler and setting real binding values. The deploy npm script builds and publishes the demo configuration.Cloudflare's Hyperdrive PostgreSQL guide, R2 Worker binding guide, and Worker static assets guide describe resource creation and routing.
After deployment:
/, /alumni, /years/<year>, and a profile URL directly, then refresh each./api/health and /api/bootstrap; confirm the API reports production mode and batches/programs from PostgreSQL.Email delivery, email ownership verification, password reset, and provider-side anti-abuse limits still need configuration and verification. No production database, R2 bucket, Hyperdrive ID, Cloudflare account/domain, or verified school branding was available in the workspace, so live deployment and PostgreSQL/R2 integration tests were not run.
No updates yet.
Building a dev tool or hiring developers? Get seen here. Become our Sponsor
Building a dev tool or hiring developers? Get seen here. Become our Sponsor