CSXLThe CSXL
software project

UNC–Chapel Hill · CSXL software · 2023–2026

The CSXLsoftware.

Student contributions
to software used
by their department.

COMP423
Foundations of
Software Engineering

The welcome page / July 2024News, hours, reservations, and events

The CSXL welcome page brings news, opening hours, reservations, and events into one view.

The July 2024 welcome page combines news, opening hours, reservations, and events.
Development screenshot with sample content, from Ajay Gandecha’s release PR.

Project history ↓

Overview

Course projects used
by the department.

The CSXL application handles coworking check-ins, room reservations, student organizations, events, and course office hours.

Much of this work began as team projects in COMP423: Foundations of Software Engineering. Students design and write software for themselves and their classmates. They work in an existing codebase, review each other’s changes, and test features that other people will use.

This page follows selected designs, contributors, and releases from the project’s start in 2023 through October 2026.

Workspace reservations.

See available desks, reserve a room, and check in with an XL ambassador.

Organizations and events.

Find student organizations, their events, and event registration.

Course office hours.

Find course office hours, describe a question, and follow a help ticket.

Teaching and hiring.

Apply for a teaching position, plan course staffing, and track hiring and onboarding.

01 / Spring 2023

Starting the project.

I started the application in March 2023 for a COMP590 pilot of Foundations of Software Engineering. The course later became COMP423.

The initial codebase provided accounts, permissions, database access, and a development environment. It uses Angular and TypeScript in the browser, Python and FastAPI on the server, and PostgreSQL for storage.

Drone footage inside the Co-Lab, fall 2023, showing shared monitors, adjustable workstations, round tables, and the communal counter. View the preview photograph (August 2023), or read the space’s design history ↗.

Working in an existing codebase.

Teams can build on the application’s accounts, permissions, and data models. They also have to read other people’s code and understand how their changes affect existing features.

For a room reservation, that means designing the interface, storing the booking, checking who can change it, and testing conflicting requests. A feature is complete when these parts work together.

March 11, 2023 / first commit ↗The shared development environment ↗

03 / Fall 2023

Organizations, events,
and coworking.

Organization pages let students find clubs and contact information. The events feature lets organizations list activities, with registration added in a later release.

Ajay Gandecha, Jade Keegan, Brianna Ta, and Audrey Toney developed the organization and event features as COMP423 final project group A3.

The early CS Organizations page uses searchable cards for UNC computer science student groups.
September 2023 / The organization directory, shown in the original release screenshot.

October 2023

Coworking drop-ins.

I added coworking drop-ins in October 2023 as the renovated Co-Lab came into use. Students could see available seats, request one, and check in with an ambassador.

The application tracks seated desks, standing desks, and communal seats separately, so students can check for the equipment or seating they need.

The coworking launch ↗

The October 2023 coworking interface lists available sitting desks, standing desks, and communal seats.
October 2023 build, recreated with demo availability. The outlined cards reflect the design consolidation in PR #128.

04 / March 2024

Room reservations.

Team B8 added room bookings to the application.

Team B8’s Fall 2023 COMP423 project became the room reservation feature, merged on March 8, 2024. Aarjav Jain, John Schachte, Nick Wherthey, and Yuvraj Jain built a way to choose a room and adjacent time slots, confirm the reservation, and see it again later.

The feature records which room is booked, for what time, and by whom.

The first room reservation release presents rooms as rows and half-hour time slots as colored columns.
March 8, 2024 / The first release’s room-and-time grid. Recreated from the merged build with demo availability; the grid scrolls horizontally.

Review and follow-up work.

Jade Keegan’s review of the reservation PR raised questions a student would encounter in use: how to find upcoming reservations, how the grid would work on a phone, and whether the next action should say “Select” or “Reserve.”

Ajay Gandecha updated the interface to match the site’s Material conventions. Later changes fixed reservation conflicts; Yuvraj Jain extended the tests, and the feature’s documentation was expanded.

Team B8’s work and review / PR #250 ↗Interface refinements / #332 ↗Tests and documentation / #434 ↗

01 / Interface

Room and time selection.

Show available rooms and time slots, and summarize the student’s selection.

