|
1 | | -# π Hackd - AI-Powered Hacker Matching Platform |
2 | | - |
3 | | -> **Winner of Hack the North 2024** - *Find the perfect hacker for every situation* |
4 | | -
|
5 | | -Hackd breaks the stigma of cold outreach by connecting you directly with top tech talent using AI-powered analysis of GitHub profiles, tech stacks, and collaboration patterns. |
| 1 | +# Hackd - Hacker Matching Platform |
6 | 2 |
|
7 | 3 | [](https://portal.defang.dev/redirect?url=https%3A%2F%2Fgithub.com%2Fnew%3Ftemplate_name%3Dhackd-template%26template_owner%3DHackTheNorthTeam) |
8 | 4 |
|
9 | | -## π― What is Hackd? |
| 5 | +## Overview |
10 | 6 |
|
11 | | -**The Problem**: Finding teammates at hackathons is stressful. The Hack the North Slack had 1,710 members in the "looking for teammates" channel, and taking the leap to message someone when you're a solo hacker can be terrifying. |
| 7 | +**Problem**: Finding teammates at hackathons is difficult. Slack channels get crowded and reaching out is awkward. |
12 | 8 |
|
13 | | -**Our Solution**: Hackd analyzes GitHub profiles to understand what kind of coder you are, performs sentiment analysis to identify collaboration patterns, and uses AI to match you with the perfect teammates or candidates. |
| 9 | +**Solution**: Hackd analyzes GitHub profiles and matches hackers using sentiment and code analysis. |
14 | 10 |
|
15 | | -### π Key Features |
| 11 | +## Features |
16 | 12 |
|
17 | | -- **π GitHub Profile Analysis**: Deep analysis of coding patterns, tech stacks, and project complexity |
18 | | -- **π€ AI-Powered Matching**: Uses Cohere AI for intelligent pairing based on complementary skills |
19 | | -- **πΌ Recruiter Dashboard**: Helps recruiters find top talent at hackathons |
20 | | -- **π Collaboration Scoring**: Analyzes code comments, PR activity, and teamwork patterns |
21 | | -- **π¨ Beautiful UI**: Modern React interface with smooth animations and responsive design |
| 13 | +- GitHub profile and coding pattern analysis |
| 14 | +- AI-powered matching using Cohere |
| 15 | +- Recruiter dashboard |
| 16 | +- Collaboration scoring |
| 17 | +- Clean React interface |
22 | 18 |
|
23 | | -## ποΈ Architecture |
| 19 | +## Architecture |
24 | 20 |
|
25 | 21 | ``` |
26 | 22 | hackd/ |
27 | | -βββ backend/ # Python API Services |
28 | | -β βββ api/ # Flask REST API |
29 | | -β β βββ main.py # Main API server |
30 | | -β βββ github-analyzer/ # GitHub profile analysis |
31 | | -β β βββ github_analyzer.py # Core analysis engine |
32 | | -β βββ matching/ # AI matching engine |
33 | | -β β βββ matcher.py # Cohere-powered matching |
34 | | -β βββ requirements.txt # Python dependencies |
35 | | -β |
36 | | -βββ frontend/hackd-web/ # Next.js Frontend |
37 | | -β βββ app/ # Next.js 14 app router |
38 | | -β β βββ matching/ # User matching interface |
39 | | -β β βββ recruiting/ # Recruiter dashboard |
40 | | -β β βββ hacker/ # Hacker profile forms |
41 | | -β βββ convex/ # Convex database & auth |
42 | | -β βββ lib/api.ts # Backend API client |
43 | | -β |
44 | | -βββ config/ # Configuration & deployment |
45 | | - βββ docker-compose.yml # Full-stack deployment |
| 23 | +βββ backend/ |
| 24 | +β βββ api/main.py |
| 25 | +β βββ github-analyzer/github_analyzer.py |
| 26 | +β βββ matching/matcher.py |
| 27 | +β βββ requirements.txt |
| 28 | +βββ frontend/hackd-web/ |
| 29 | +β βββ app/{matching,recruiting,hacker}/ |
| 30 | +β βββ convex/ |
| 31 | +β βββ lib/api.ts |
| 32 | +βββ config/docker-compose.yml |
46 | 33 | ``` |
47 | 34 |
|
48 | | -## π Quick Start |
| 35 | +## Quick Start |
49 | 36 |
|
50 | 37 | ### Prerequisites |
51 | 38 |
|
52 | | -- **Node.js** 18+ and **npm** |
53 | | -- **Python** 3.11+ |
54 | | -- **Git** |
55 | | -- **GitHub Personal Access Token** |
56 | | -- **Cohere API Key** |
| 39 | +- Node.js 18+ |
| 40 | +- Python 3.11+ |
| 41 | +- Git |
| 42 | +- GitHub Personal Access Token |
| 43 | +- Cohere API Key |
57 | 44 |
|
58 | | -### 1. Clone & Setup |
| 45 | +### Setup |
59 | 46 |
|
60 | 47 | ```bash |
61 | 48 | git clone https://github.com/your-username/hackd.git |
62 | 49 | cd hackd |
63 | 50 |
|
64 | | -# Install backend dependencies |
| 51 | +# Backend |
65 | 52 | cd backend |
66 | 53 | pip install -r requirements.txt |
67 | 54 |
|
68 | | -# Install frontend dependencies |
| 55 | +# Frontend |
69 | 56 | cd ../frontend/hackd-web |
70 | 57 | npm install |
71 | 58 | ``` |
72 | 59 |
|
73 | | -### 2. Environment Configuration |
| 60 | +### Configuration |
| 61 | + |
| 62 | +#### Backend |
74 | 63 |
|
75 | | -#### Backend Configuration |
76 | 64 | ```bash |
77 | | -cd backend |
78 | 65 | cp .env.example .env |
79 | | -# Edit .env with your API keys |
| 66 | +# Edit with keys |
80 | 67 | ``` |
81 | 68 |
|
82 | | -#### Frontend Configuration |
| 69 | +#### Frontend |
| 70 | + |
83 | 71 | ```bash |
84 | | -cd frontend/hackd-web |
85 | 72 | cp .env.local.example .env.local |
86 | | -# Edit .env.local with your Convex & API settings |
| 73 | +# Edit with keys |
87 | 74 | ``` |
88 | 75 |
|
89 | | -### 3. Required API Keys |
| 76 | +### API Keys Needed |
90 | 77 |
|
91 | | -| Service | Purpose | How to Get | |
92 | | -|---------|---------|------------| |
93 | | -| **GitHub Token** | Profile analysis | [GitHub Settings β Developer settings β Personal access tokens](https://github.com/settings/tokens) | |
94 | | -| **Cohere API Key** | AI matching & sentiment analysis | [Cohere Dashboard](https://dashboard.cohere.ai/) | |
95 | | -| **Convex** | Database & authentication | [Convex Dashboard](https://dashboard.convex.dev/) | |
| 78 | +| Service | Use | |
| 79 | +|---------|-----| |
| 80 | +| GitHub | Profile analysis | |
| 81 | +| Cohere | Matching | |
| 82 | +| Convex | Auth and DB | |
96 | 83 |
|
97 | | -### 4. Run the Application |
| 84 | +### Run |
98 | 85 |
|
99 | | -#### Option A: Development (Recommended) |
| 86 | +**Dev Mode** |
100 | 87 |
|
101 | 88 | ```bash |
102 | | -# Terminal 1: Start backend API |
| 89 | +# Terminal 1 |
103 | 90 | cd backend |
104 | 91 | python api/main.py |
105 | 92 |
|
106 | | -# Terminal 2: Start frontend |
| 93 | +# Terminal 2 |
107 | 94 | cd frontend/hackd-web |
108 | 95 | npm run dev |
109 | 96 | ``` |
110 | 97 |
|
111 | | -#### Option B: Docker Compose |
| 98 | +**Docker** |
112 | 99 |
|
113 | 100 | ```bash |
114 | 101 | cd config |
115 | 102 | docker-compose up --build |
116 | 103 | ``` |
117 | 104 |
|
118 | | -Visit: **http://localhost:3000** π |
| 105 | +Access at `http://localhost:3000` |
119 | 106 |
|
120 | | -## π§ API Endpoints |
| 107 | +## API Endpoints |
121 | 108 |
|
122 | | -| Endpoint | Method | Purpose | |
123 | | -|----------|--------|---------| |
124 | | -| `/health` | GET | Service health check | |
125 | | -| `/api/analyze-github` | POST | Analyze GitHub profile | |
126 | | -| `/api/match-users` | POST | Find matching users | |
127 | | -| `/api/analyze-job-description` | POST | Parse job requirements | |
128 | | -| `/api/analyze-sentiment` | POST | Sentiment analysis | |
| 109 | +| Endpoint | Method | Description | |
| 110 | +|----------|--------|-------------| |
| 111 | +| `/health` | GET | Health check | |
| 112 | +| `/api/analyze-github` | POST | GitHub profile analysis | |
| 113 | +| `/api/match-users` | POST | Match hackers | |
| 114 | +| `/api/analyze-job-description` | POST | Job parsing | |
| 115 | +| `/api/analyze-sentiment` | POST | Sentiment | |
129 | 116 |
|
130 | | -### Example Usage |
| 117 | +### Example |
131 | 118 |
|
132 | | -```javascript |
133 | | -// Analyze a GitHub profile |
134 | | -const response = await fetch('http://localhost:5000/api/analyze-github', { |
| 119 | +```js |
| 120 | +const res = await fetch('http://localhost:5000/api/analyze-github', { |
135 | 121 | method: 'POST', |
136 | 122 | headers: { 'Content-Type': 'application/json' }, |
137 | 123 | body: JSON.stringify({ username: 'octocat' }) |
138 | 124 | }); |
139 | | - |
140 | | -const profile = await response.json(); |
141 | | -console.log(profile.top_technologies); // ['JavaScript', 'Python', 'React'] |
| 125 | +const data = await res.json(); |
| 126 | +console.log(data.top_technologies); |
142 | 127 | ``` |
143 | 128 |
|
144 | | -## π§ AI Matching Algorithm |
145 | | - |
146 | | -Our matching algorithm combines multiple factors: |
| 129 | +## Matching Logic |
147 | 130 |
|
148 | 131 | ```python |
149 | | -# Core matching logic |
150 | 132 | match_score = ( |
151 | 133 | tech_complementarity * 0.4 + |
152 | 134 | experience_compatibility * 0.3 + |
153 | 135 | collaboration_compatibility * 0.2 + |
154 | 136 | activity_level * 0.1 |
155 | 137 | ) |
156 | 138 | ``` |
157 | | - |
158 | | -## π¨ Frontend Features |
159 | | - |
160 | | -### π Landing Page |
161 | | -- Clean, modern design with animations |
162 | | -- GitHub OAuth integration |
163 | | -- Responsive layout |
164 | | - |
165 | | -### π Matching Interface |
166 | | -- Interactive user cards with flip animations |
167 | | -- Real-time skill visualization with pie charts |
168 | | -- Liquid-fill progress bars for aptitude scores |
169 | | - |
170 | | -### πΌ Recruiter Dashboard |
171 | | -- Job description analysis |
172 | | -- Candidate ranking system |
173 | | -- Sentiment analysis of job posts |
174 | | - |
175 | | -### π¬ Chat System |
176 | | -- Real-time messaging with Convex |
177 | | -- Team formation tools |
178 | | -- Collaboration tracking |
179 | | - |
180 | | -## π Security & Best Practices |
181 | | - |
182 | | -- β
**No hardcoded secrets** - All API keys via environment variables |
183 | | -- β
**Input validation** - Comprehensive request validation |
184 | | -- β
**Error handling** - Graceful degradation and user feedback |
185 | | -- β
**Rate limiting** - API request throttling |
186 | | -- β
**CORS configured** - Secure cross-origin requests |
187 | | -- β
**Health checks** - Service monitoring endpoints |
188 | | - |
189 | | -## π§ͺ Testing |
190 | | - |
191 | | -```bash |
192 | | -# Backend tests |
193 | | -cd backend |
194 | | -pytest |
195 | | - |
196 | | -# Frontend tests |
197 | | -cd frontend/hackd-web |
198 | | -npm test |
199 | | - |
200 | | -# Integration tests |
201 | | -npm run test:e2e |
202 | | -``` |
203 | | - |
204 | | -## π Deployment |
205 | | - |
206 | | -### Defang (Recommended) |
207 | | -```bash |
208 | | -# Install Defang CLI |
209 | | -brew install DefangLabs/defang/defang |
210 | | - |
211 | | -# Login to Defang |
212 | | -defang login |
213 | | - |
214 | | -# Deploy the application |
215 | | -defang compose up |
216 | | -``` |
217 | | - |
218 | | -### Manual Deployment |
219 | | -1. **Backend**: Deploy Flask API to Railway, Render, or AWS |
220 | | -2. **Frontend**: Deploy Next.js to Vercel or Netlify |
221 | | -3. **Database**: Convex handles database deployment |
222 | | - |
223 | | -### Environment Variables for Production |
224 | | - |
225 | | -Make sure to set these in your deployment environment: |
226 | | - |
227 | | -**Backend:** |
228 | | -- `GITHUB_TOKEN` - Your GitHub personal access token |
229 | | -- `COHERE_API_KEY` - Your Cohere API key |
230 | | -- `FLASK_ENV=production` |
231 | | - |
232 | | -**Frontend:** |
233 | | -- `NEXT_PUBLIC_CONVEX_URL` - Your Convex deployment URL |
234 | | -- `NEXT_PUBLIC_API_URL` - Your backend API URL |
235 | | - |
236 | | -## π₯ Team |
237 | | - |
238 | | -Built by a team of 4 developers during Hack the North 2024: |
239 | | - |
240 | | -- **Tianqin Meng** - Full-stack development & AI integration |
241 | | -- **Hamza Khamissa** - Frontend design & user experience |
242 | | -- **David Pietrocola** - Backend architecture & GitHub analysis |
243 | | -- **Saikrishna Devendiran** - Database design & authentication |
244 | | - |
245 | | -## π Achievements |
246 | | - |
247 | | -- **π₯ Hack the North 2024 Winner** |
248 | | -- **36 hours** of intensive development |
249 | | -- **1,710 users** in the target demographic |
250 | | -- **DEI-friendly** matching (skill-based, identity-agnostic) |
251 | | - |
252 | | -## π οΈ Tech Stack |
253 | | - |
254 | | -### Backend |
255 | | -- **Flask** - REST API framework |
256 | | -- **Cohere AI** - Sentiment analysis & embeddings |
257 | | -- **PyGithub** - GitHub API integration |
258 | | -- **scikit-learn** - Machine learning algorithms |
259 | | -- **Docker** - Containerization |
260 | | - |
261 | | -### Frontend |
262 | | -- **Next.js 14** - React framework with App Router |
263 | | -- **TypeScript** - Type-safe development |
264 | | -- **Tailwind CSS** - Utility-first styling |
265 | | -- **Framer Motion** - Smooth animations |
266 | | -- **Chart.js** - Data visualization |
267 | | -- **Convex** - Real-time database & auth |
268 | | - |
269 | | -### Infrastructure |
270 | | -- **Convex** - Database & authentication |
271 | | -- **Defang** - Deployment platform |
272 | | -- **GitHub Actions** - CI/CD pipeline |
273 | | - |
274 | | -## π Performance |
275 | | - |
276 | | -- **< 2s** GitHub profile analysis |
277 | | -- **< 500ms** matching algorithm execution |
278 | | -- **95%** uptime SLA |
279 | | -- **10x faster** than manual teammate finding |
280 | | - |
281 | | -## π€ Contributing |
282 | | - |
283 | | -We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. |
284 | | - |
285 | | -1. Fork the repository |
286 | | -2. Create a feature branch (`git checkout -b feature/amazing-feature`) |
287 | | -3. Commit your changes (`git commit -m 'Add amazing feature'`) |
288 | | -4. Push to the branch (`git push origin feature/amazing-feature`) |
289 | | -5. Open a Pull Request |
290 | | - |
291 | | -## π License |
292 | | - |
293 | | -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
294 | | - |
295 | | -## π Acknowledgments |
296 | | - |
297 | | -- **Hack the North 2024** for the incredible experience |
298 | | -- **Cohere** for AI/ML capabilities |
299 | | -- **GitHub** for comprehensive developer data |
300 | | -- **Convex** for seamless database integration |
301 | | -- **Defang** for deployment infrastructure |
302 | | - |
303 | | ---- |
304 | | - |
305 | | -<div align="center"> |
306 | | - |
307 | | -**Built with β€οΈ during Hack the North 2024** |
308 | | - |
309 | | -[π Live Demo](https://hackd.dev) β’ [π Documentation](https://docs.hackd.dev) β’ [π Report Bug](https://github.com/hackd/issues) β’ [β¨ Request Feature](https://github.com/hackd/issues) |
310 | | - |
311 | | -</div> |
0 commit comments