Skip to content

🀝 Teamup

Discover the perfect project teammate, powered by automated resume parsing and smart skill matching.

AGPL-3.0 License Node.js Express.js MongoDB PRs Welcome

A full-stack collaboration platform that pairs hackathon builders and project creators based on automated resume parsing, GitHub repository analysis, and skill-compatibility matching.


✨ Features

  • πŸ“„ Automated Resume Parsing β€” extracts skills, projects, and achievements from PDF & DOCX using pdf-parse and mammoth with 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.

πŸ› οΈ Tech Stack

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

🧩 Architecture

Client (HTML/JS)  ──HTTP──▢  Express API (server.js)
                                 β”‚
                                 β”œβ”€β”€β–Ά MongoDB (Atlas)
                                 └──▢ In-Memory Store (fallback)

πŸš€ Quickstart

Prerequisites

1. Clone

git clone https://github.com/KRISHNA-24BCS127/Teamup.git
cd Teamup

2. Install dependencies

npm install

3. Configure environment (optional)

cp .env.example .env

If MONGODB_URI is omitted, the app automatically boots in zero-config in-memory mode.

4. Run

npm start        # production
npm run dev      # development with auto-reload (nodemon)

5. Use it

Open http://localhost:5000 in your browser.

Demo login:

  • Email: test@example.com
  • Password: password123

Scripts

Command Description
npm start Run the server in production mode
npm run dev Run with nodemon auto-reload

πŸ“‘ API Reference

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"] } ] }

🌍 Deploying for Production

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.

Prerequisites

  1. 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.
  2. Your code is on GitHub (e.g. github.com/KRISHNA-24BCS127/Teamup).

Deploy on Render (recommended)

  1. Push this repository to GitHub.
  2. Create an account at render.com β†’ New β†’ Web Service β†’ connect the repo (or use New β†’ Blueprint with the included render.yaml).
  3. 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
  4. Deploy. Render gives you a public https://your-service.onrender.com URL.

Procfile and render.yaml are included so the platform knows how to run the app.

πŸ›‘οΈ Production security notes

  • Never commit .env or atlas-credentials.env. They are git-ignored. .env.example is 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 old express.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).

πŸ“ Project Structure

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

🀝 Contributing

We warmly welcome contributions! Please read our Contributing Guide and the Style Guide before getting started.

Be respectful β€” see our Code of Conduct.


πŸ‘₯ Authors

Teamup was built collaboratively by a 3-member team. See AUTHORS.md for full credits:


βš–οΈ License

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

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages