Skip to content

One command for all your projects. Unified CLI tool that detects project types and standardizes build/run/test commands across Gradle, Maven, Node.js, .NET, and Python.

License

Notifications You must be signed in to change notification settings

SoftDryzz/ProjectManager

Repository files navigation

ProjectManager πŸ› οΈ

Java Maven Status

One command for all your projects. No matter the stack.

Stop wasting time remembering if it's gradle build, mvn package, or npm run build. Just use pm build.

πŸ‡ͺπŸ‡Έ Leer en EspaΓ±ol


🎯 Why ProjectManager?

The Problem You Face Daily

You're a developer with multiple projects:

# Project 1 (Gradle)
cd ~/projects/api-users
gradle build
# Wait... was it gradle or gradlew?

# Project 2 (Maven)
cd ~/projects/backend
mvn clean package
# Or was it mvn install?

# Project 3 (npm)
cd ~/projects/frontend
npm run build
# Need to set PORT=3000... or was it 3001?

# Check git status everywhere
cd ~/projects/api-users && git status
cd ~/projects/backend && git status
cd ~/projects/frontend && git status

Result:

  • ⏰ 30+ minutes wasted daily navigating folders and looking up commands
  • 🧠 Mental overhead remembering different build systems
  • 😫 Context switching between 5+ different projects
  • πŸ› Errors from using wrong commands or configurations

The ProjectManager Way

Same developer, same projects:

# From anywhere, any folder
pm build api-users
pm build backend
pm build frontend

# Run with correct config automatically
pm run api-users    # Uses PORT=3000
pm run backend      # Uses PORT=8080

# Check all git repos instantly
pm info api-users   # Branch: main, 2 modified
pm info backend     # Branch: dev, βœ“ clean
pm info frontend    # Branch: feature/ui, 3 commits unpushed

Result:

  • βœ… 5 seconds per command
  • βœ… No thinking required
  • βœ… Work from anywhere
  • βœ… Never forget configurations

Real Impact

Time saved per week:

  • Command lookups: ~2 hours
  • Folder navigation: ~1 hour
  • Configuration mistakes: ~30 min
  • Git status checking: ~45 min

Total: ~4 hours/week = 16 hours/month = 2 full workdays


Who Benefits Most?

βœ… Full-stack developers - Multiple technologies daily
βœ… Team leads - Standardize commands across team
βœ… Students - Learn new stacks without command confusion
βœ… DevOps engineers - Manage multiple microservices
βœ… Anyone with 3+ projects - Simplify your workflow


⚑ Quick Win Example

Before ProjectManager

Monday morning, 3 APIs to start:

cd ~/work/user-service
cat README.md  # Find instructions
export PORT=3001
export DB_HOST=localhost
mvn spring-boot:run

cd ~/work/product-service
npm install  # Just in case
PORT=3002 npm start

cd ~/work/order-service
# Was this Gradle or Maven?
ls  # Check for pom.xml or build.gradle
gradle bootRun --args='--server.port=3003'

Time: 10-15 minutes (if everything works)
Mental load: High
Error risk: Medium


After ProjectManager

Monday morning, same 3 APIs:

pm run user-service
pm run product-service
pm run order-service

Time: 15 seconds
Mental load: Zero
Error risk: None

Setup time: 5 minutes (one time)
Time saved: Every single day


✨ Features

  • πŸ” Automatic detection - Detects Gradle, Maven, Node.js, .NET, Python automatically
  • 🎯 Unified commands - Same commands for all projects: pm build, pm run, pm test
  • πŸ“¦ Centralized management - All projects in one place, accessible from anywhere
  • ⚑ Fast execution - No folder navigation, instant command execution
  • πŸ’Ύ Persistence - Configuration saved in JSON, survives restarts
  • 🌿 Git integration - See branch, status, and unpushed commits in pm info
  • πŸ”§ Environment variables - Configure per-project variables (PORT, DEBUG, API_KEY, etc)
  • 🌐 Multi-platform - Works on Windows, Linux, and Mac

πŸ“‹ Requirements

  • Java 17 or higher (recommended: Java 21 LTS)
  • Maven 3.6 or higher
  • Git (optional, for repository information)

πŸš€ Quick Installation

# 1. Clone repository
git clone https://github.com/SoftDryzz/ProjectManager.git
cd ProjectManager

# 2. Compile
mvn clean package

# 3. Install (Windows)
.\scripts\install.ps1

# 3. Install (Linux/Mac)
chmod +x scripts/install.sh && ./scripts/install.sh

# 4. Verify
pm version

Setup time: 5 minutes
Benefits: Forever


πŸ’» Usage

Available Commands

Command Description
pm add <name> --path <path> Register a new project
pm add <name> --path <path> --env "KEY=value,..." Register with environment variables
pm list List all projects
pm build <name> Build a project
pm run <name> Run a project
pm test <name> Run tests
pm commands <name> View available commands
pm info <name> View detailed information (including Git status)
pm remove <name> Remove project
pm help Show help
pm version Show version

Examples

# Register a project (automatic detection)
pm add my-api --path ~/projects/my-api

# Register with environment variables
pm add my-api --path ~/projects/my-api --env "PORT=8080,DEBUG=true,API_KEY=secret"

# List all projects
pm list

# Build any project
pm build my-api

# Run with environment variables (automatic)
pm run my-api

# View project info + Git status
pm info my-api

Example output:

Project Information
───────────────────

