← Work

Jan 2024 – Apr 2026 · 2.5 years

TPCA Education Platform

Built four major backend systems for a Taiwanese non-profit — payroll automation, school blacklist, program matchmaking, and donation pipeline.

255
commits
4
major features
2.5 yr
ongoing development
LaravelPHPMySQLBladeExcel ExportPDF GenerationEmail Automation

Overview

A Laravel platform for Taiwan PCB Foundation connecting industry lecturers with schools. I built four systems that replaced manual spreadsheet workflows with automated, auditable features.

What I Built

Lecturer Payroll Module

Automated fee calculation and distribution for lecturers.

  • Database design: payrollsregistrations relationship with Eloquent
  • Multi-factor calculation: hourly rate + transport subsidy + bonuses
  • City-based lookup table for transportation subsidies
  • PDF/Excel export with Laravel Excel
  • Automated email with Mailable + PDF attachment
  • Frontend self-service for lecturers to update payment info

School Blacklist System

Track and penalize schools that cancel or no-show.

  • Refactored from school-level flag → dedicated bans table
  • Granular control: ban by school, registration, or individual teacher
  • Custom status: CANCELED_BY_BANNED
  • Automated notifications to affected teachers and lecturers

GoGoGreen Program

Full lifecycle management for environmental education program.

  • Multi-stage workflow: proposal → review → scoring → matchmaking
  • State machine for registration status transitions
  • Region-based filtering with geographic constraints
  • Waitlist logic with automatic notifications
  • Excel export for admin reporting

Donation Pipeline

End-to-end donation management with multi-step receipt signing.

  • Sequential signing workflow with signing_order column
  • Parallel notification for same-level signers
  • Receipt void/rejection flows with state management
  • Auto-generated thank-you emails post-signing
  • Donor portal for donation history

Architecture Decisions

Per-registration bans, not per-school School-level was too coarse. Refactored to dedicated bans table with foreign keys to both schools and registrations for granular penalties.

City-based transportation lookup Built lookup table mapping departure cities to subsidy amounts. Staff can update rates without code changes.

Sequential + parallel signing Different roles sign in order, but same-level signers get notified simultaneously. Implemented with signing_order column and grouped notification logic.

Other Contributions

Registration UX improvements, high school course registration, member account management, survey system fixes, certificate templates, sponsor listing page, grade-binding optimizations, and various production hotfixes.