02 / Workflow

Reservation states.

Represent a draft and a confirmed reservation as different states.

03 / Policy

Booking limits.

Apply time limits and protect periods needed for office hours.

04 / Persistence

Conflict checks.

Save the reservation and reject a conflicting booking on the backend.

A reservation requires changes across the client, API, and database. The team’s specification documents these parts; the conflict-checking fix addresses overlapping bookings on the backend.

COMP423 / Foundations of Software Engineering

How the course
uses the project.

Students prepare in a boot camp, then develop a feature in teams.

The first half of the course introduces the tools and architecture through readings, exercises, and pair work. In the second half, teams design, implement, test, and demonstrate a feature in an existing application.

The six topic areas below follow the Spring 2026 first-day objectives. The examples apply those goals to CSXL projects from earlier offerings.

01 / First half

Boot camp.

Students practice source control, reproducible environments, testing, HTTP APIs, services, and database access.

They read unfamiliar code, work in pairs, make small changes, and check the results. In the CSXL offerings, this includes connecting an Angular and TypeScript client to a Python backend.

Spring 2026 lessons ↗Spring 2025 frontend and backend units ↗

02 / Second half

Feature development.

  1. Design the feature. Identify users, write user stories and acceptance criteria, sketch interfaces, and agree on API and data structures.
  2. Implement a complete user story. Connect the interface, API, services, and stored data for one usable workflow.
  3. Review, test, and document. Check success and failure cases, review changes, deploy, demonstrate the result, and write documentation for future developers.

Six course topic areas

What students practice.

01 / Professional growth

Career and lifelong learning.

Ethics, professional roles, independent learning, evaluating tools, and taking responsibility for work produced with AI assistance.

Example: learn the code and tools needed for a feature, explain your decisions, and verify any generated code you keep.

02 / Working together

Collaboration.

Technical communication, pair programming, git branches and merges, issues, project boards, pull requests, and code review.

Example: agree on a booking API before dividing the work, then review the frontend and backend changes together.

03 / Understanding the need

Design process.

Personas, requirements, user stories and epics, acceptance criteria, Figma wireframes, prototypes, scope, and trade-offs.

Example: define what a student and an ambassador each need to see when a room is booked or checked in.

04 / Connecting the parts

System design.

Client/server communication, HTTP APIs, validation, dependency injection, services, relational data, ORM sessions and transactions, and cloud deployment.

Example: trace a booking from an Angular component through the API and service to its database records.

05 / Demonstrating quality

Software engineering skills.

Modularity, architectural decision records, unit and integration tests, acceptance and end-to-end tests, mocks, fixtures, static analysis, and continuous integration.

Example: test successful bookings, time limits, conflicting requests, and the complete reservation workflow.

06 / A professional workspace

Development tools.

Dev containers, Docker, dependency managers and lockfiles, test runners, linters, debugging tools, coding agents, and review of generated code.

Example: start the dev container, reproduce an error, run checks, and inspect the change before submitting it.

The Fall 2024 project brief proposed work on opening-hours editing, group reservations, usage statistics, and organization memberships. In Spring 2025, simulated service responses helped teams get a first story working before connecting persistence and integrations. The final sprint emphasized quality and documentation for future developers.

Course objectives ↗CSXL feature design assignment ↗

Spring 2026’s feature project uses LearnWithAI. The CSXL examples here describe work from earlier offerings.

05 / 2024–2025

Office hours
across several teams.

Students submit help tickets; course staff manage the queue.

Multiple student teams worked on early office-hours versions and later improvements. The implementation connects tickets to courses, staff, schedules, and rooms.

The selected releases below cover the May 2024 implementation, integration with My Courses, recurring schedules, and statistics.

The May 2024 Office Hours home page lists a student’s courses and an office hours event in SN156.
May 2024 / Office-hours course list.Original screenshot from the team’s feature specification.
The later office hours queue gives course staff a wider view of queued and called tickets with event information.
August 2024 / Staff queue redesign.Ajay Gandecha’s later redesign, preserved in PR #608.

Spring 2024

Tickets and staff queues.

