smmahfujurrahman/projectplangenerator
Composer 安装命令:
composer require smmahfujurrahman/projectplangenerator
包简介
A lightweight Laravel package for project planning with localStorage - no database required. Professional PDF import/export for seamless project syncing.
关键字:
README 文档
README
A lightweight Laravel package for project planning and tracking with NO DATABASE REQUIRED! All data is stored in the browser's localStorage, making it perfect for quick project management without database overhead. Features professional PDF import/export for seamless project syncing.
🎯 Key Features
- � No Database Required: All data stored in browser localStorage
- �📊 Project Management: Create, track, and manage multiple projects
- 🎯 Module & Sub-Module System: Hierarchical task organization
- 📈 Progress Tracking: Real-time completion percentage calculations
- 📅 Timeline Management: Track start dates, due dates, and completion times
- 💰 Budget Tracking: Monitor project and module budgets
- 📄 PDF Import/Export: Upload PDF to sync projects, download professional PDF reports
- 🎨 Beautiful UI: Professional dashboard with Tailwind CSS
- 📊 Statistics & Charts: Visual progress tracking with Chart.js
- ⚙️ Fully Configurable: Control everything from Laravel config file
- � Zero Dependencies: No migrations, no database tables
Requirements
- PHP 8.1 or higher
- Laravel 10.x or ^11.x
Installation
Step 1: Install via Composer
composer require smmahfujurrahman/projectplangenerator
Alternative (install from main branch):
composer require smmahfujurrahman/projectplangenerator:dev-main
Step 2: Publish Assets & Configuration
Publish all package files (config and assets) in one command:
php artisan projectplanner:publish
Or use with --force to overwrite existing files:
php artisan projectplanner:publish --force
This single command will publish:
- Configuration file to
config/projectplanner.php - Assets (CSS, JS) to
public/vendor/projectplanner/ - Views are served directly from the package (no publishing needed!)
Alternative: Publish Individually
If you prefer to publish specific parts:
# Publish only configuration php artisan vendor:publish --tag=projectplanner-config # Publish only assets (CSS, JS) php artisan vendor:publish --tag=projectplanner-assets # Publish everything php artisan vendor:publish --provider="SMMahfujurRahman\ProjectPlanGenerator\ProjectPlanGeneratorServiceProvider"
That's it! No migrations needed!
Usage
Available Commands
# Publish all package files at once (recommended) php artisan projectplanner:publish # Publish with force (overwrite existing files) php artisan projectplanner:publish --force # Individual publishing (optional) php artisan vendor:publish --tag=projectplanner-config php artisan vendor:publish --tag=projectplanner-assets
Note: Views are automatically served from the package and don't need to be published.
Accessing the Dashboard
After installation, access the project planner at:
http://yourapp.test/project-planner
Or whatever route prefix you configure.
Configuration
Edit config/projectplanner.php to customize the package:
return [ // Enable/disable the entire package 'enabled' => env('PROJECT_PLANNER_ENABLED', true), // Route configuration 'route' => [ 'enabled' => env('PROJECT_PLANNER_ROUTE_ENABLED', true), 'prefix' => env('PROJECT_PLANNER_PREFIX', 'project-planner'), 'middleware' => ['web'], // Add 'auth' for authentication ], // Web path for assets 'web_path' => env('PROJECT_PLANNER_WEB_PATH', '/project-planner'), // Import/Export settings 'import_export' => [ 'pdf' => [ 'enabled' => true, 'download' => true, 'upload' => true, ], ], // Feature flags - control what users can do 'features' => [ 'create_project' => true, 'edit_project' => true, 'delete_project' => true, 'export_pdf' => true, 'import_data' => true, 'statistics' => true, 'charts' => true, ], ];
Environment Variables
Add these to your .env file for quick configuration:
PROJECT_PLANNER_ENABLED=true PROJECT_PLANNER_ROUTE_ENABLED=true PROJECT_PLANNER_PREFIX=project-planner PROJECT_PLANNER_WEB_PATH=/project-planner PROJECT_PLANNER_APP_NAME="My Project Planner" # Feature Toggles PROJECT_PLANNER_FEATURE_CREATE=true PROJECT_PLANNER_FEATURE_EDIT=true PROJECT_PLANNER_FEATURE_DELETE=true PROJECT_PLANNER_FEATURE_EXPORT_PDF=true PROJECT_PLANNER_FEATURE_IMPORT=true
How It Works
- LocalStorage Only: All project data is stored in the browser's localStorage
- No Database: No migrations, no database tables, no queries
- Import/Export:
- Export your projects to PDF to backup or share
- Professional PDF reports for documentation
- Import PDF to sync projects across browsers or restore backups
- Data Persistence: Data persists until localStorage is cleared
- Everything in Vendor: All logic stays in the package, only config in your Laravel app
Import/Export Workflow
Export PDF
// User clicks "Export PDF" button in the UI // Downloads: ProjectName_Report.pdf (professional formatted report) // Contains: // - Cover Page with project overview // - Executive Summary with timeline, budget, team // - Complete module breakdown with progress bars // - Statistics and completion metrics
Import PDF
// User clicks "Import PDF" button // Uploads PDF file // Parses and creates a new project with all modules and sub-modules // Syncs with existing localStorage data // Preserves all project details, timelines, and status
PDF Preview (Development Tool)
// Access: /project-planner/pdf-preview // Live preview of PDF without downloading // Useful for testing PDF generation and layout // See changes in real-time as you modify projects
Protecting Routes
Add authentication middleware in config:
'route' => [ 'middleware' => ['web', 'auth'], // Require login ],
Disabling Features
Control what users can do:
'features' => [ 'create_project' => false, // Disable project creation 'delete_project' => false, // Disable project deletion 'import_data' => false, // Disable PDF import ],
Changing the Route
'route' => [ 'prefix' => 'my-projects', // Access at /my-projects ],
Custom App Name
'ui' => [ 'app_name' => 'My Company Project Tracker', ],
How Data Storage Works
LocalStorage Structure
{ "project_planner_data": [ { "id": "id_1699999999_abc123", "name": "Website Redesign", "description": "Complete overhaul", "status": "active", "startDate": "2025-10-01", "targetEndDate": "2025-12-15", "budget": 50000, "team": 5, "modules": [...] } ] }
Data Persistence
- Data is saved automatically on every change
- Data persists across page refreshes
- Data is browser-specific (not synced across devices)
- Use PDF export/import to move data between browsers/devices
- Clearing browser data will delete all projects
Advantages
✅ No Database Overhead: Perfect for small teams or demo purposes
✅ Instant Setup: No migrations to run
✅ Fast Performance: Direct browser storage, no server queries
✅ Privacy: Data never leaves the user's browser
✅ Portable: Export/import to move data anywhere
✅ Zero Dependencies: No database tables or relationships
Limitations
⚠️ Single User: Each browser has its own data
⚠️ No Collaboration: Multiple users can't share the same project
⚠️ Storage Limit: Browser localStorage typically limited to 5-10MB
⚠️ Data Loss: Clearing browser data will delete projects
Solution: Use PDF export regularly to backup your data!
Advanced Usage
Views are Automatically Loaded
Views are served directly from the package's vendor directory. You don't need to publish them. Laravel will automatically find them using the projectplanner:: namespace.
Want to customize views? You can override any view by creating the same file structure in your Laravel app:
# To override index.blade.php:
resources/views/vendor/projectplanner/index.blade.php
# To override pdf-preview.blade.php:
resources/views/vendor/projectplanner/pdf-preview.blade.php
Laravel will use your custom view instead of the package's view.
Customizing Assets
After publishing assets, customize CSS/JS in:
public/vendor/projectplanner/css/styles.css
public/vendor/projectplanner/js/app.js
Disabling the Package
PROJECT_PLANNER_ENABLED=false
Or temporarily disable routes:
PROJECT_PLANNER_ROUTE_ENABLED=false
Roadmap
- Enhanced PDF parsing for complex imports
- Team collaboration via database (optional mode)
- Cloud sync option
- Template projects
- Gantt chart view
- Multi-language support
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Contributions are welcome! Please see CONTRIBUTING for details.
Security
If you discover any security issues, please email mahfujurrahman@example.com.
Credits
License
The MIT License (MIT). Please see License File for more information.
Support
- GitHub Issues: Create an issue
- Documentation: Full Documentation
Made with ❤️ by SM Mahfujur Rahman
smmahfujurrahman/projectplangenerator 适用场景与选型建议
smmahfujurrahman/projectplangenerator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「TCPDF」 「laravel」 「localstorage」 「project-management」 「task-management」 「pdf-export」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 smmahfujurrahman/projectplangenerator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 smmahfujurrahman/projectplangenerator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 smmahfujurrahman/projectplangenerator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
TCPDF is a PHP class for generating PDF documents and barcodes.
TCPDI is a PHP class for importing PDF to use with TCPDF
TCPDI is a PHP class for importing PDF to use with TCPDF
Modified version of TCPDF that includes option for setting barcode's bar width
like html5 local storage but for php.
Provides TCPDF integration for Symfony
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-08