# Timebank.cc Library Reference Guide

This document categorizes all packages and libraries used in the Timebank.cc application by importance and customization level.

## Critical Core Libraries
*Essential for application functionality - removing these would break core features*

### Backend (PHP/Laravel)
- **laravel/framework** (^10.0) - Application foundation
- **livewire/livewire** (^3.0) - Reactive UI components, central to frontend architecture
- **laravel/jetstream** (^4.0) - Authentication, teams, profile management
  - *Customized*: `app/Overrides/Laravel/Jetstream/Src/HasProfilePhoto.php` - Modified to handle multiple profile types and default images per profile type
- **laravel/fortify** (^1.21) - Authentication backend for Jetstream
- **laravel/scout** (^10.6) - Search abstraction layer
- **matchish/laravel-scout-elasticsearch** (^7.5) - Elasticsearch integration
  - *Customized*: `app/Overrides/Matchish/ScoutElasticSearch/ElasticSearch/EloquentHitsIteratorAggregate.php` - Modified to merge highlights into search results
- **spatie/laravel-permission** (^6.0) - Role-based access control for multi-profile system

### Frontend
- **alpinejs** (^3.14.3) - Client-side reactivity, used extensively throughout UI
- **tailwindcss** (^3.4.7) - Primary CSS framework
- **@yaireo/tagify** (^4.17.8) - Skill tagging system interface
- **laravel-echo** (^1.19.0) + **pusher-js** (^7.6.0) - Real-time communication foundation

## Important Feature Libraries
*Significant functionality - removing would disable major features*

### Backend
- **laravel/reverb** (@beta) - WebSocket server for real-time messaging
- **namu/wirechat** (^0.2.10) - Chat/messaging system
  - *Customized*: Configured for multi-guard authentication in `config/wirechat.php`
- **cviebrock/eloquent-taggable** (^10.0) - Tagging system backbone
  - *Extended*: Custom `Tag` model with locale support via `TaggableWithLocale` trait
- **cybercog/laravel-love** (^10.0) - Reaction system (stars, bookmarks)
- **mcamara/laravel-localization** (^2.0) - Multi-language routing and localization
- **stevebauman/location** (^6.6) - IP-based location detection
- **spatie/laravel-activitylog** (^4.7) - User activity tracking

### Frontend
- **wireui/wireui** (^2.0) - Pre-built Tailwind components
  - *Customized*: Extensive published views in `resources/views/vendor/wireui/`
- **@tailwindcss/forms** (^0.5.3) - Form styling foundation
- **vite** (^6.3.5) - Modern asset bundling and development server

## Supporting Libraries
*Enhance functionality but not critical for core operations*

### Backend
- **maatwebsite/excel** (^3.1) - Export functionality
- **dompdf/dompdf** (^3.0) - PDF generation
- **spatie/laravel-medialibrary** (^11.0.0) - File upload management
- **robsontenorio/mary** (^1.35) - Additional UI components
- **propaganistas/laravel-phone** (^5.0) - Phone number validation
- **simplesoftwareio/simple-qrcode** (~4) - QR code generation
- **enflow/laravel-social-share** (^3.3) - Social media sharing links generation

### Frontend
- **@fortawesome/fontawesome-free** (^6.2.1) - Icon library
- **datatables.net** (^2.3.2) - Data table functionality
- **bootstrap** (^4.6.2) - Legacy CSS framework (being phased out)
- **dayjs** (^1.11.13) - Date manipulation
- **toastr** (^2.1.4) - Notification system

## Custom Extensions & Helpers

### Custom Helper Classes
- **TimeFormat.php** - Time formatting functions (`tbFormat()`, `dbFormat()`, `hoursAndMinutes()`)
  - Critical for time-based currency display
- **StyleHelper.php** - Tailwind to hex color conversion (`tailwindColorToHex()`)
  - Essential for dynamic color generation
- **SearchOptimizationHelper.php** - Advanced search optimization with location-based boosting
  - Enhances Elasticsearch results with custom scoring
- **ProfileHelper.php**, **AuthHelper.php**, **StringHelper.php** - Core utilities

### Custom Traits
- **SwitchGuardTrait** - Multi-profile authentication switching
- **TaggableWithLocale** - Extends eloquent-taggable for multi-language support
- **HasPresence** - Real-time presence tracking
- **AccountInfoTrait**, **ProfilePermissionTrait** - Profile-specific functionality

## Development & Build Tools

### Build System
- **vite** (^6.3.5) - Modern asset bundling and development server (primary)
- **sass** (^1.56.1) - CSS preprocessing
- **autoprefixer** (^10.4.20) - CSS vendor prefixing

### Development
- **barryvdh/laravel-debugbar** (^3.7) - Development debugging
- **laradumps/laradumps** (^2.2) - Enhanced debugging
- **spatie/laravel-web-tinker** (^1.8) - Browser-based REPL

## Legacy & Migration Dependencies

### Phase-out Candidates
- **bootstrap** (^4.6.2) - Being replaced by Tailwind CSS
- **jquery** (via Bootstrap) - Being replaced by Alpine.js

### Specialized Libraries
- **staudenmeir/*** packages - Advanced Eloquent relationship handling
- **orangehill/iseed** (^3.0) - Database seeding from existing data
- **pear/text_languagedetect** (^1.0) - Automatic language detection

## Configuration Notes

### Excluded from Autoloading
Two vendor classes are excluded and overridden:
- `vendor/laravel/jetstream/src/HasProfilePhoto.php`
- `vendor/matchish/laravel-scout-elasticsearch/src/ElasticSearch/EloquentHitsIteratorAggregate.php`

### Key Customizations
1. **Multi-guard Authentication**: WireChat configured for 4 guard types
2. **Search Enhancement**: Custom search optimization with location boosting
3. **Tagging System**: Extended with locale support and category hierarchies
4. **Profile Photos**: Modified for multiple profile types with different defaults
5. **Time Formatting**: Custom currency formatting for time-based transactions

## Importance for New Features

### Must Understand
- Livewire component architecture
- Multi-profile authentication system
- Tagging and categorization system
- Search optimization patterns

### Can Ignore Initially
- Legacy Bootstrap components
- Excel export functionality
- PDF generation
- QR code features

### Critical for Real-time Features
- Laravel Reverb configuration
- WireChat integration
- Presence tracking system
- Echo/Pusher setup