This repository contains the source code for the Hack4Impact-UMD Application Portal. The interface includes features for applicants to submit and view the status of their applications, and features to make reviewing applications more efficient for club members.
In addition, the project is integrated with Professor, our autograder service.
- Role-specific workflows for applicants, reviewers, board members, and admins.
- Dynamic applications support role-specific sections, markdown, file uploads, autosave, and validation.
- Review interface with access to rubrics, notes, command pallete, and autosave.
- Admin dashboards manage review status, assignments, decisions, and confirmations.
- Auto-assignment algorithm generates applicant-to-reviewer matches.
- Automation tools duplicate forms, update due dates, activate forms, create internal applicants, etc.
- Form and rubric builders provide JSON editors, live previews, validation, and upload.
- CSV exports download and organize applicant and review data.
- Autograder integration publishes and tracks grading jobs for engineering applicants.
- Language: TypeScript
- Package Manager: pnpm
- Linter and Formatter: oxlint + oxfmt
- Framework: React
- Build Tool: Vite
- Styling: Tailwind CSS
- UI Components: shadcn/ui, Radix UI
- Data Fetching: TanStack Query
- Routing: React Router
- Runtime: Node.js
- Framework: Express
- Platform: Firebase (Cloud Functions, Firestore, Authentication, Storage)
- Schema Validation: Zod
- Task Queue: Cloud Tasks
-
From the
app-portaldirectory, install all dependencies with:pnpm install
-
Build all workspaces:
pnpm build
-
Run the frontend server:
pnpm --filter frontend dev
-
Run the backend server:
pnpm --filter functions serve
In addition:
- Set up
.envfiles with the templates available atfrontend/.env.exampleandbackend/functions/.env.example. - Set up backend emulators with the Firebase Emulator Setup Guide.
- Set up pre-commit hooks with
pip install pre-commitandpre-commit install
Note: Some of these may be outdated
| Name | Role | Contact | |
|---|---|---|---|
| Ramy Kaddouri | Tech Lead | Slack | TODO |
| Lance Uymatiao | Tech Lead | Slack | lanceu0128@gmail.com |
