Project Info
Inspiration
At the time of writing this, the United Network for Organ Sharing (UNOS) reports there are 108,562 people on the national transplant list. Additionally, the NIH reports that 17 people die waiting for an organ each day. This means that throughout the mere duration of this hackathon, approximately 26 people died awaiting an organ in the U.S and nearly 240 new names were added (Penn Medicine). This unfortunate reality is not due to the inevitability of death but the scarcity of organs: a scarcity that can be greatly reduced by increasing the number of registered donors and living donors. This project was largely inspired by the Nobel Prize winning economic research by Al Roth and Judd Kessler that encourages donor registration through a priority policy for people that were already organ donors. By rewarding those willing to make a scarce resource available, implementation in Israel and Singapore saw a dramatic increase in registration rates and living donor donation. The current U.S. organ registration system not only fails to implement this policy but remains outdated with its current registration system. Current organ registration is largely relegated to checking a box when getting your driver’s license, completely excluding those who don’t have a driver’s license (I’m working on it). Nevertheless, such a system fails to reflect the life determining severity of maximizing the number of organ donors.
What it does
Our app, Hero, makes registering to be an organ donor easier and implements the aforementioned policy by alerting you once you hit the 3-year mark as an organ donor where you receive a level of priority on the UNOS donor list if you ever (hopefully never) need an organ. If you're “willing to spare” and eligible it uses the stable matching algorithm to match you with possible recipients and once you pick a match and a timeline sends the information to a hospital to schedule surgery. After donation, you are given the highest level of priority that can be passed off to a loved one waiting for an organ. Granted, sacrificing an organ is the only way you can contribute to the health of others, Hero given a zip code finds close by blood donation centers for you to donate blood. When it comes to illness, we are too often left powerless in protecting those we love most from suffering, Hero's easier donor registration and organ donor matching allows us to indirectly help those we love by directly helping those others love.
How we built it
We built Hero as a mobile app using React Native and Expo SDK 54 with TypeScript. Navigation is handled by Expo Router (file-based routing), while we used NativeWind (Tailwind CSS for React Native) for styling to keep UI development fast and consistent. The matching algorithm was originally prototyped in Python, then ported entirely to TypeScript. It scores recipients using blood type compatibility, medical priority factors (waiting time, sensitization, age, eGFR), and geographic proximity (converting zip codes to coordinates via the zipcodes package and applying Haversine distance). Eligibility screening cross-references user responses against a rules table derived from real donor disqualification criteria. We integrated the Overpass API/OpenStreetMap to query for nearby blood donation centers and blood banks based on the user's zip code, giving real geographic results without needing API keys. Encryption uses AES-256-GCM via the Web Crypto API, ported from our Python reference implementation. The app runs entirely frontend-side with in-memory auth and mock patient records, but would include a comprehensive backend database in a real-world application.
Challenges we ran into
: Design to dev: Converting a Figma design file into code with intuitive layout for multiple screen sizes Python → TypeScript: Porting the matching logic and AES-256-GCM encryption while keeping behavior identical Frontend-only setup: Deciding where to put auth, API calls, and matching when there’s no backend Accomplishments we're proud of: Encryption: Successfully implementing HIPAA-compliant encryption of data! App development: Creating our very first mobile app with React Native Intuitive UI: Combining design with development to create an app that feels human-first and accessible User flow: Onboarding, eligibility screening, matching, scheduling, and thank-you screen connected end-to-end Live blood drives: OpenStreetMap API integration to show real donation sites by zip code, no API key required Domain-aware matching: Matching based on blood type, recipient priority, and geographic distance.
What we learned
When designing for healthcare, the importance of erring on the side of caution instead of leaving things to chance. When determining matching, we had to make sure the questionnaire was exhaustive and learned to be quick to disqualify potential donors, sacrificing donor match maximization to ensure the safety and compatibility of all matches. None of us had extensive hackathon experience or had ever developed a mobile app before, so this was a huge and exciting learning experience. We learned a lot about the thought behind design decisions and how to collaborate on moving parts to ensure a working product.
What's next
We’re aware that ultimately the success of our application relies on policy reform; however, we thought Treehacks ( i.e.“boiling the ocean” ) called for innovation that transcended outdated and negligent infrastructure. Regardless, with improvements on the encryption logic to ensure user privacy, optimized weighting for matching and connection to national health organizations, Hero can hopefully evolve to facilitate plasma and liver donation through matching as well. In addition to allowing both hospitals and users quick access to their donor status. We hope the development of this application will trigger a much needed reform of NOTA and UAGA laws along with making registration for organ donors more accessible. Our team is sure that, Hero, policy allowing, revolutionizes organ donation and would undoubtedly save countless lives as seen in other countries. Not to mention, facilitating generosity and challenging the way we think about our own mortality.
Hero
Save lives. Be a hero.
A human-first mobile app for organ donation.
Overview
Hero helps users register as organ donors, track their donor status, and explore living kidney/liver donation. The app includes:
- Onboarding & account creation — Profile setup with medical info, security questions, and authentication
- Donor dashboard — Status tracker, blood drive finder, and living donation CTA
- Living donor path — Education, eligibility screening (5-part questionnaire), and preference setting for directed vs. altruistic donation
- Potential matches — Compatibility-based recipient matching
The project uses a frontend-only architecture with mock data and in-memory auth. Encryption (AES-256-GCM) and matching logic are implemented in TypeScript within the frontend.
Tech Stack
- React Native + Expo (SDK 54)
- Expo Router — File-based navigation
- NativeWind / Tailwind CSS — Utility-first styling
- TypeScript
- Phosphor Icons
- Fonts: Inria Serif, Archivo, Geist Mono
Project Structure
treehacks26/
├── frontend/ # Expo/React Native app
│ ├── app/
│ │ ├── (auth)/ # Welcome, Login, Medical Info, Affirmation
│ │ └── (tabs)/ # Home, Donate, Profile
│ ├── components/
│ ├── constants/
│ ├── contexts/ # AuthContext (in-memory user state)
│ └── services/ # API, encryption, records, mockData
├── backend/ # Reference implementations (Python)
│ ├── encrypt/ # AES-256-GCM encryption (Python)
│ ├── sm_alg/ # Priority/matching logic
│ └── records.json
└── README.md
Getting Started
Prerequisites
- Node.js (v18+)
- npm or yarn
- Xcode (for iOS) or Android Studio (for Android)
- Expo Go app (optional, for physical device testing)
Installation
- Clone the repo and install dependencies:
cd frontend
npm install
- Start the development server:
npm start
- Run on a platform:
- iOS simulator: Press
iin the terminal, or runnpm run ios - Android emulator: Press
ain the terminal, or runnpm run android - Web: Press
win the terminal, or runnpm run web - Physical device: Scan the QR code with Expo Go
Features
Authentication (Frontend-Only)
- Register — Create account with first name, last name, birthday, gender, blood type, SSN, security question, and password
- Login — Sign in with first name, last name, and password
- Data is kept in memory only (no persistence) — suitable for demos and prototyping
Eligibility Screening
A 5-part questionnaire covering:
- Health conditions (kidney disease, diabetes, blood pressure, cancer, surgeries, heart disease)
- Other conditions (liver, autoimmune, blood disorders, lung, neurological, psychiatric)
- Infections & family history
- Lifestyle (smoking, alcohol, drugs, medications, pregnancy)
- Risk factors (incarceration, sexual behavior, needle sharing, travel, etc.)
Each question supports Yes, No, and Don't know.
Living Donation Flow
- Education — Information on living kidney donation and laparoscopic surgery
- Screening — Complete the eligibility questionnaire
- Preferences — Choose to donate to a specific person or altruistically
- Matches — View potential recipients with compatibility scores
Backend Reference
The backend/ folder contains Python implementations used as reference:
- encrypt/ — AES-256-GCM encryption (ported to TypeScript in
frontend/services/encryption.ts) - sm_alg/ — Priority scoring and matching logic
- records.json — Sample recipient and donor records (ported to
frontend/services/recordsData.ts)
License
Private — TreeHacks 2026
Analysis
View
Metric
- 23
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
201 KB
Source files
64
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
angelinawwu/treehacks26
92 files · 5.1 MB · @ 6b4daba
Structure
Interface
36 files · 39%Screens, components and styles rendered to the user.
Application logic
23 files · 25%Domain rules, services and shared utilities.
+2 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript92%
- JavaScript5%
- Markdown4%
- Python0%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 37- @expo-google-fonts/archivo
- @expo-google-fonts/geist-mono
- @expo-google-fonts/inria-serif
- @expo/vector-icons
- @react-navigation/bottom-tabs
- @react-navigation/elements
- @react-navigation/native
- expo
- expo-constants
- expo-font
- expo-haptics
- expo-image
- expo-linking
- expo-router
- expo-splash-screen
- expo-status-bar
- expo-symbols
- expo-system-ui
- +19 more
backend/encrypt/requirements.txt
pypi · 1- pip
package.json
npm · 1- phosphor-react-native
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.