Volunteer Management Platform
Santiago Segovia
June 2025 - August 2025
Technologies — PHP · JavaScript · HTML · CSS · SQL
View source on GitHubAbstract
Contributed to a full-stack volunteer management platform integrating role-based workflows, event coordination, profile-informed matching, assignment tracking, and reporting, with PHPUnit tests for profile validation.
Project Overview
This team project addresses the coordination problem faced by nonprofit organizations managing volunteers across multiple events. Volunteer information, event requirements, assignments, and participation records are closely related, yet become difficult to maintain when handled separately. The platform brings these records into a shared application so that coordinators can use a consistent source of information when organizing participation.
The application supports distinct volunteer and administrator workflows. Volunteer profiles describe skills, preferences, and availability, while administrative tools support event planning and assignment management. Its central objective is to connect participant information with organizational needs and maintain a traceable relationship between an account, an assignment, and the activity associated with it.
Features and Workflows
The platform includes event creation, volunteer matching, assignment creation, comments, an event timeline, performance views, and administrative role management. These capabilities form a connected workflow: events define the opportunities being coordinated, profiles supply information relevant to participation, and assignments record the association between volunteers and events. Matching considers profile information such as skills, preferences, and availability to support coordinator decisions.
The event timeline provides a chronological view of activities, while performance views and participation history support reviewing recorded involvement. Comments add contextual information to coordination, and role management determines which users can perform administrative functions. The relationship among these features matters because the usefulness of a later view depends on the completeness and consistency of the records created earlier.
Technical Implementation
The application uses PHP for backend request handling and business logic, SQL for persistent storage, and HTML, CSS, and JavaScript for the user interface. This division connects browser interactions to server-side processing and stored application records. A submitted form becomes useful organizational data only after the backend interprets its fields and applies the relevant validation and permission rules.
The data model includes user credentials, user profiles, event details, event assignments, and volunteer history. Credentials represent account access, profiles represent participant information, and event records describe organizational activities. Assignments connect users with events, while history records preserve participation information for later review. Keeping these responsibilities distinct helps clarify where each type of information belongs and how related workflows depend on it.
Validation and Access Control
Role-based access control separates volunteer capabilities from administrative actions, including event management and role changes. This distinction is important because authenticated users may have different levels of authority: knowing which account is signed in does not, by itself, determine which operations that account should be permitted to perform.
Profile validation was tested with PHPUnit, and Xdebug was used to generate coverage reports. The tests examine the behavior of the validation logic, while coverage indicates which portions of the code were exercised. These provide complementary evidence: assertions evaluate expected behavior, and coverage helps reveal unexamined paths. Coverage alone does not establish correctness, and validation tests do not establish the security or correctness of every application workflow.
Challenges and Lessons
A key engineering challenge was maintaining consistency across information used by multiple features. Profile changes can affect matching decisions, event changes can affect assignments, and assignment records can influence later participation views. Treating each page as an isolated feature would obscure these dependencies; the shared data model is what connects the application into a coherent system.
The project provided experience coordinating database design, backend validation, permissions, and interface behavior within a team. It highlighted the value of clearly defined record relationships and shared expectations about inputs and outputs. The resulting platform demonstrates an integrated administrative workflow, while claims about organizational efficiency or usability would require evidence from deployment and user evaluation.