← Back to Project|Technical Documentation
Public · Read-only

6-week development log from February 2 to March 10, 2026

Development Changelog

This log covers the full 6-week internship period. Entries reflect daily development work, architectural pivots, and bug discoveries in the order they occurred.


Week 1 — Feb 2–6 · Initial Setup & Core Architecture

Feb 2 — Laravel project setup. Git initialized. Core packages installed: Livewire, Filament, Sanctum. Local dev environment verified with OrbStack.

Feb 3 — Initial database migrations for users and barangay tables. User model configured with fillable fields, casts, and soft deletes. Spatie Laravel Permission integrated with initial roles seeder.

Feb 4 — Bataeño Pass SSO implemented via OAuth 2.0 (BataenoAuthController). OAuth redirect URI moved to environment variable for deployment portability.

Feb 5 — Online and walk-in document request flows documented. Walk-in test coverage added. nullable requester_id introduced on document_transactions to correctly model official-initiated walk-in requests.

Feb 6 — Frontend migrated from Vue.js to Laravel Livewire. SSO flow verified regression-free after migration.


Week 2 — Feb 9–13 · Admin Panel, Document System, Real-Time

Feb 9 — Filament admin panel setup completed. Spatie permission integration into panel. User management (role assignment, barangay filtering) added.

Feb 10 — Document request form built in Livewire. Dynamic required field rendering driven by document_type_properties model and a shared Blade component.

Feb 11 — Full document request and signing lifecycle implemented. GovernanceService built for signing authority validation. DocumentController and DocumentRequestController with API routes. Feature tests with access control validations.

Feb 12 — Laravel Reverb configured for WebSocket broadcasting. Private channels for officials and residents. DocumentRequestCreated and DocumentIssued events implemented.

Feb 13 — Official Filament Panel introduced with resources and dashboard widgets. Barangay statistics dashboard added. PDF generation via Blade + Spatie Browsershot + Puppeteer. Barangay-level access control middleware configured.


Week 3 — Feb 16–20 · Profile, NFC, Household Architecture

Feb 16Bug fix: Former officials could still access the system after their term ended. Fixed by validating ended_at IS NULL on panel access. Bug fix: Misconfigured field prevented residency requests from proceeding. Dynamic barangay switching via household profiles implemented.

Feb 17 — Resident profile page overhauled: new profile photo engine, Outsider user type support, password management section, session security controls.

Feb 18 — NFC infrastructure built: UID Bridge formatting fixes, UID map support, real-time NFC reader status broadcast. NFC reader integrated into Walk-In Request workflow.

Feb 19IndigencySPSCertificate and SoloParentCertificate models and migrations created. Both registered in document_type_properties. Rendering verified through shared PDF template pipeline.

Feb 20 — Household data architecture introduced: House, Household, HouseholdMemberProfile models and migrations. ResidencyRequest model added as the pending application holding table.


Week 4 — Feb 23–27 · Household Dashboard, Residency Approval, Lineage, barangay_id Migration

Feb 23 — Resident-facing Livewire household dashboard built: view active residences, switch presence, register new residence, join existing. Household Head invitation workflow with debounced search and automatic address inheritance.

Feb 24 — Official-side residency approval workflow: auto-creation of house and household, head assignment, barangay_id sync. User-centric document storage path established.

Feb 25 — Full platform migration from barangay_code string identifiers to barangay_id integer foreign keys across User, House, Household, Family, and BarangayTerm. UserObserver implemented for automated nuclear family lifecycle management.

Feb 26 — Lineage visualization upgraded from DOM/leader-lines to SVG-based D3.js + Alpine.js component. Zoom, pan, curved links, gender-coded gradients, deceased strikethrough. LineageSeeder updated for the new schema.

Feb 27 — Bataan Portal API resident lookup migrated to POST /api/user (form-data). OAuth scopes updated. PhilID QR parsing with custom blood type decoding (e.g., [1,7]A+). 2-column manual lookup form redesigned. Double-Guard duplicate detection implemented.


Week 5 — Mar 2–6 · Inhabitants View, UI Overhaul, City Admin Panel

Mar 2 — Inhabitants Modal built for House resource (residents grouped by household, headcount badges, ownership tags). Household InfoList implemented. Bug fix: barangay_id scoping issue on House model causing cross-barangay data leaks.

Mar 3 — Landing page overhauled: WebGL animated gradient via Grainient.js, DotGrid with alpha transitions and hover radius scaling. Touch device detection for mobile. Bug fix: Ghost cursor initialized at off-screen (-1000, -1000) to prevent flicker on load. Copy updated to "Province-Wide, Digital First."

Mar 4BataenoAuthController updated for view-user and find-users OAuth scopes. Walk-in NFC flow simplified to local DB lookups only (external API removed). Resident registration wizard refined with nested form submission fix.

Mar 5 — City Admin Filament Panel introduced at /city-admin with municipality tenancy. canAccessPanel, getTenants, canAccessTenant, getActiveMunicipality, getActiveMunicipalityCode extended on User model. Read-only resources for Barangays, Officials, Residents, Families, Houses, Households.

Mar 6 — Reusable BarangayFilter class introduced for panel-aware barangay scoping. HouseholdResource infolist restructured to two-column desktop layout. Bug fix: Mobile RepeatableEntry member grid stacking fixed by forcing Grid::make(2) at all breakpoints. Eager loading and Cache::remember applied for N+1 elimination. Document processing moved to queue jobs.


Week 6 — Mar 9–10 · Performance, Queue Jobs, Final Testing

Mar 9 — Laravel Telescope integrated for request profiling. Queue jobs ProcessDocumentRequest and ProcessDocumentApproval finalized with database driver. Bug fix: Super Admin tenancy bypass missing from canAccessTenant(), blocking cross-panel access. Bug fix: DocumentIssued Reverb broadcast consolidated into Filament notification system to remove redundant event. Performance improvements:

  • Request-level caching on getActiveBarangayIds
  • Cache::remember on getTenants for Super Admin
  • DB indexes on deleted_at and composite FK columns
  • Channel authorization caching with 15-minute TTL

Mar 10 — End-to-end verification of document queue job pipeline. Final testing of City Admin resources, barangay filter scoping, inhabitants modal panel-awareness. Change log and daily accomplishment reports finalized.


Bug Index

DateBugFix
Feb 16Former officials retained system access after term endedValidate ended_at IS NULL on panel access
Feb 16Misconfigured field blocked residency requestsField corrected
Feb 18UID Bridge formatting mismatch on NFC tapUID map lookup corrected
Mar 2House model scoping leaked cross-barangay databarangay_id relationship corrected
Mar 3Ghost cursor flickered on page loadCursor initialized off-screen
Mar 4OAuth 403 on Bataan Portal APIMigrated to POST form-data, updated scopes
Mar 5Notification link pointed to non-existent Filament routeRoute corrected to Livewire path
Mar 6Mobile member grid stacked verticallyGrid::make(2) forced at all breakpoints
Mar 9Super Admin blocked from City Admin panelGate::before bypass added to canAccessTenant
Mar 9Term status badge crashed on Carbon::parse("Ongoing")Default value corrected
Mar 9SelectFilter error combining ->relationship() with ->options()Filter logic separated