Web-based research congress presentation for Faculytics 2.0 — a data-mining approach for feedback analysis, generating actionable insights and recommendations.
Replaces the static PDF deck with a GSAP-animated, keyboard-driven podium presentation. The UI tour slides embed live SingleFile snapshots of the actual product in iframes so the audience sees real rendered HTML with real text — not pixelated screenshots.
bun install
bun dev # http://localhost:5173Then press F for fullscreen and → to advance.
| Key | Action |
|---|---|
→ / Space |
Next build / next slide |
← |
Previous |
Home / End |
First / last slide |
F |
Fullscreen |
Z |
Zoom UI screenshot (UI tour slides) |
Esc |
Exit zoom |
. |
Blackout |
O |
Overview grid |
? |
Show shortcuts overlay |
URLs are deep-linkable: #/pipeline, #/sentiment-results/1 (slide id + optional build step).
33 slides total, in this order:
- 02 Title — Faculytics 2.0 hero with team
- 03 Rationale — six motivation cards
- 04 Research Objectives — checkmark list with morphing blob
- 05 Research Design — quantitative approach + four-phase framework
- 06 AI Processing Pipeline ★ — five-stage flow with traveling-dot connectors
- 07 Sentiment Classification Model — Gemma 4 26B-A4B + LoRA
- 08 Topic Modeling Architecture — BERTopic + LaBSE + UMAP + HDBSCAN
- 09 Topic Modeling Results — metrics table
- 10 Sentiment Results ★ — 96.86 % hero number + per-class / per-language tables
- 11–29 UI Tour — Student → Faculty → Dean → Superadmin (each role gets a section divider + 2-9 product views)
- 30 Conclusions & Recommendations ★ — split-panel finale
★ = cinematic standout slides.
Native slides live as individual TSX files under src/slides/. Each default-exports a SlideDef:
export const slide03Rationale: SlideDef = {
id: "rationale", // URL-safe; used for hash routing
title: "Rationale", // shown in the overview grid
builds: 0, // number of click-to-reveal build steps
Component: RationaleSlide,
};Add the export to the slides array in src/slides/index.ts to register it. Order in the array is presentation order.
makeUiSlide({
id: "ui-faculty-overview",
page: 13, // PNG fallback page number
role: "Faculty",
caption: "Analytics overview",
urlBar: "app.faculytics.ctr3.org/faculty/analytics",
htmlPath: "/slides/html/faculty-analytics.html", // optional — iframe-embed a SingleFile save
htmlScrollToText: "Concrete next steps", // optional — scroll iframe to a heading
htmlScrollOffset: -32, // optional — extra px of breathing room
// pdfPath: "/slides/pdf/foo.pdf", // alternatively, embed a PDF
})The same makeUiSlide() factory transparently picks the right inner component:
pdfPathset → live PDF iframe (PdfFrame)htmlPathset → SingleFile HTML iframe (HtmlSnapshot) with PNG fallback- neither set → static PNG (
ScreenshotFrame)
- Install the SingleFile browser extension (Chrome / Firefox / Edge / Brave).
- Log into Faculytics and navigate to the page you want. Set up DOM state (open modals, switch tabs, etc.) before clicking save — SingleFile captures the current DOM.
- Click the SingleFile extension icon. It saves a single self-contained
.htmlfile with everything (CSS, JS, fonts, images) inlined as base64. - Drop the file in
public/slides/html/<descriptive-name>.html. - Wire the slide in
src/slides/ui-tour.tsxviamakeUiSlide({ ..., htmlPath: "/slides/html/<name>.html" }).
For scroll-variant slides on the same page (e.g., overview / themes / scores tab views all on /faculty/analytics), use one save and pass different htmlScrollToText values per slide.
bun run build # tsc -b && vite build → ./dist
bun run preview # local preview of dist/The dist/ output is a fully static SPA — works on any static host (Vercel, Netlify, Cloudflare Pages, GitHub Pages, plain S3+CDN). All UI tour assets (HTML, PDFs, PNGs) are bundled into dist/slides/ and served as-is.
- Vite 8 + React 19 + TypeScript (strict)
- Tailwind CSS 4 via
@tailwindcss/vite - GSAP 3.15 with Flip, MotionPath, SplitText, Observer, CustomEase
- Zustand for deck state
- Bun as package manager
Norhanah Umpar · Ethan Patrick Bandebas · Leander Lorenz Lubguban · Harvie Purgatorio
College of Computer Studies, University of Cebu — Main.