The May 2024 release added course office hours, student tickets, and staff queues. Students could describe their question, and staff could call a ticket to help the student.

May 15, 2024 release / #443 ↗

January–
February 2025

Recurring schedules.

Staff could create a weekly series by choosing weekdays and an end date. The recurrence work also added deletion of a series and editing of either one event or that event and future occurrences.

Recurring dates / #652 ↗ · Update a recurring pattern / #683 ↗

Spring–
Summer 2025

Statistics, rosters,
and notifications.

Ajay Gandecha, Jade Keegan, Mira Mohan, and Lauren Ferlito contributed ticket statistics, CSV exports, and roster links to student statistics. Benjamin Eldridge added notification sounds and title changes to alert students and staff.

Ajay and Jade also added configurable ticket cooldowns and daily limits. These controls give instructors a way to manage repeated requests for help.

Statistics / #739 ↗ · Roster tools / #748 ↗ · Notifications / #699 ↗ · Ticket limits / #649 ↗

Recurring-date editor / October 2026

Creating a weekly series.

A staff member can choose Monday and Wednesday, a time range, and an end date to create a term’s office-hours meetings.

The implementation has to distinguish changes to one meeting from changes to the remaining series. Those are separate cases to represent in the interface and test in the backend.

The office hours editor selects a weekly pattern on Monday and Wednesday, with an end date for the series.
The recurring-date controls in the October 2026 build, shown with an illustrative schedule. Recurrence first reached main in January 2025.

Office hours gives later teams experience with maintenance: reading an existing implementation, preserving behavior that courses depend on, and adding features across the interface and backend.

06 / Other department features

Courses, applications,
and signage.

Shared accounts, courses, rooms, and permissions also support teaching applications and lounge displays.

These features reuse the application’s data and authentication while adding interfaces for students, course staff, and department administrators.

December 2023 → July 2024

Courses and My Courses.

The academics feature introduced courses, section offerings, terms, and rooms. My Courses lists a student’s courses and provides access to each course’s office hours.

Ajay Gandecha developed academics and My Courses, which provided the course records used by later office-hours features.

Academics / #222 ↗My Courses / #499 ↗

My Courses organizes course cards by term and gives each course a Get Help action.
My Courses in the October 2026 build, recreated with sample courses.

April → July 2024

UTA and GTA applications.

Ben Goulet added undergraduate teaching assistant applications in April 2024. The form collected student information and course preferences for the department’s hiring process.

In July, Ajay Gandecha reimplemented the forms and added graduate TA applications. The applications became the starting point for the department’s internal hiring and budget workflow.

UTA applications / #402 ↗UTA and GTA forms / #529 ↗

The early UTA application form asks for student information and teaching preferences.
The early application form, preserved in Ben Goulet’s April 2024 specification.

March 2025

Lounge display.

Andrew Lockard, Will Zahrt, and Audrey Toney built digital signage for the XL lounge. The display brings together seat and room availability, news, events, and office hours queues.

Students in the lounge can check this information on the shared display without opening the relevant pages individually.

Lounge signage / #697 ↗

The lounge signage combines occupancy, room availability, news, events, a leaderboard, and office hours.
March 2025 / Lounge signage. Development screenshot with sample content.

07 / Summer 2024

TA hiring and
instructional budgets.

The department uses this workflow every semester to manage instructional budgets over $500,000.

During summer 2024, Ajay Gandecha and I extended the application from collecting TA applications to reviewing candidates, planning course staffing, and tracking the steps needed to process hires.

Students apply through the same platform that instructors and department staff use to organize the hiring work.

Hiring Administration compares four sample courses by enrollment, number of hires, staffing cost, and coverage, with access to HR Onboarding.
Course staffing and cost in the October 2026 interface. All people and figures in these captures are illustrative. Open a course’s assignment detail ↗

Planning staffing
and processing hires.

Administrators can compare enrollment, planned staffing costs, and a coverage estimate across courses. Configurable hiring levels associate compensation and teaching load with each assignment. This gives the department a way to consider staffing needs and cost together.

Assignments move through Draft, Commit, and Final stages. A separate onboarding view lets staff track I-9 completion, position numbers, electronic personnel action references, and notes. CSV exports support the handoff to the people processing the hires.

Sample applicants are grouped as Not Preferred, Not Processed, and Preferred, with UTA or GTA labels and each applicant’s course priority.
Instructor review.Instructors rank applicants while seeing the applicants’ course preferences. Related conflict checks show assignments and preferences across courses.
The sample onboarding table lists hires and courses alongside compensation, I-9 checkboxes, position numbers, personnel action references, and notes.
HR onboarding.Staff can find assignments by term and search, record processing details, and export the hiring summary.

July 2024

Applications and review.

I added instructor application review to My Courses on July 16. Ajay added visible course preferences that day and extended the application forms to graduate TAs on July 20.

Review / #517 ↗Preferences / #520 ↗Forms / #529 ↗

August 2024

Hiring administration.

Ajay built the hiring assignment and hiring level records, administration interface, and hiring summary. The combined release reached main on August 2. Our follow-up work improved HR onboarding, corrected coverage calculations, added conflict information, and gave instructors a summary of their assigned hires.

Administration / #550 ↗Hiring summary / #569 ↗HR view / #580 ↗Coverage / #584 ↗Conflicts / #588 ↗Instructor summary / #587 ↗

08 / Design and maintenance

Maintaining
the application.

Contributors also updated the interface, upgraded dependencies, and documented the code. These changes help new teams understand the application and keep its features consistent.

A shared Figma canvas collects connected designs for organizations, courses, office hours, coworking, and welcome pages.
The shared Figma file collects designs for the application’s features. The date and individual authorship of this copy are not established. Original Figma file ↗

Interface and styling updates.

Ajay Gandecha upgraded the site to Material 3 in June 2024. Later changes updated individual features to use the same interface conventions.

His July 2024 welcome page combined news, opening hours, reservations, and event registrations on one page.

Maintenance also included Angular upgrades. Ajay’s January 2026 refactor introduced Tailwind and restyled most components.

Material 3 / June 2024 / #493 ↗Welcome and news / July 2024 / #539 ↗Styling refactor / January 2026 / #826 ↗

Documentation.

Feature specifications describe behavior and implementation decisions. Ajay Gandecha’s tutorials and architecture diagram explain how the application’s layers connect.

Code review.

Branches and pull requests let contributors discuss behavior, tests, and integration before merging a change.

Maintenance.

Bug fixes, clearer errors, tests, and component refactors are also project work. Students practice improving code they did not originally write.

Branching and review practices ↗Learning through the application ↗Contributing guide ↗

Using and contributing to the application

Current features
and source code.

The application supports students, XL ambassadors, course staff, and department administrators.

Its source code, design references, and documentation also give students an application to study and extend.

Find a workspace.

Check coworking availability and reserve shared rooms.

Find organizations and events.

Browse student organizations and register for events.

Ask for help.

Find course office hours and follow a help ticket.

Support a course.

Manage queues, recurring schedules, rosters, and ticket statistics.

Join a teaching team.

Submit a UTA or GTA application through the department’s hiring workflow.

Manage hiring.

Review applicants, plan staffing and instructional budgets, and track assignments through onboarding.

Sources, credits, and how to read the images

This is a selected history of the CSXL application through October 2026. Release dates describe changes merged to the repository’s main branch; they do not imply every capability was immediately in use by every course. Dates are presented in US Eastern time.

Design credits

The student names beside the Copenhagen designs come from the course’s submission archive. All 16 files were reviewed, and their exported screens are hosted here as PNG sheets at their original export resolution. Smaller WebP images serve as previews. The screens show proposals and placeholder data.

The separate XL Coworking Application wireframes and shared CSXL design template were supplied by Kris Jordan. Individual authorship of those two files is not assigned here. The student proposals are not presented as a one-to-one account of authorship of the later production code.

Release and contributor evidence

  1. Organizations #68 and events #114 explicitly credit Ajay Gandecha, Jade Keegan, Brianna Ta, and Audrey Toney. Event registration #212 records the next increment.
  2. Room reservations #250, its review, and the feature specification establish Team B8’s work and authors. #434 records later testing and documentation.
  3. Initial office hours #443, My Courses office hours #501, recurrence #652, recurrence updates #683, and statistics #739 document successive bodies of work. Statistics contributor names are also recorded in the merged commit’s coauthor credits.
  4. UTA applications #402, extended applications #529, and signage #697 document further department capabilities. Signage authorship is recorded in its source and release.

