This repository contains the source code for Hagar's Analytics Management Platform, a full-stack TypeScript web application built with React and Vite, with a tRPC backend on Firebase.
Meet our wonderful team of Product Managers, Tech Leads, Designers, and Engineers!
![]() Laila Shakoor |
![]() Bhavya Tanugula |
![]() Joel Chemmanur |
![]() Aarav Verma |
![]() Anita Daniel |
![]() Lucy Davies |
![]() Sophia Narido |
|
Achyut Anoop |
Alisha Wu |
![]() Indira Shafii |
![]() Nazeer Ahmed |
![]() Saanvi Kataria |
![]() Srihas Inaganti |
![]() Stanley Xu |
![]() Yuvan Adarsh Jagannathan |
The instructions here are important to follow, messing up here will lead to issues later on. If you have any questions, reach out to the Tech Leads.
-
Install the following tools.
Tool Version Git Any recent version Node.js 22 or later pnpm 11 or later (you can install with npx get-pnpm)Java 21 or later (the Auth and Firestore emulators need it) We recommend VS Code with these extensions:
- oxc, which shows lint errors and formats your code with our config
- Tailwind CSS IntelliSense, which autocompletes Tailwind classes
-
Clone and install.
git clone https://github.com/Hack4Impact-UMD/hagar.git cd hagar pnpm install -
Install the Firebase CLI and log in.
npm install -g firebase-tools firebase login
Log in with the Google account you gave the Tech Leads. They will add you to the Hagar Firebase project. The repo is already linked to it. Run
firebase useto check, it should printhagar-intl. -
Set up your
.env. The Tech Leads will send you a.envfile. Put it in the root of the project, next to.env.example. If you haven't been sent one, copy the example and ask the Tech Leads for the values:cp .env.example .env
You don't need a
.envto run the app locally, the emulators accept any values. You do need it to connect to the real Firebase project. Never commit your.env, it's already in.gitignore. -
Install the Playwright browser.
pnpm exec playwright install chromium -
Start the app.
pnpm devThis opens the app at http://127.0.0.1:5173 and the Emulator UI at http://127.0.0.1:4000. To start just the emulators, use
pnpm emulators -
Make sure you pass the tests.
pnpm checks pnpm test:e2eIf formatting fails, run
pnpm format. To run one particular test, usepnpm lint,pnpm format:check,pnpm typecheck,pnpm test.
-
Pick up an issue. Issues will be assigned by Tech Leads. Every PR should map to a GitHub issue.
-
Branch off
main.git checkout main && git pull git checkout -b <your-name>/<short-description>
-
Commit and push your work. Have small, focused commits instead of giant ones. Your commit message should say what the commit does, so someone reading
git logcan understand it without opening the diff.Good Bad Add team photo for AaravfixValidate email on signup formstuffFix redirect loop after logoutaaravsuxThe first time you push your branch, set its upstream:
git push -u origin <your-name>/<short-description>
After that,
git pushis enough. -
Run the checks and E2E tests. Both must pass before you open the PR:
pnpm checks pnpm test:e2e
If the format check fails, run
pnpm formatto fix it. If an E2E test fails,pnpm test:e2e:uiopens Playwright's UI so you can step through it. -
Open the PR into
main. There exists a template to follow, make sure you follow it exactly so that we can map a PR to a Github Issue. -
Address every CodeRabbit comment. Fix the ones that are right. If you think a comment is wrong, reply to it and explain why. Don't leave any comment without a fix or a reply.
-
Request review. Once CI is green (which is when all the GitHub checks have a green checkmark) and CodeRabbit's comments are handled, add Joel (@joelchem) and Aarav (@constrictingsnake) as reviewers, and ping the tech leads in the private leadership chat.
-
Respond to feedback. Push fixes, re-request review, ping in leadership slack again, and merge once the PR is approved.












