Discover the perfect project teammate, powered by automated resume parsing and smart skill matching.
A full-stack collaboration platform that pairs hackathon builders and project creators based on automated resume parsing, GitHub repository analysis, and skill-compatibility matching.
- π Automated Resume Parsing β extracts skills, projects, and achievements from PDF & DOCX using
pdf-parseandmammothwith regex tokenization. - π GitHub Profile Detection β associates repositories and detects project technologies from candidate text.
- π§ Smart Teammate Matching β affinity scores based on overlapping tech stacks, project history, and availability.
- π Hybrid Zero-Downtime Persistence β connects to MongoDB Atlas, and automatically falls back to a high-speed in-memory store if the database is unavailable β 100% demo-ready, zero crashes.
- π Secure by Default β SHA-256 password hashing, token-based sessions, and sanitized API responses.
- π Modern, Responsive UI β vanilla HTML5/CSS3 with glassmorphism, animations, and async
fetch.
| Layer | Technology |
|---|---|
| Frontend | Vanilla HTML5, CSS3 (Glassmorphism), JavaScript (Fetch API + DOM events) |
| Backend | Node.js, Express.js (v5.x) |
| Data | Mongoose ODM, MongoDB Atlas (with in-memory fallback) |
| Parsing | multer, pdf-parse, mammoth |
| Security | Crypto (SHA-256), CORS, Dotenv |
Client (HTML/JS) ββHTTPβββΆ Express API (server.js)
β
ββββΆ MongoDB (Atlas)
ββββΆ In-Memory Store (fallback)
git clone https://github.com/KRISHNA-24BCS127/Teamup.git
cd Teamupnpm installcp .env.example .envIf
MONGODB_URIis omitted, the app automatically boots in zero-config in-memory mode.
npm start # production
npm run dev # development with auto-reload (nodemon)Open http://localhost:5000 in your browser.
Demo login:
- Email:
test@example.com - Password:
password123
| Command | Description |
|---|---|
npm start |
Run the server in production mode |
npm run dev |
Run with nodemon auto-reload |
Base URL: http://localhost:5000
| Method | Endpoint | Description | Auth |
|---|---|---|---|
GET |
/api/db-status |
Database connectivity & stats | β |
POST |
/api/signup |
Register an account | β |
POST |
/api/login |
Log in & receive a session token | β |
POST |
/api/logout |
Invalidate the session | β |
GET |
/api/profile |
Fetch the current user's profile | β |
PUT |
/api/profile |
Update the current user's profile | β |
GET |
/api/search/teammates |
Search teammates by skill & availability | β |
GET |
/api/teammates |
Paginated teammate list | β |
DELETE |
/api/profile |
Permanently delete the current user's account | β |
DELETE |
/api/teammates/:id |
Delete a teammate entry | β |
Example β search for ML developers:
curl "http://localhost:5000/api/search/teammates?skills=Machine%20Learning"{ "success": true, "teammates": [ { "name": "Krishna Rai", "skills": ["Python", "Machine Learning"] } ] }Teamup is a full-stack Node/Express app with a MongoDB database and file uploads, so it needs a real server host (not GitHub Pages, which only serves static files). Good options that offer a free tier: Render, Railway, or Fly.io.
- MongoDB Atlas must accept connections from the deployed server. In Atlas β
Network Access β add
0.0.0.0/0(allow from anywhere). Keep strong credentials and store them only in the host's environment variables β never in the repo. - Your code is on GitHub (e.g.
github.com/KRISHNA-24BCS127/Teamup).
- Push this repository to GitHub.
- Create an account at render.com β New β Web Service β connect the repo
(or use New β Blueprint with the included
render.yaml). - Configure the service:
- Build command:
npm install - Start command:
npm start - Environment variables:
MONGODB_URI= your Atlas connection string, e.g.mongodb+srv://<user>:<password>@<cluster>.mongodb.net/<dbname>?appName=<app>CORS_ORIGIN= your deployed URL, e.g.https://teamup.onrender.com
- Build command:
- Deploy. Render gives you a public
https://your-service.onrender.comURL.
Procfileandrender.yamlare included so the platform knows how to run the app.
- Never commit
.envoratlas-credentials.env. They are git-ignored..env.exampleis the safe template β fill in your real values only in the host's secret store. - The server now serves only the
public/folder as static assets. This prevents exposing source files,server.js, or credentials that the oldexpress.static(__dirname)setup leaked. - CORS is restricted to the domains in
CORS_ORIGIN. Leave it unset for same-origin use. - For real production auth you should replace the demo SHA-256 password hashing with bcrypt/argon2
and stored uploaded resumes in cloud storage (the current
uploads/disk storage is wiped on every redeploy and is only suitable for parsing temp files).
Teamup/
βββ models/ # Mongoose schemas & data models
β βββ User.js
β βββ Teammate.js
β βββ Session.js
βββ routes/ # Route modules
β βββ resume.js
βββ scripts/ # Utilities & seeders
β βββ seedData.js
β βββ seed.js
βββ utils/ # Shared helpers
β βββ parser.js
βββ uploads/ # Temporary upload storage (.gitkeep only)
βββ server.js # Application server & API controller
βββ public/ # Static frontend served by Express (HTML/CSS/JS/images)
βββ Procfile # Platform start command (node server.js)
βββ render.yaml # Render blueprint for deployment
We warmly welcome contributions! Please read our Contributing Guide and the Style Guide before getting started.
- π Found a bug? Open an issue using the bug report template.
- β¨ Have an idea? Start a discussion or submit a feature request.
- π Security issue? Follow SECURITY.md β do not open a public issue.
Be respectful β see our Code of Conduct.
Teamup was built collaboratively by a 3-member team. See AUTHORS.md for full credits:
- Basant Gautam β Full-Stack & API Architecture Β· @basant-gautam
- Krishna Rai β ML & Resume Intelligence Engine Β· @KRISHNA-24BCS127
- Kushagra Gupta β Algorithm Design & Systems Β· @Kushagra-Gupta
Teamup is free and open-source software distributed under the GNU Affero General Public License v3.0 (AGPL-3.0).
This is a strong copyleft license: you are free to use, study, share, and modify the software, but any derivative works β including applications made available over a network β must also be released under the AGPL, with the full corresponding source code made available to users.
For the complete terms, see the LICENSE file.
Built with π by the Teamformers for hackathon builders everywhere.
β Star this repo Β· π΄ Fork it Β· π Contribute