All Projects
Confidential context: Academic operationsWorkflow systemIn progressConfidential-safe

SVCI Online Document

Manual document requests became a role-based workflow for students, admins, departments, payments, clearance, and release.

SVCI Online Document cover screenshot

How the project is put together

Architecture map

6 layers / 5 directed links

100%

submitsdispatchesstoresguarded byverified with
  1. 01
    Interface

    Student, admin, department, and super-admin pages for request and release workflows.

    Vue 3 / Inertia / Tailwind CSS / Headless UI
  2. 02
    Application

    Request lifecycle, payment verification, clearance signing, release, notifications, and reports.

    Laravel routes / Controllers / Services / Events
  3. 03
    Services/API

    Realtime notifications, generated PDFs, receipt/signature assets, and workflow actions.

    Laravel 13 / Reverb / DomPDF / Intervention Image
  4. 04
    Data

    Requests, requirements, payments, releases, audits, files, and role-specific records.

    MySQL 8 / Eloquent / Private storage / Queues
  5. 05
    Auth/Permissions

    Role dashboards, authorized file controllers, route protection, and private realtime events.

    Breeze / Sanctum / Policies / Private channels
  6. 06
    Runtime

    Local app/MySQL/Reverb/MailHog runtime with PHP and browser regression coverage.

    Docker Compose / Vite / MailHog / Pest / Playwright

From broken workflow to operating system

Requests, payment proof, clearances, and release tracking moved through disconnected manual handoffs.

A Laravel/Inertia system tracks request state, verifies payments, handles clearance, protects files, and notifies users.

The workflow constraint

Document requests moved through manual forms, payment checks, department clearances, and release handoffs. The workflow needed one role-aware system with traceable request states and secure file handling.

What changed

Student document request and payment tracking flow
Admin document, payment, notification, and profile screens
Department clearance and release workflow model
Security and browser regression test coverage

Decisions and trade-offs

Laravel/Inertia over a split SPA and API

The system needed rich Vue screens but also server-side routing, policies, forms, validation, and Laravel-first maintainability.

Decision: Used Inertia to keep Vue pages while letting Laravel own routes, authorization, validation, and workflow orchestration.

Trade-off: Less API reuse than a separate REST backend, but faster delivery and a simpler operational model for an internal school system.

Private file controllers over public storage links

Receipts, signatures, claim slips, and request documents can contain sensitive student or payment information.

Decision: Serve sensitive files through authorized Laravel controllers instead of exposing raw public storage paths.

Trade-off: More controller and policy code, but the access model is explicit and auditable.

Realtime notifications through Reverb

Admins and students need request/payment/clearance changes to appear without manual refresh.

Decision: Use Laravel Reverb with Echo and private channels for realtime notification delivery.

Trade-off: Adds another runtime process, but keeps realtime behavior inside the Laravel ecosystem.

Constraints, architecture, and proof

Vue 3 and Inertia render the application shell over Laravel routes, controllers, policies, services, events, notifications, queues, and private storage. MySQL runs through Docker Compose locally, while Reverb/Echo handles realtime notifications and DomPDF/Intervention support generated documents and uploaded assets.

Students, admins, departments, and super admins need separate role paths
Payment proof, signatures, QR codes, avatars, and PDFs must be stored behind authorized access
Request lifecycle needs auditable states across payment, clearance, release, and claiming
Realtime notifications should work through Laravel Reverb/Echo private channels
Testing must cover PHP behavior and browser-facing workflows

Deployment, security, and maintenance

Laravel policies and middleware protect role-specific routes, private files are served through authorized controllers, security headers and throttles are applied, and the repo includes Pest/PHPUnit plus Playwright browser coverage for critical workflows.

Honest edges and next improvements

Messaging scope is deferred.
Deployment and legacy migration work are outside the current MVP scope.

What I would improve next

Finish deployment and operations documentation
Complete deferred messaging scope
Prepare migration strategy for any legacy school records

Screenshots from the build