Conductor is a lightweight platform helping instructors, TAs, and students manage course activities including attendance, scheduling, and group tracking. I was team lead for this project, managing a team of 12 split across frontend, backend, database, and testing teams. The application is deployed live on AWS EC2 and built with Node.js, Express, and PostgreSQL on the backend, with a vanilla HTML, CSS, and JavaScript frontend.
Team Leadership
Managing a team of 12 across four workstreams required consistent structure to keep everyone unblocked and aligned. I ran daily standups to surface blockers early and keep momentum across teams that depended on each other’s work. Weekly meetings were used for broader progress updates, design reviews, and reprioritization when scope or requirements shifted. All work was tracked through GitHub Issues, with tasks broken into scoped tickets assigned to individual contributors so progress was visible and nothing fell through the gaps. Code reviews were a required step before any merge, which kept quality consistent and gave junior contributors regular feedback on their work.
Backend: Authentication, Authorization, and APIs
I implemented backend authentication and authorization services using Node.js, Express, and PostgreSQL. The system supports session management and role-based access control with a least-privileged precedence model: for lower-privilege roles, permissions stack additively across multiple assignments, while higher-privilege roles enforce a single-role limit to prevent escalation. A centralized permissions file serves as a single source of truth shared across both backend middleware and frontend route guards.
I designed REST APIs and data models for attendance tracking, group management, journal entries, and audit logs, built to handle 500 to 1,000 concurrent sessions and 10,000+ records. Swagger documentation is auto-generated and accessible once the application is running.
CI Pipeline
I built CI pipelines using Playwright for end-to-end testing, ESLint and Stylelint for code quality, and Pa11y-CI for accessibility compliance, running on every pull request to catch regressions early and preserve cross-browser correctness.
Deployment and Auto-Updates
The project ships with a self-updating deployment script that installs a cron job checking for upstream changes every 2 minutes. When a change is detected it pulls the latest code and rebuilds the containers automatically, so the live site stays current without manual deploys. The full stack runs via Docker Compose, with production overrides applied for restart policies so the application recovers automatically after reboots or crashes.
Observability Stack
The application is instrumented with the OpenTelemetry SDK to generate traces and metrics for HTTP requests and database operations. Grafana, Prometheus, and Tempo run as sidecar services, with a pre-provisioned dashboard for viewing traces immediately after deployment. All telemetry data is persisted using Docker volumes.
