added epic and stories for potential clients
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# Epic 15: Potential Clients Management
|
||||
|
||||
## Epic Goal
|
||||
|
||||
Provide the admin with a simple lead tracking system to manage prospective clients (individuals, companies, agencies) who don't yet have accounts, enabling better organization of business development targets.
|
||||
|
||||
## Epic Description
|
||||
|
||||
### Existing System Context
|
||||
|
||||
- **Current functionality:** User management system supports admin, individual clients, and company clients with full account capabilities
|
||||
- **Technology stack:** Laravel 12, Livewire 3/Volt, Flux UI, existing admin dashboard patterns
|
||||
- **Integration points:** Admin dashboard navigation, existing list/filter patterns from client management
|
||||
- **Current constraint:** No system for tracking prospects without creating full user accounts
|
||||
|
||||
### Enhancement Details
|
||||
|
||||
**What's being added:**
|
||||
- New `PotentialClient` model and database table (completely separate from `users`)
|
||||
- New enum `PotentialClientType` with values: individual, company, agency
|
||||
- Admin-only CRUD interface at `/admin/potential-clients`
|
||||
- Filterable list view by client type
|
||||
- Contact information storage (all optional): phone, email, address, social media, website
|
||||
- Notes field for admin remarks
|
||||
|
||||
**How it integrates:**
|
||||
- New menu item in admin sidebar navigation
|
||||
- Follows existing admin interface patterns (Volt components, Flux UI)
|
||||
- Standalone feature - no impact on existing user/client functionality
|
||||
- Uses existing admin middleware and layout
|
||||
|
||||
**Success criteria:**
|
||||
- Admin can create, view, edit, and delete potential clients
|
||||
- Admin can filter list by type (individual, company, agency)
|
||||
- All contact fields are optional (flexible data entry)
|
||||
- Interface matches existing admin dashboard aesthetics
|
||||
- Bilingual support (Arabic/English)
|
||||
|
||||
---
|
||||
|
||||
## Stories
|
||||
|
||||
### Story 15.1: Database Schema & Model Setup
|
||||
Create the `potential_clients` database table, `PotentialClient` model, `PotentialClientType` enum, and factory for testing.
|
||||
|
||||
### Story 15.2: Potential Clients List with Type Filter
|
||||
Create the admin list view at `/admin/potential-clients` with type filtering and pagination.
|
||||
|
||||
### Story 15.3: CRUD Operations for Potential Clients
|
||||
Implement create, view, edit, and delete functionality for potential clients.
|
||||
|
||||
---
|
||||
|
||||
## Compatibility Requirements
|
||||
|
||||
- [x] Existing user/client system remains unchanged
|
||||
- [x] Existing APIs remain unchanged
|
||||
- [x] No changes to existing database tables
|
||||
- [x] UI follows existing admin dashboard patterns (Flux UI, Volt)
|
||||
- [x] No impact on client-facing functionality
|
||||
|
||||
## Technical Considerations
|
||||
|
||||
### Database Schema
|
||||
|
||||
```
|
||||
potential_clients table:
|
||||
- id: bigint (primary key)
|
||||
- type: varchar (enum: individual, company, agency)
|
||||
- name: varchar(255) NULLABLE
|
||||
- phone: varchar(50) NULLABLE
|
||||
- email: varchar(255) NULLABLE
|
||||
- address: text NULLABLE
|
||||
- social_media: varchar(255) NULLABLE
|
||||
- website: varchar(255) NULLABLE
|
||||
- notes: text NULLABLE
|
||||
- created_at: timestamp
|
||||
- updated_at: timestamp
|
||||
```
|
||||
|
||||
### New Enum
|
||||
|
||||
```php
|
||||
// App\Enums\PotentialClientType
|
||||
enum PotentialClientType: string
|
||||
{
|
||||
case Individual = 'individual';
|
||||
case Company = 'company';
|
||||
case Agency = 'agency';
|
||||
}
|
||||
```
|
||||
|
||||
### Routes
|
||||
|
||||
```php
|
||||
// Admin routes (admin middleware)
|
||||
Route::prefix('admin/potential-clients')->group(function () {
|
||||
Route::get('/', PotentialClientsList::class)->name('admin.potential-clients.index');
|
||||
Route::get('/create', PotentialClientCreate::class)->name('admin.potential-clients.create');
|
||||
Route::get('/{potentialClient}', PotentialClientShow::class)->name('admin.potential-clients.show');
|
||||
Route::get('/{potentialClient}/edit', PotentialClientEdit::class)->name('admin.potential-clients.edit');
|
||||
});
|
||||
```
|
||||
|
||||
### Translation Keys
|
||||
|
||||
```php
|
||||
// potential-clients translations needed
|
||||
'potential_clients' => 'Potential Clients' / 'العملاء المحتملون'
|
||||
'type' => 'Type' / 'النوع'
|
||||
'individual' => 'Individual' / 'فرد'
|
||||
'company' => 'Company' / 'شركة'
|
||||
'agency' => 'Agency' / 'وكالة'
|
||||
// ... additional field labels
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Risk Mitigation
|
||||
|
||||
- **Primary Risk:** Feature scope creep (adding status tracking, conversion flow, etc.)
|
||||
- **Mitigation:** Strict adherence to simple contact list requirements; defer enhancements to future epics
|
||||
- **Rollback Plan:** Drop `potential_clients` table and remove routes/components
|
||||
|
||||
## Definition of Done
|
||||
|
||||
- [ ] All stories completed with acceptance criteria met
|
||||
- [ ] Tests cover CRUD operations and filtering
|
||||
- [ ] Admin can manage potential clients through new interface
|
||||
- [ ] No regression in existing features
|
||||
- [ ] Bilingual support (Arabic/English) for all UI elements
|
||||
- [ ] Admin navigation updated with new menu item
|
||||
+5
-1
@@ -30,8 +30,10 @@ This document provides an index of all epics for the Libra Law Firm platform dev
|
||||
| 11 | [Guest Booking](./epic-11-guest-booking.md) | 4 | High | Epic 3 |
|
||||
| 12 | [Branding Refresh - Logo & Colors](./epic-12-branding-refresh.md) | 6 | High | Epic 9, 10 |
|
||||
| 13 | [Auth Page Design Enhancement](./epic-13-auth-page-design.md) | 5 | Medium | Epic 12 |
|
||||
| 14 | [Home Page Redesign](./epic-14-home-page-redesign.md) | 6 | Medium | Epic 12 |
|
||||
| 15 | [Potential Clients Management](./epic-15-potential-clients.md) | 3 | Medium | Epic 6 |
|
||||
|
||||
**Total Stories:** 83
|
||||
**Total Stories:** 92
|
||||
|
||||
---
|
||||
|
||||
@@ -71,6 +73,7 @@ Epic 1 (Core Foundation)
|
||||
│ │ └── Epic 11 (Guest Booking)
|
||||
│ └── Epic 4 (Timeline)
|
||||
│ └── Epic 6 (Admin Dashboard)
|
||||
│ │ └── Epic 15 (Potential Clients)
|
||||
│ └── Epic 7 (Client Dashboard)
|
||||
│ └── Epic 8 (Email)
|
||||
├── Epic 5 (Posts)
|
||||
@@ -78,6 +81,7 @@ Epic 1 (Core Foundation)
|
||||
└── Epic 10 (Brand Color Refresh)
|
||||
└── Epic 12 (Branding Refresh)
|
||||
└── Epic 13 (Auth Page Design)
|
||||
└── Epic 14 (Home Page Redesign)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user