Laboratory Information Management System for quality control and sample tracking.
- Sample Registration: Create and register new samples with unique codes
- Barcode Integration: Generate barcodes and QR codes for sample tracking
- Status Tracking: Monitor sample lifecycle (Registered → In Progress → Completed → Archived)
- Metadata Support: Store additional sample information in JSON format
- Client Management: Assign samples to clients and projects
- Method Assignment: Link samples to specific analytical methods
- Measurement Planning: Schedule and assign measurements to laboratory staff
- Progress Tracking: Monitor measurement status in real-time
- Quality Control: Built-in QC checkpoints and validation
- Dynamic Forms: Auto-generated forms based on method schema
- Data Validation: Type checking and range validation
- Multi-step Approval: Draft → Submit → Review → Approve/Reject
- Audit Trail: Complete change tracking with JSON diffs
- Result Locking: Prevent unauthorized modifications
- Admin: Full system access and user management
- Manager: Sample and measurement planning, report generation
- Laborant: Sample processing and result entry
- QC/Reviewer: Result review and approval
- Client: View reports and sample status
- Real-time Reports: Generate COA, certificates, analysis reports
- Export Options: PDF, Excel, CSV formats
- Custom Templates: Configurable report layouts
- Audit Logs: Complete activity tracking
- Backend: Laravel 12.53.0, PHP 8.2.30
- Frontend: Blade templates, Bootstrap 5, JavaScript
- Database: MySQL with optimized indexes
- Authentication: Laravel Sanctum with Spatie Permissions
- Security: CSRF protection, input validation, role-based access
| Status | Description | Color |
|---|---|---|
| REGISTERED | Sample registered in system | Primary |
| IN_PROGRESS | Sample being processed | Warning |
| COMPLETED | Analysis completed | Success |
| ARCHIVED | Sample archived | Secondary |
| DISPOSED | Sample disposed | Dark |
- Sample Registration → Generate unique sample code
- Method Assignment → Link to analytical method
- Measurement Planning → Assign to laboratory staff
- Sample Processing → Perform analysis
- Result Entry → Input measurement results
- Quality Review → QC approval process
- Report Generation → Create final report
- Full system access
- User management
- Method configuration
- System settings
- All reports and exports
- Create and manage samples
- Plan measurements
- Assign staff
- Generate reports
- View audit logs
- Process assigned samples
- Enter measurement results
- Update sample status
- View assigned work
- Review measurement results
- Approve or reject results
- Lock approved results
- Generate quality reports
- View sample status
- Download reports
- Track sample progress
- View basic analytics
- Navigate to
http://localhost:8000 - Enter your credentials:
- Laborant:
lab@test.com - QC/Reviewer:
qc@test.com - Manager:
manager@test.com - Admin:
admin@test.com
- Laborant:
- Click Samples in navigation menu
- Click Create Sample button
- Fill sample information:
- Sample name and type
- Client and project
- Quantity and unit
- Methods
- Click Submit
- System generates unique sample code (e.g.,
S-2026-0001)
- Click Create Measurements button
- Select created sample from list
- Choose analytical methods from dropdown
- Set planned date and priority
- Click Save
- Go to Reports section
- Select completed samples
- Select completed projects
- Click Generate and download
- Navigate to Methods section
- Create analytical methods with field definitions
- Set validation rules and requirements
- Publish methods for use
Sample Registration → Method Assignment → Measurement Planning →
Sample Processing → Result Entry → Quality Review → Report Generation
Draft → Submit → Review → Approve/Reject → Lock → Report
- Samples: Primary entities with unique codes
- Measurements: Analysis tasks linked to samples
- Results: Measurement data with validation
- Methods: Analytical procedures with schema definitions
- Users: System users with role-based permissions
- Clients: Organizations that submit samples
- Projects: Groupings of related samples
- Client → Projects → Samples → Measurements → Results
- User ↔ Measurements (assignments)
- Method ↔ Results (schema validation)
- Role-Based Access Control: Granular permissions system
- Audit Trail: Complete activity logging
- Data Validation: Input sanitization and type checking
- Session Management: Secure authentication
- CSRF Protection: Form security tokens
- PHP 8.2+
- MySQL 8.0+
- Composer
- Node.js (for assets)
git clone <repository>
cd samplelab
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed- Configure database in
.env - Set application timezone
- Configure mail settings
- Run migrations and seeders
php artisan serveAccess at: http://localhost:8000
- Login:
POST /api/login - Logout:
POST /api/logout - User:
GET /api/user
- List:
GET /api/samples - Create:
POST /api/samples - Update:
PUT /api/samples/{id} - Delete:
DELETE /api/samples/{id}
- List:
GET /api/measurements - Create:
POST /api/measurements - Update:
PUT /api/measurements/{id}
- List:
GET /api/results - Update:
PUT /api/results/{id} - Submit:
POST /api/results/{id}/submit
# Run all tests
php artisan test
# Run specific test
php artisan test --filter ResultWorkflowTest
# Generate coverage report
php artisan test --coverage










