Skip to content

zavayu/HackUTD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ProdigyPM - AI-Powered Project Management

ProdigyPM Logo TypeScript React Node.js MongoDB

The Future of Product Management

Blend the structured efficiency of Jira with the elegant UX of Notion, powered by AI to help you build better products, faster.

Features β€’ Quick Start β€’ Documentation β€’ Architecture


🌟 Features

Core Project Management

  • πŸ“‹ Backlog Management - Organize and prioritize user stories with drag-and-drop
  • 🎯 Sprint Planning - Create and manage sprints with velocity tracking
  • πŸ“Š Kanban Board - Visual workflow management with customizable columns
  • πŸ“ˆ Real-time Analytics - Track team performance and project metrics
  • πŸ‘₯ Team Collaboration - Multi-user support with role-based permissions

AI-Powered Capabilities

  • πŸ€– AI Copilot - Intelligent assistant for story generation and planning
  • ✨ Smart Story Generation - Auto-generate user stories with acceptance criteria
  • πŸ’‘ AI Insights - Data-driven recommendations for sprint planning
  • 🎨 Intelligent Prioritization - AI-suggested story prioritization

GitHub Integration

  • πŸ”— Repository Connection - Connect GitHub repos to projects
  • πŸ“Š Real-time Metrics - Track commits, PRs, and code activity
  • πŸ‘¨β€πŸ’» Developer Insights - Monitor team contributions and velocity
  • πŸ”„ Auto-sync - Automatic data synchronization with GitHub

Modern UI/UX

  • 🎨 Beautiful Interface - Clean, modern design with smooth animations
  • πŸŒ“ Dark/Light Mode - Customizable themes with system preference support
  • πŸ“± Responsive Design - Works seamlessly on desktop and mobile
  • ⚑ Fast Performance - Optimized for speed and efficiency

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • MongoDB 4.4+ (local or Atlas)
  • GitHub OAuth App (for GitHub integration)
  • OpenAI API Key (for AI features)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/prodigypm.git
    cd prodigypm
  2. Install dependencies

    # Install backend dependencies
    cd server
    npm install
    
    # Install frontend dependencies
    cd ../client
    npm install
  3. Configure environment variables

    Backend (server/.env):

    # Server
    NODE_ENV=development
    PORT=5000
    
    # Database
    MONGODB_URI=mongodb://localhost:27017/prodigypm
    
    # Authentication
    JWT_SECRET=your-super-secret-jwt-key-change-this
    JWT_EXPIRATION=24h
    ENCRYPTION_KEY=your-32-character-encryption-key
    
    # GitHub OAuth
    GITHUB_CLIENT_ID=your-github-client-id
    GITHUB_CLIENT_SECRET=your-github-client-secret
    GITHUB_CALLBACK_URL=http://localhost:5000/api/auth/github/callback
    
    # OpenAI
    OPENAI_API_KEY=your-openai-api-key
    OPENAI_MODEL=gpt-4o
    
    # Frontend
    FRONTEND_URL=http://localhost:3000

    Frontend (client/.env):

    VITE_API_URL=http://localhost:5000/api
  4. Start the application

    # Terminal 1 - Start backend
    cd server
    npm run dev
    
    # Terminal 2 - Start frontend
    cd client
    npm run dev
  5. Access the application


πŸ“š Documentation

Project Structure

prodigypm/
β”œβ”€β”€ client/                 # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/    # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/         # Page components
β”‚   β”‚   β”œβ”€β”€ views/         # View components (Dashboard, Backlog, etc.)
β”‚   β”‚   β”œβ”€β”€ contexts/      # React contexts
β”‚   β”‚   β”œβ”€β”€ services/      # API services
β”‚   β”‚   β”œβ”€β”€ utils/         # Utility functions
β”‚   β”‚   └── types/         # TypeScript types
β”‚   └── package.json
β”‚
β”œβ”€β”€ server/                # Node.js backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ models/        # MongoDB models
β”‚   β”‚   β”œβ”€β”€ routes/        # API routes
β”‚   β”‚   β”œβ”€β”€ services/      # Business logic
β”‚   β”‚   β”œβ”€β”€ repositories/  # Data access layer
β”‚   β”‚   β”œβ”€β”€ middleware/    # Express middleware
β”‚   β”‚   β”œβ”€β”€ utils/         # Utility functions
β”‚   β”‚   └── config/        # Configuration files
β”‚   └── package.json
β”‚
└── docs/                  # Documentation

Key Technologies

Frontend:

  • React 18 with TypeScript
  • Vite for build tooling
  • TailwindCSS for styling
  • Framer Motion for animations
  • React Router for navigation
  • Recharts for data visualization

Backend:

  • Node.js with Express
  • TypeScript
  • MongoDB with Mongoose
  • Passport.js for authentication
  • OpenAI API for AI features
  • GitHub API for integrations

πŸ—οΈ Architecture

Backend Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     API Layer                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Auth    β”‚ Projects β”‚  Issues  β”‚  GitHub/AI       β”‚ β”‚
β”‚  β”‚  Routes  β”‚  Routes  β”‚  Routes  β”‚  Routes          β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Service Layer                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Business Logic, Validation, External APIs       β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 Repository Layer                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Data Access, MongoDB Operations                 β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    MongoDB Database                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Frontend Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Pages                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Home    β”‚ Projects β”‚ Project  β”‚  Settings        β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Views                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚Dashboard β”‚ Backlog  β”‚  Board   β”‚  Insights        β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Components                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Reusable UI Components, Modals, Forms          β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Contexts & Services                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  State Management, API Calls                     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ” Authentication & Security

User Authentication

  • JWT-based authentication
  • Secure password hashing with bcrypt
  • Token refresh mechanism
  • Session management

GitHub OAuth

  • OAuth 2.0 flow for GitHub integration
  • Secure token storage with encryption
  • Automatic token refresh
  • Scope-based permissions

Data Security

  • AES-256-GCM encryption for sensitive data
  • Environment variable protection
  • CORS configuration
  • Rate limiting on API endpoints

πŸ”— GitHub Integration

Setup

  1. Create GitHub OAuth App

    • Go to GitHub Settings β†’ Developer settings β†’ OAuth Apps
    • Create new OAuth App
    • Set Authorization callback URL: http://localhost:5000/api/auth/github/callback
    • Copy Client ID and Client Secret
  2. Configure Environment

    • Add credentials to server/.env
    • Restart backend server
  3. Connect Repository

    • Navigate to a project
    • Click "Connect GitHub" in top bar
    • Authenticate with GitHub
    • Select repository from dropdown
    • Click "Connect"

Features

  • Real-time commit tracking
  • Pull request monitoring
  • Issue synchronization
  • Developer activity metrics
  • Code contribution insights

πŸ€– AI Features

AI Copilot

  • Natural language story generation
  • Acceptance criteria suggestions
  • Sprint planning assistance
  • Priority recommendations

Configuration

  1. Get OpenAI API key from https://platform.openai.com
  2. Add to server/.env:
    OPENAI_API_KEY=your-key-here
    OPENAI_MODEL=gpt-4o
  3. Restart backend server

Usage

  • Click AI Copilot button in top bar
  • Type natural language requests
  • Review and apply AI suggestions
  • Customize generated content

πŸ“Š API Documentation

Authentication Endpoints

POST   /api/auth/signup              - Create new user account
POST   /api/auth/login               - Login with credentials
GET    /api/auth/me                  - Get current user
GET    /api/auth/github              - Initiate GitHub OAuth
GET    /api/auth/github/callback     - GitHub OAuth callback

Project Endpoints

GET    /api/projects                 - Get all user projects
POST   /api/projects                 - Create new project
GET    /api/projects/:id             - Get project by ID
PUT    /api/projects/:id             - Update project
DELETE /api/projects/:id             - Delete project
POST   /api/projects/:id/members     - Add team member
DELETE /api/projects/:id/members/:userId - Remove member

Issue Endpoints

GET    /api/issues                   - Get all issues
POST   /api/issues                   - Create new issue
GET    /api/issues/:id               - Get issue by ID
PUT    /api/issues/:id               - Update issue
DELETE /api/issues/:id               - Delete issue

GitHub Endpoints

GET    /api/projects/:projectId/github/available-repos  - Get user's GitHub repos
GET    /api/projects/:projectId/github/repos            - Get connected repos
POST   /api/projects/:projectId/github/repos/connect    - Connect repository
DELETE /api/projects/:projectId/github/repos/:id        - Disconnect repository
POST   /api/projects/:projectId/github/repos/:id/sync   - Sync repository data
GET    /api/projects/:projectId/github/repos/:id/data   - Get repository data

πŸ§ͺ Testing

Run Tests

# Backend tests
cd server
npm test

# Frontend tests
cd client
npm test

# E2E tests
npm run test:e2e

Test Coverage

# Generate coverage report
npm run test:coverage

🚒 Deployment

Production Build

# Build frontend
cd client
npm run build

# Build backend
cd server
npm run build

Environment Variables

Ensure all production environment variables are set:

  • Use strong JWT secrets
  • Configure production MongoDB URI
  • Set production frontend URL
  • Use production API keys

Deployment Platforms

Recommended:

  • Frontend: Vercel, Netlify, or AWS S3 + CloudFront
  • Backend: Railway, Render, or AWS EC2
  • Database: MongoDB Atlas

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation
  • Follow existing code style

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Jira - Inspiration for project management features
  • Notion - Inspiration for UI/UX design
  • Linear - Inspiration for modern workflow
  • OpenAI - AI capabilities
  • GitHub - Version control integration

πŸ“§ Support


πŸ—ΊοΈ Roadmap

Q1 2025

  • Mobile app (React Native)
  • Advanced AI features
  • Slack integration
  • Custom workflows

Q2 2025

  • Time tracking
  • Resource management
  • Advanced reporting
  • API webhooks

Q3 2025

  • Jira import/export
  • GitLab integration
  • Custom fields
  • Automation rules

Built with ❀️ by the ProdigyPM Team

Website β€’ Twitter β€’ Discord

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages