Files

69 lines
4.1 KiB
Markdown

## Why
Engineering managers juggling 10-15 developers across 10-12 concurrent projects currently use error-prone spreadsheets for capacity planning and resource allocation. This leads to billing errors (over/under-allocation), no visibility into team headroom, manual capacity calculations, and no audit trail. The business impact is severe: over-allocation causes client escalations, under-allocation loses revenue, and managers waste 2+ hours monthly on manual allocation work.
## What Changes
- **New web application**: Full-stack resource planning and capacity management system
- **Capacity planning module**: Team member management, holiday/PTO tracking, availability calculations
- **Project management module**: Project lifecycle tracking, approved estimates, forecasted effort distribution
- **Resource allocation module**: Monthly allocation matrix with validation (over/under-allocation detection)
- **Actuals tracking module**: Time logging interface, utilization calculations (running & overall)
- **Reporting module**: 5 core reports (forecast, utilization, cost, allocation, variance) with customizable filters
- **Authentication system**: JWT-based auth with 4 user roles (Superuser, Manager, Developer, Top Brass)
- **Containerized deployment**: Docker Compose setup with Laravel API, SvelteKit frontend, PostgreSQL, Redis
## Capabilities
### New Capabilities
- `team-member-management`: CRUD operations for team members with role, hourly rate, and active status tracking
- `capacity-planning`: Calculate individual and team capacity based on availability, holidays, PTO, and working days
- `project-lifecycle`: Manage projects through state machine (Initial → Estimates → Approved → Funded → In-Progress → Done) with approved estimates and forecasted effort
- `resource-allocation`: Allocate hours per person per project per month with validation against capacity and approved estimates
- `allocation-validation`: Detect and flag over/under-allocation (RED for >100%, YELLOW for <100%, GREEN for 100%)
- `actuals-tracking`: Log hours worked per project per person per month (manual entry, monthly aggregate)
- `utilization-calculations`: Calculate running utilization (YTD) and overall utilization (monthly) as percentage of capacity
- `forecast-reporting`: Multi-period forecast reports showing allocations, revenue, and variance by project/team/person
- `utilization-reporting`: Team and individual utilization trends with customizable date range and filters
- `cost-reporting`: Revenue forecasts based on allocations multiplied by hourly rates, filterable by project/client/team
- `allocation-reporting`: Monthly allocation matrix view showing who's allocated to what with utilization percentages
- `variance-reporting`: Planned vs actual analysis showing over/under-delivery by project and person
- `role-based-access`: Enforce permissions for 4 personas (Superuser, Manager, Developer, Top Brass) with different read/write access
- `master-data-management`: Configure roles, project statuses, project types, and availability options
- `authentication`: JWT-based token authentication with login, logout, and token refresh
### Modified Capabilities
<!-- No existing capabilities are being modified - this is a greenfield project -->
## Impact
**New Systems:**
- Laravel 12 (latest) API (backend container, port 3000)
- SvelteKit web app (frontend container, port 5173)
- PostgreSQL (latest) database (data container, port 5432)
- Redis (latest) cache (cache container, port 6379)
- Docker Compose orchestration
- Nginx Proxy Manager routing (`/api/*` → Laravel, `/*` → SvelteKit)
**Dependencies:**
- PHP 8.4 (latest) with Laravel 12 (latest) framework
- Node (latest) with SvelteKit (latest)
- Tailwind CSS + DaisyUI (UI components)
- Recharts (visualizations)
- TanStack Table (data grids)
- Superforms + Zod (form validation)
- Laravel Scribe (SwaggerUI API documentation)
- Testing: PHPUnit, Pest, Vitest, Playwright
**External Integrations:**
- None for MVP (manual data entry only)
**Breaking Changes:**
- None (new system)
**Migration Path:**
- Greenfield project - no data migration needed
- Users will transition from spreadsheets to web application