my-api (Maven)
  Path: /home/user/projects/my-api
  Modified: 5 minutes ago
  Commands: 4
  Environment Variables: 3

  Git:
    Branch: feature/new-endpoint
    Status: 2 modified, 1 untracked
    Unpushed: 3 commits

Available Commands
  build  β†’  mvn package
  run    β†’  mvn exec:java
  test   β†’  mvn test
  clean  β†’  mvn clean

Environment Variables
  PORT    = 8080
  DEBUG   = true
  API_KEY = secret

πŸ—‚οΈ Supported Project Types

Type Detection Files Default Commands
Gradle build.gradle, build.gradle.kts build, run, test, clean
Maven pom.xml package, exec:java, test, clean
Node.js package.json build, start, test
.NET *.csproj, *.fsproj build, run, test
Python requirements.txt (manual configuration)

Can't find your stack? ProjectManager works with any project - just configure commands manually.


πŸ”§ Environment Variables

What Are They For?

Stop setting environment variables manually every time. Configure once, use forever.

Common Use Cases

API with configurable port:

pm add my-api --path ~/my-api --env "PORT=8080,HOST=localhost"
pm run my-api  # Automatically uses PORT=8080

Project with API keys:

pm add backend --path ~/backend --env "API_KEY=abc123,DB_HOST=localhost,DEBUG=true"
pm run backend  # All variables available

Java project with JVM options:

pm add big-project --path ~/big-project --env "MAVEN_OPTS=-Xmx4G -XX:+UseG1GC"
pm build big-project  # Uses 4GB RAM automatically

How It Works

  1. Register once with variables
  2. Variables saved in configuration
  3. Automatically injected when you run pm build, pm run, or pm test
  4. View anytime with pm info

🌿 Git Integration

Know your repository status without leaving your current folder.

What you see in pm info:

  • Current branch - Which branch you're working on
  • Working tree status - Modified, staged, untracked files
  • Unpushed commits - How many commits need to be pushed

Benefits:

  • βœ… Check multiple repos instantly
  • βœ… Never forget to commit/push
  • βœ… See which branch you're on without git status

πŸ”„ How It Compares

Task Without ProjectManager With ProjectManager
Build a project cd folder && gradle build pm build myproject
Run with config cd folder && PORT=8080 mvn exec:java pm run myproject
Check git status cd folder && git status pm info myproject
Switch projects cd ../other && ... pm build other
Remember commands Check docs/README pm commands myproject

vs Other Tools:

  • Make/Task runners: Requires per-project setup, no cross-technology support
  • Shell aliases: Limited functionality, manual per-project configuration
  • IDE: Locked to one editor, no CLI workflow
  • ProjectManager: βœ… Universal, βœ… Portable, βœ… 5-minute setup

πŸ“ Project Structure

ProjectManager/
β”œβ”€β”€ src/main/java/pm/
β”‚   β”œβ”€β”€ ProjectManager.java       # Main class
β”‚   β”œβ”€β”€ core/                     # Models (Project, CommandInfo)
β”‚   β”œβ”€β”€ cli/                      # CLI interface
β”‚   β”œβ”€β”€ detector/                 # Type detection
β”‚   β”œβ”€β”€ executor/                 # Command execution
β”‚   β”œβ”€β”€ storage/                  # JSON persistence
β”‚   └── util/                     # Utilities (Git, Adapters)
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ install.ps1               # Windows installer
β”‚   β”œβ”€β”€ install.sh                # Linux/Mac installer
β”‚   └── INSTALL.md                # Installation guide
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ USER_GUIDE.md             # Complete user guide (English)
β”‚   └── User-Guide_ES.md          # Complete user guide (Spanish)
└── pom.xml

πŸ› οΈ Configuration

Projects are saved in:

  • Windows: C:\Users\User\.projectmanager\projects.json
  • Linux/Mac: ~/.projectmanager/projects.json

Manual editing supported (advanced users only)


🚧 Roadmap

βœ… Completed

  • Project registration system
  • Automatic type detection
  • Commands: add, list, build, run, test, info, remove
  • JSON persistence
  • Multi-platform installers
  • Complete user guide (English + Spanish)
  • Git integration (branch, status, pending commits)
  • GitHub Actions (CI/CD)
  • Environment variables per project

πŸ”¨ Planned

  • Command aliases for long project names
  • pm env command to manage variables from CLI
  • Pre- / post-command hooks
  • Unit tests
  • scan command to detect @Command annotations

🀝 Contributing

Contributions are welcome! Please:

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

πŸ“„ License

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


πŸ› Found a Bug?

We take bugs seriously! If you encounter a problem:

  1. Check existing issues: Open Issues
  2. Report a new bug: Create Bug Report

What to include in your bug report:

  • Clear description of the problem
  • Steps to reproduce
  • Expected vs actual behavior
  • pm version output
  • Operating system
  • Error messages (if any)

Example:

Bug: pm build fails on Windows with spaces in path

Steps:
1. pm add myproject --path "C:\My Projects\test"
2. pm build myproject
3. Error: Path not found

Expected: Build succeeds
Actual: Error with path containing spaces

πŸ’‘ Feature Requests

Have an idea to improve ProjectManager? We'd love to hear it!

Submit Feature Request


πŸ‘€ Author

SoftDryzz


⭐ If ProjectManager saves you time, give it a star on GitHub!

πŸ’¬ Questions? Open an issue or check the User Guide

About

One command for all your projects. Unified CLI tool that detects project types and standardizes build/run/test commands across Gradle, Maven, Node.js, .NET, and Python.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published