Skip to content

ManbirS07/project-collab-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Collab App

A full-stack web platform that connects students to collaborate on projects. Users can create projects, post openings for specific roles, browse and apply to join other teams, and manage their profiles — all in one place.

Table of Contents


Features

  • User Authentication – Register and log in with JWT-based auth (bcrypt password hashing).
  • Project Management – Create, update, and delete projects; only the project owner can modify or delete their project.
  • Openings – Project owners can post role openings (e.g. "Frontend Dev", "ML Engineer") with skill requirements.
  • Applications – Authenticated users can apply to project openings; owners can review and manage applications.
  • Profiles – Users maintain a profile with their skills, college, and bio.
  • Browse & Search – Discover projects by title, description, tags, or domain, with domain filtering.
  • Dashboard – Personal dashboard showing your projects and applications at a glance.

Tech Stack

Layer Technology
Frontend React 18, Vite, Tailwind CSS, TypeScript
Backend NestJS, TypeScript
Database PostgreSQL 16
ORM Prisma
Auth JWT (Passport.js), bcrypt
Containerisation Docker, Docker Compose
CI/CD GitHub Actions

Project Structure

project-collab-app/
├── backend/
│   ├── prisma/               # Prisma schema & migrations
│   └── pro-backend/          # NestJS application
│       └── src/
│           ├── auth/         # JWT strategy, local strategy, guards
│           ├── users/        # User module
│           ├── profiles/     # Profile module
│           ├── projects/     # Projects CRUD
│           ├── openings/     # Project openings
│           └── applications/ # Role applications
├── frontend/
│   └── pro-frontend/         # React + Vite application
│       └── src/
│           ├── pages/        # Route-level page components
│           ├── components/   # Reusable UI components
│           ├── api/          # API client functions
│           ├── context/      # React context providers
│           └── types/        # TypeScript interfaces
├── infra/
│   ├── docker-compose.yml        # Development stack
│   ├── docker-compose.prod.yml   # Production stack
│   └── .env.example              # Environment variable template
└── docs/
    ├── architecture.png
    └── roadmap.md

Getting Started

Prerequisites

Local Development (Docker)

The easiest way to run the full stack locally is with Docker Compose.

  1. Clone the repository

    git clone https://github.com/ManbirS07/project-collab-app.git
    cd project-collab-app
  2. Create the environment file

    cp infra/.env.example infra/.env
    # Edit infra/.env and set a strong JWT_SECRET
  3. Start all services

    cd infra
    docker compose up --build
    Service URL
    Frontend http://localhost:4173
    Backend API http://localhost:3000
    PostgreSQL localhost:5432
  4. Stop the stack

    docker compose down

Running Services Manually

Backend

cd backend/pro-backend

# Install dependencies
npm install

# Generate Prisma client
npx prisma generate --schema ../prisma/schema.prisma

# Run database migrations
npx prisma migrate deploy --schema ../prisma/schema.prisma

# Start in development mode (watch)
npm run start:dev

# Start in production mode
npm run start:prod

Frontend

cd frontend/pro-frontend

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

Environment Variables

Copy infra/.env.example to infra/.env and fill in the values:

Variable Description Default
POSTGRES_USER PostgreSQL username app
POSTGRES_PASSWORD PostgreSQL password app
POSTGRES_DB PostgreSQL database name collab
JWT_SECRET Secret key used to sign JWTs change-me
BACKEND_IMAGE Docker image for the backend (production)
FRONTEND_IMAGE Docker image for the frontend (production)

API Overview

All protected routes require a Bearer <token> header obtained from POST /auth/login.

Method Path Auth Description
POST /auth/register Public Register a new user
POST /auth/login Public Log in and receive a JWT
GET /projects Public List all projects
POST /projects/create JWT Create a new project
GET /projects/:id JWT Get project by ID
PATCH /projects/:id Owner Update a project
DELETE /projects/:id Owner Delete a project
POST /projects/:id/openings Owner Add an opening to a project
GET /projects/:id/openings JWT List openings for a project
GET /projects/:id/applications Owner View applications for a project
GET /projects/:id/memberships JWT View project members

Contributing

  1. Fork the repository and create a feature branch.
  2. Make your changes with clear, descriptive commit messages.
  3. Ensure linting and tests pass locally before opening a pull request.
  4. Open a pull request against main and describe what you changed and why.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages