Brigham & Women's Hospital Application
I led a team of 11 students in WPI's CS-3733 Software Engineering course. We built a theoretical kiosk application for Brigham & Women's Hospital. I used my previous web skills to lead the team as an Assistant Lead Developer, mentoring younger engineers and guiding decisions. We simulated a modern software team, with front-end and back-end developers, a scrum master, PM, PO, and leads! I worked on all parts of the codebase but focused on the front-end.
- Hospital map navigation with a Voice AI assistant and on-the-go mobile directions
- Request services to specific rooms
- Admin and employee login with OAuth through Auth0
- Employee management
- Responsive design
React
Prisma/Postgres
TypeScript
Turborepo
Docker
AWS
2024

Goal: Modernize Hospital Management
Hospitals need to run quickly and smoothly to save lives. But, they are extremely complex to manage. We architected a prototype hospital management app for Brigham & Women's Hospital. The app would theoretically run on kiosks placed throughout the hospital. It guides visitors through the huge building and helps employees request services and manage staff.

Simplifying Hospital Navigation
Our app streamlined hospital navigation. It displays a map of each floor with interactive nodes for different rooms. Users can automatically generate optimized, visual paths between rooms. They also get a textual list of directions and can scan a QR code to take the directions on-the-go on their phone!
The graph was loaded into our Postgres database from CSV data. We used the Canvas API to render the map. This was very complex! I connected the Canvas API with React for buttons and state. We implemented various pathfinding algorithms like A* and Dijkstra's, using the Strategy design pattern for clean code.

Service Requests
We integrated jobs into the map. Staff can request services like sanitation, transport, and language interpretation to specific rooms. They can request specific employees and give details.

Handling Service Requests
Employees can log into the kiosk using OAuth with Auth0. They can view their assigned service requests and mark them completed. Hospital admins can log in and view requests for all employees and filter accordingly.
I did a lot of the login management, showing the appropriate pages and information based on the employee. I paired with a newer teammate and mentored him to eventually flesh out the authentication features on his own! I also did a lot of the request displaying, filtering, and data management. This was my first big experience working with authentication and databases and I learned a lot!

More Features
- View and edit tables for service requests, employees, map nodes/edges
- OAuth/Auth0 login for admin and staff. Admin add/edit staff.
- Voice AI Assistant, "Ok Tommy" (our Scrum Master <3), to interact with the map and pages using React Speech Kit
- AWS deployment
- Scrolling announcements
- Realtime charts with Reaviz for service request completion statistics
- CSV tables import/export
- Various easter eggs...

Styling
Styling was a total mess! We struggled to coordinate across all 11 people, and none of us had prior Figma experience. But as we progressed, we iterated on Figma mockups, helping create consistency. I mentored an engineer who wanted to learn more about CSS, and we renovated some pages. He went on to re-work much of our team's CSS!

Responsiveness
We made our app responsive for different dimensions! This was quite difficult due to busy UI on the map and having an unconventional layout with a context menu.

Leading is Hard
It was hard to move the team forward while also completing my own work. We worked 12-hour weeks to meet our weekly sprint goals. Practically all of our team were junior engineers, so my lead developer and I were usually swamped with helping others. I spent most meetings pairing, reviewing PR's, and dealing with merge conflicts. I'd stay late to help teammates, and then tackle bugs, refactoring, and leftover work on my own.
I focused on developing talent by sharing React resources and guiding teammates to figure out problems for themselves. This often led to slower work completion, but paid off in the long run.

Learnings
This was my first time working with a sizable team on a big project! I loved collaborating and mentoring. I learned that it's hard but important to coordinate across different developers.
I learned that conflict resolution is really hard. I had some disagreements and misunderstandings with teammates that I didn't initially know how to navigate. Our lead developer walked through conflicts with lots of grace and understanding, and I learned a lot from him.
This project was super fun and helped prepare me for future professional work!