Week 1Feb 16 - Feb 21, 2026Rendered: Feb 20, Feb 21Posted: 2026-03-01

Brewing Something Big: My First Week Building CAFÉ for CHED RO V

Brewing Something Big: My First Week Building CAFÉ for CHED RO V - Proof 1
Brewing Something Big: My First Week Building CAFÉ for CHED RO V - Proof 2
Brewing Something Big: My First Week Building CAFÉ for CHED RO V - Proof 3

~/core_tasks

Started my OJT at CHED Regional Office V this week. After a short orientation, I was handed my first real assignment: build CAFÉ (Custom Adaptive Forms & Evaluations) — a centralized digital portal that lets CHED staff create forms, collect responses from HEIs, students, and stakeholders across Region V, and gate official downloadable files behind form completion.

What I Built This Week

By the end of the three days, I had laid down the entire foundation of the system — from user roles and a custom form builder, to public form pages, a file-gating mechanism, and response analytics.
I set up a multi-role user system (Administrator, CHED Staff, HEI, Stakeholder) where each role only sees what it's supposed to. From there, I built the custom form builder that lets CHED staff create dynamic, typed-question forms and target them to specific audiences. I also implemented the File Gate feature, which lets staff upload files that respondents can only download after completing a linked form.

On the respondent side, I created public-facing form pages, updated the landing page to surface available forms per audience, and built the My Responses page for HEI users to track their submissions. On the admin side, I built dashboard widgets for response stats and wired up the form summary view — with tabbed breakdowns showing aggregate answers per question and individual per-respondent responses.

~/tools_used

Laravel, Antigravity, VS Code, XAMPP, Git, GiHub

~/challenges_solutions

The biggest hurdle was jumping into a real production-grade system on Day 1 with no prior codebase familiarity. I dealt with it by reading the structure carefully before writing anything, then moving fast once I had a mental map.

Scoping data correctly per role (so each user only sees their own records) was also tricky early on — solved by consistently overriding query scopes per resource. There were also some edge cases in the summary view where free-text "Other" answers weren't being counted properly, which I caught and fixed before the week ended.

~/ OJT_Journal v1.0.0

Built with Next.js & Supabase