Architecture and course materials

The architecture diagram is Ajay Gandecha’s original client/server diagram with SQLAlchemy, introduced in PR #173 on November 17, 2023. The diagram is available as a full-resolution PNG, with smaller WebP previews. It is a teaching diagram from that period, including its CloudApps hosting label.

The Fall 2024 and Spring 2025 course materials document project prompts and learning expectations. The course examples describe assignments and proposals; the release history identifies merged features.

The course overview follows the six threads and two-phase structure in the Spring 2026 first-day slides. Topic details draw on that offering’s lessons on tools and code review, testing, API design, ORMs and transactions, and Angular frontend development. The CSXL applications of those topics are illustrative examples; Spring 2026’s feature platform is LearnWithAI.

Hiring history and images

The hiring section follows the July and August 2024 releases and later changes linked beside the narrative. The August 2 administration release credits Ajay Gandecha and Kris Jordan; Ajay’s hiring summary was merged into that release before it reached main. This summer work extended the earlier student application feature and is not presented as a COMP423 team assignment.

The hiring screenshots show the local October 2026 frontend with sample API responses. Names, identifiers, decisions, rates, enrollment, assignments, and costs are entirely illustrative. The department’s semester budget scale describes its use of the software, not the figures in these screenshots. No personnel records were loaded or edited for the captures.

Historical screenshots

Original development screenshots are preserved from the linked PRs and repository specifications. They show sample content. The welcome image omits the browser chrome; selected office-hours views are cropped to the relevant application content.

The October 2023 coworking view is recreated from 33f0934; the March 2024 reservation view from b13e6dd; and the October 2026 My Courses and recurring-date views from 9cc2433. These historical frontend builds were run and captured in 2026 with sample API responses. Their data is illustrative, not a record of occupancy, reservations, or enrollment.

The Co-Lab drone footage and August 2023 preview photograph are reused from the space retrospective. Kris Jordan identified the film as drone footage recorded inside the Co-Lab. This narrative highlights selected contributions. The student contributor credits follow below, and the repository history records further details. The source is MIT licensed.

Credits / 2023–2026

Student
contributors.

These students contributed features, tests, documentation, fixes, and maintenance to the CSXL codebase. Their work includes course projects and development that continued after the course.

Each name links to their GitHub profile.

  1. Ajay Gandecha
  2. Jade Keegan
  3. Bailey DeSouza
  4. Madelyn Andrews
  5. Meghan Sun
  6. Sadie Amato
  7. Audrey Toney
  8. Yuvraj Jain
  9. Brianna Ta
  10. Andrew Lockard
  11. Rohan Kashyap
  12. John Schachte
  13. Will Zahrt
  14. Ben Goulet
  15. Nick Wherthey
  16. Aarjav Jain
  17. Abdulaziz Al-Shayef
  18. Max Goetz
  19. Lauren Ferlito
  20. Mira Mohan
  21. Matt Vu
  22. Benjamin Eldridge
  23. Andy Chan
  24. Embrey Morton
  25. Alicia Bao
  26. Eric Li
  27. Kiernan Almand
  28. Ellie Kim
  29. Noah Smith
  30. Bernie Chen
  31. Zhi Hang Yang

Ordered by cumulative changes in the merged history through October 19, 2026, with shared work and duplicate identities reconciled.

About these credits

The order uses additions and deletions in source code, tests, documentation, and configuration in the October 19, 2026 snapshot. Dependency lockfiles and binary files are excluded. Each non-merge commit is counted once; shared changes are allocated equally among its credited human contributors.

Author names, coauthor records, and original merged PR commits were checked to recover team credits lost in squash merges. Repeated names, handles, and author identities are combined into one person. GitHub profiles were verified on October 22, 2026. These credits cover contributions to the merged codebase; the Copenhagen design credits appear beside the archived student proposals.