feat: Reinitialize frontend with SvelteKit and TypeScript

- Delete old Vite+Svelte frontend
- Initialize new SvelteKit project with TypeScript
- Configure Tailwind CSS v4 + DaisyUI
- Implement JWT authentication with auto-refresh
- Create login page with form validation (Zod)
- Add protected route guards
- Update Docker configuration for single-stage build
- Add E2E tests with Playwright (6/11 passing)
- Fix Svelte 5 reactivity with $state() runes

Known issues:
- 5 E2E tests failing (timing/async issues)
- Token refresh implementation needs debugging
- Validation error display timing
This commit is contained in:
2026-02-17 16:19:59 -05:00
parent 54df6018f5
commit f935754df4
120 changed files with 21772 additions and 90 deletions

View File

@@ -0,0 +1,103 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class ProjectStatusSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$statuses = [
[
'name' => 'Pre-sales',
'order' => 1,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'SOW Approval',
'order' => 2,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Estimation',
'order' => 3,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Estimate Approved',
'order' => 4,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Resource Allocation',
'order' => 5,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Sprint 0',
'order' => 6,
'is_active' => true,
'is_billable' => false,
],
[
'name' => 'In Progress',
'order' => 7,
'is_active' => true,
'is_billable' => true,
],
[
'name' => 'UAT',
'order' => 8,
'is_active' => true,
'is_billable' => true,
],
[
'name' => 'Handover / Sign-off',
'order' => 9,
'is_active' => true,
'is_billable' => true,
],
[
'name' => 'Estimate Rework',
'order' => 10,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'On Hold',
'order' => 11,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Cancelled',
'order' => 12,
'is_active' => false,
'is_billable' => false,
],
[
'name' => 'Closed',
'order' => 13,
'is_active' => false,
'is_billable' => false,
],
];
foreach ($statuses as $status) {
DB::table('project_statuses')->updateOrInsert(
['name' => $status['name']],
$status
);
}
}
}