One command for all your projects. No matter the stack.
Stop wasting time remembering if it's
gradle build,mvn package, ornpm run build. Just usepm build.
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 statusResult:
- β° 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
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 unpushedResult:
- β 5 seconds per command
- β No thinking required
- β Work from anywhere
- β Never forget configurations
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
β
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
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
Monday morning, same 3 APIs:
pm run user-service
pm run product-service
pm run order-serviceTime: 15 seconds
Mental load: Zero
Error risk: None
Setup time: 5 minutes (one time)
Time saved: Every single day
- π 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
- Java 17 or higher (recommended: Java 21 LTS)
- Maven 3.6 or higher
- Git (optional, for repository information)
# 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 versionSetup time: 5 minutes
Benefits: Forever
| 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 |
# 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-apiExample 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
| 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.
Stop setting environment variables manually every time. Configure once, use forever.
API with configurable port:
pm add my-api --path ~/my-api --env "PORT=8080,HOST=localhost"
pm run my-api # Automatically uses PORT=8080Project with API keys:
pm add backend --path ~/backend --env "API_KEY=abc123,DB_HOST=localhost,DEBUG=true"
pm run backend # All variables availableJava 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- Register once with variables
- Variables saved in configuration
- Automatically injected when you run
pm build,pm run, orpm test - View anytime with
pm info
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
| 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
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
Projects are saved in:
- Windows:
C:\Users\User\.projectmanager\projects.json - Linux/Mac:
~/.projectmanager/projects.json
Manual editing supported (advanced users only)
- 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
- Command aliases for long project names
-
pm envcommand to manage variables from CLI - Pre- / post-command hooks
- Unit tests
-
scancommand to detect @Command annotations
Contributions are welcome! Please:
- Fork the project
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE file for details.
We take bugs seriously! If you encounter a problem:
- Check existing issues: Open Issues
- 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 versionoutput- 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
Have an idea to improve ProjectManager? We'd love to hear it!
SoftDryzz
- GitHub: @SoftDryzz
β If ProjectManager saves you time, give it a star on GitHub!
π¬ Questions? Open an issue or check the User Guide