libra/docs/stories/story-1.1-project-setup-dat...

3.7 KiB

Story 1.1: Project Setup & Database Schema

Epic Reference

Epic 1: Core Foundation & Infrastructure

User Story

As a developer, I want the Laravel 12 project configured with all required packages and complete database schema, So that the foundation is established for all subsequent feature development.

Story Context

Existing System Integration

  • Integrates with: New project setup (greenfield)
  • Technology: Laravel 12, PHP 8.4, Livewire 3, Volt, Flux UI Free, Tailwind CSS 4
  • Follows pattern: Laravel 12 streamlined file structure
  • Touch points: Database migrations, model factories, development environment

Acceptance Criteria

Functional Requirements

  • Laravel 12 project created with Livewire 3, Volt, Flux UI
  • Tailwind CSS 4 configured with @theme directive
  • Database migrations for all core tables:
    • users (with user_type, national_id, company fields)
    • consultations
    • timelines
    • timeline_updates
    • posts
    • working_hours
    • blocked_times
    • notifications
    • admin_logs
  • Model factories created for testing
  • Development environment working (composer run dev)

Integration Requirements

  • SQLite configured for development database
  • All migrations run without errors
  • Factories generate valid test data
  • Composer and npm scripts functional

Quality Requirements

  • All database tables have proper indexes
  • Foreign key constraints properly defined
  • Factories cover all required fields
  • Development server starts without errors

Technical Notes

  • Database: Use SQLite for development (configurable for MariaDB in production)
  • Reference: PRD Section 16.1 for complete schema details
  • Pattern: Follow existing Volt class-based component pattern
  • Structure: Use Laravel 12 streamlined file structure (no app/Http/Middleware, bootstrap/app.php for config)

Database Schema Reference

users:
  - id, name, email, password, user_type (enum: admin/individual/company)
  - national_id (nullable), company_name (nullable), company_registration (nullable)
  - phone, preferred_language (enum: ar/en), status (enum: active/deactivated)
  - timestamps, email_verified_at

consultations:
  - id, user_id, scheduled_date, scheduled_time, duration (default 45)
  - status (enum: pending/approved/completed/cancelled/no_show)
  - type (enum: free/paid), payment_amount (nullable), payment_status
  - problem_summary, admin_notes, timestamps

timelines:
  - id, user_id, case_name, case_reference (unique nullable)
  - status (enum: active/archived), timestamps

timeline_updates:
  - id, timeline_id, admin_id, update_text, timestamps

posts:
  - id, title_ar, title_en, body_ar, body_en
  - status (enum: draft/published), timestamps

working_hours:
  - id, day_of_week (0-6), start_time, end_time, is_active, timestamps

blocked_times:
  - id, block_date, start_time (nullable), end_time (nullable)
  - reason, timestamps

admin_logs:
  - id, admin_id, action_type, target_type, target_id
  - old_values (json), new_values (json), ip_address, timestamps

Definition of Done

  • All database migrations created and tested
  • All model factories functional
  • Development environment runs with composer run dev
  • Tests pass for model creation using factories
  • Code formatted with Pint
  • No errors on fresh install

Dependencies

  • None (this is the foundation story)

Risk Assessment

  • Primary Risk: Schema design changes required later
  • Mitigation: Follow PRD specifications closely, validate with stakeholder
  • Rollback: Fresh migration reset possible in development

Estimation

Complexity: Medium Estimated Effort: 4-6 hours