Week 3Mar 2, 2026 - Mar 7, 2026Rendered: 6 days / 48hPosted: 2026-03-06

In Production and Still Shipping: Certificates, Reports, and Real-World Fixes

DateHours
Mar 28h
Mar 38h
Mar 48h
Mar 58h
Mar 68h
Mar 78h
Total48h

~/core_tasks

Week three had a different feel. CAFÉ was already live in production, so everything this week had real consequences — features hitting actual users, bugs needing immediate fixes, and requests coming in from the division themselves. It kept things exciting.

What I Did This Week

Monday (March 2) was a split day — in the morning I stepped away from the keyboard to assist with a printer installation for the office. Once that was sorted, I got back to building and shipped auto-generation of personalized certificates on form submission. Now when a respondent completes a form with a certificate template attached, a certificate is automatically generated and stored for them. I also added certificate download buttons to the file gate success screen and the My Responses page so respondents can grab their certificates right after submitting.

Tuesday (March 3) was all about report generation. I built the CSM (Customer Satisfaction Measurement) report module — a dedicated report type for CHED's satisfaction surveys. This involved adding a type column to forms to tag CSM forms, creating report templates, and implementing the logic to generate formatted Excel summary and dimension analysis reports from CSM form responses. I also seeded the database with a sample CSM form and response data for testing.

Wednesday (March 4) was a big infrastructure and polish day. With the app now running in production, file storage had to be moved to AWS S3 — so I refactored all certificate and file download paths to use S3 instead of the local disk. I also added two new condition operators — is_answered and is_not_answered — so form builders can now show or hide questions based purely on whether a previous field has any response. On top of that, I fixed bugs in the question card logic, improved file upload handling, and updated the FOI feedback form seeder to properly wire rating-based conditions.

Thursday,Friday, Satruday (March 5-7) I built a seeder for the existing live CSM form — importing real 2026 response data into the system so the report generation module could be validated against actual data from the field.

~/tools_used

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

~/challenges_solutions

The trickiest part of auto-certificate generation was making it happen seamlessly on submission without slowing down the user's response — the GD image rendering and file storage had to happen cleanly inside the transaction without breaking the existing submission flow.

Switching to S3 mid-production was a careful operation. Files were already being written to local disk in the live environment, so the refactor had to make sure new uploads and certificate writes all pointed to S3 while not breaking existing references. The storage disk configuration was updated across all relevant services and controllers.

~/ OJT_Journal v1.0.0

Built with Next.js & Supabase