Team-Finder is a university student team-matching platform for students at the
University of Jordan (@ju.edu.jo) and Hashemite University (@hu.edu.jo).
Students create a structured profile with their major, courses, skills, availability, learning progress, and bio. Once the profile wizard is complete, the platform can help them discover projects, find teammates, use learning resources, and interact with an AI assistant connected to their academic profile.
- A student signs up or logs in with a supported university email.
- The student completes the profile wizard.
- A completed profile unlocks meaningful project discovery and matching.
- The dashboard becomes the main hub for projects, learning, and AI guidance.
- The learning page combines university courses, developer tools, personalized roadmaps, progress tracking, and resource enrichment from the prefetching pipeline.
For the current visual user journey, see docs/WORKFLOW_DIAGRAM_V2.md.
- University-gated authentication for JU and HU students.
- Profile wizard for academic and collaboration readiness.
- Project browsing, creation, detail views, and matching-oriented discovery.
- Client-side match scoring using skill vectors, availability, rating, and penalties.
- Learning page with courses, dev tools, personalized paths, and progress.
- AI assistant backed by a FastAPI + LangGraph backend.
- Resource and project enrichment through the data prefetching pipeline.
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 App Router, TypeScript, React, TailwindCSS |
| Backend | Python FastAPI, LangGraph, Anthropic Claude |
| Auth | Supabase Auth |
| Database | Supabase PostgreSQL |
| Data pipeline | TypeScript prefetcher and API wrapper |
Team-Finder/
|-- frontend/ # Next.js application
| |-- src/app/ # App Router pages and API routes
| |-- src/components/ # UI, dashboard, profile, learning components
| |-- src/algorithm/ # Match scoring engine
| |-- src/hooks/ # Learning, progress, roadmap hooks
| |-- src/lib/ # Supabase clients, auth, validation, APIs
| `-- src/data/ # Static course, skill, roadmap, tool data
|-- backend/ # FastAPI + LangGraph AI assistant
| |-- app/ # FastAPI entrypoint and auth core
| |-- ai_agent/ # Agent tools and system prompt
| `-- scripts/ # Roadmap/dev-tool seed scripts
|-- supabase/migrations/ # Database migrations
|-- data/generators/ # API wrapper and prefetching pipeline
|-- docs/ # Active documentation
`-- TESTING_GUIDE.md # Manual testing guide
- Node.js 18+
- Python 3.11+
- Supabase project
- Anthropic API key
Copy .env.example to .env and fill in the required values:
DATABASE_URL=postgresql://...
NEXT_PUBLIC_SUPABASE_URL=https://...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
SUPABASE_JWT_SECRET=...
ANTHROPIC_API_KEY=...
NEXT_PUBLIC_APP_URL=http://localhost:3002The frontend also needs the public Supabase values available in
frontend/.env.local.
cd frontend
npm install
npm run devThe frontend runs on http://localhost:3002.
cd backend
pip install -r requirements.txt
python app/main.pyThe backend runs on http://localhost:8000.
The canonical ERD is provided by the project architect and stored in the docs assets folder:
| Document | Purpose |
|---|---|
| docs/README.md | Documentation hub |
| docs/WORKFLOW_DIAGRAM_V2.md | Current canonical workflow diagram |
| docs/WORKFLOW_DIAGRAM.md | Existing workflow diagram kept for reference |
| docs/assets/erd.png | Canonical ERD image |
| TESTING_GUIDE.md | Manual testing guide |
- University affiliation must come from verified auth metadata, not request bodies.
- Authenticated writes should use server-side user verification.
- The AI assistant write surface is intentionally limited to user-owned learning, course, and skill/profile-adjacent operations exposed by its tools.
See LICENSE.
