Official RARecruit repo: RiceApps' internal recruiting platform. See project/architecture.md for the architecture diagram.
- Node.js 20.9+ (
node -v) - uv:
For Mac/Linux:
brew install uvOR
curl -LsSf https://astral.sh/uv/install.sh | shFor Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"OR
winget install --id=astral-sh.uv -ecd frontend && npm install
cd ../backend && uv sync To add a package:
- Frontend:
npm install <package>, then commitpackage.jsonandpackage-lock.json. - Backend:
uv add <package>(oruv add --dev <package>), then commitpyproject.tomlanduv.lock.
Each app has its own .env.example for you to copy and fill in the values (ask TLs; use the dev Supabase project):
cp frontend/.env.example frontend/.env.local
cp backend/.env.example backend/.envWhenever you add a variable, add it to the matching .env.example too.
Run both in separate terminals.
Frontend at http://localhost:3000:
cd frontend
npm run devBackend at http://localhost:8000 (interactive API docs at /docs):
cd backend
uv run uvicorn app.main:app --reloadLint & test:
cd frontend && npm run lint
cd backend && uv run ruff check . && uv run pytestSome folders do not exist yet:
RARecruit/
├── frontend/ # Next.js (App Router, TS) + Tailwind
│ ├── src/app/ # pages and layouts
│ ├── src/lib/ # Supabase client, API client (planned)
│ └── .env.example
├── backend/ # FastAPI, managed by uv
│ ├── app/
│ │ ├── main.py # FastAPI app, includes routers
│ │ └── routers/ # add a file when you add a feature
│ ├── tests/ # (planned)
│ ├── pyproject.toml
│ ├── uv.lock
│ └── .env.example
├── supabase/ # (planned)
│ ├── migrations/ # schema
│ └── seed.sql # fake data (dev only)
├── project/
│ └── architecture.md # architecture diagram
├── .gitignore # Node and Python
└── README.md
Create a new branch each time you start working on a NEW feature.
Branch naming scheme:
<app>/<type>-<name>:
| Working on | Branch |
|---|---|
| Frontend feature | frontend/feat-<feature_name> |
| Frontend fix | frontend/fix-<fix_name> |
| Backend feature | backend/feat-<feature_name> |
| Backend fix | backend/fix-<fix_name> |
| Anything else | misc/<name> |
Process:
git pull
git switch -c <new branch name>
Do NOT push to the main branch. Only focus on your feature branch.
git add <your files> (no env!)
git commit -m <message>
git push -u origin <your branch name>
Once you have completed working on your feature branch, raise a PR for team leads to review. Add uma-menon and mertyercel as reviewers.
- PR Title: Add Notion Ticket to the title alongside a short description
- Features added
- Dependencies added
- High-level changes per file
- Concerns or potential conflicts
- Leave inline comments everywhere
- Documentation for all methods (purpose, parameters, retvals)
To learn more about our tech stack, please make use of the following:
For the application to work, please have the same variables as .env.example in your .env file.