# Migration Plan: Blade Templates to Vue Components ## Overview This document outlines the migration from Blade templates to Vue 3 components for the BukidBountyApp project. --- ## Already Migrated Templates (Excluded from this plan) | Template | Destination | |----------|-------------| | `home.blade.php` | `Pages/Home.vue` | | `list_product.blade.php` | `Pages/Market/ListProductsMarket.vue` | | `list_store.blade.php` | `Pages/Market/ListStoreMarket.vue` | --- ## Remaining Blade Templates to Migrate ### Category 1: Core Photos (2 templates) | Template | Functionality | Notes | |----------|---------------|-------| | `view_photo_admin.blade.php` | Photo view with admin controls | Simple display, use Vue component structure | | `view_photo_admin_advanced.blade.php` | Advanced photo view | Similar to above | **Status:** Pending --- ### Category 2: Market Shared (4 templates) | Template | Functionality | Dependencies | |----------|---------------|--------------| | `buy_view_product_market.blade.php` | Product buying view with images, description, quantity | Already migrated - use existing Vue component | | `create_store_market.blade.php` | Store creation form with photo upload | New store Pinia store needed | | `edit_store_market.blade.php` | Store editing form | Existing store data loading | **Status:** Pending (some already have Vue equivalents) --- ### Category 3: User Shared Admin (3 templates) | Template | Functionality | Notes | |----------|---------------|-------| | `view_buy_product_admin.blade.php` | Product view from admin perspective | Use existing product component pattern | **Status:** Pending --- ### Category 4: User Shared AdminAdvanced (9 templates) | Template | Functionality | Dependencies | |----------|---------------|--------------| | `create_user.blade.php` | Create new user form with role selection | User Pinia store needed | | `edit_user.blade.php` | Edit existing user profile | User Pinia store needed | | `view_store_market.blade.php` | Store market view page | Already migrated | | `manage_product_admin.blade.php` | Product management card view | ViewBuilder → Vue reactivity | | `edit_product_ultimate.blade.php` | Product edit form (categories, subcategories) | Category API calls | | `edit_store_ultimate.blade.php` | Store edit with owner selection | User list dropdown | | `remove_product_from_store_admin.blade.php` | Remove product from store | Confirmation dialog needed | | `manage_global_transactions.blade.php` | Transaction history table | DataTables → Vue table | **Status:** Pending --- ### Category 5: User Shared All (2 templates) | Template | Functionality | Notes | |----------|---------------|-------| | `account_settings.blade.php` | User profile display | Simple HTML structure, convert to Vue component | | `transfermycredit.blade.php` | Credit transfer form with modals | Use Pinia store for state | **Status:** Pending --- ### Category 6: User Ultimate (4 templates) | Template | Functionality | Dependencies | |----------|---------------|--------------| | `home.blade.php` | Ultimate home page menu | Already migrated | | `ultimatefunction.blade.php` | Navigation menu with service buttons | Use Vue component array | | `userlist.blade.php` | Child users table with DataTables | API endpoint: /admin/users/list | | `usermodify.blade.php` | User management (enable/disable, roles, notes) | Multiple admin endpoints | **Status:** Pending --- ## Pinia Stores Required ### Existing Store - **`stores/network.js`** - Network status and loading states ✅ ### New Stores to Create #### 1. `stores/product.js` ```javascript export const useProductStore = defineStore('product', { state: () => ({ products: [], currentProduct: null, categories: [], subcategories: [] }), actions: { async fetchProducts() { ... }, async fetchProductById(id) { ... }, async updateProduct(data) { ... } } }) ``` #### 2. `stores/store.js` ```javascript export const useStoreStore = defineStore('store', { state: () => ({ stores: [], currentStore: null, storeProducts: [] }), actions: { async fetchStores() { ... }, async createStore(data) { ... } } }) ``` #### 3. `stores/user.js` ```javascript export const useUserStore = defineStore('user', { state: () => ({ users: [], currentUser: null, roles: [] }), actions: { async fetchUsers() { ... }, async updateUser(data) { ... } } }) ``` --- ## Vue Component Patterns to Follow ### Navigation ```vue ``` ### Modals ```vue ``` ### API Calls (using axios) ```javascript import axios from 'axios' const response = await axios.post('/api/endpoint', data) ``` --- ## Migration Priority Order ### Phase 1: High Priority (Core Features) 1. `create_user.blade.php` - User creation (admin feature) 2. `edit_product_ultimate.blade.php` - Product editing 3. `remove_product_from_store_admin.blade.php` - Product removal 4. `transfermycredit.blade.php` - Credit transfer ### Phase 2: Medium Priority 5. `account_settings.blade.php` - User settings 6. `manage_global_transactions.blade.php` - Transaction history 7. `userlist.blade.php` - User listing ### Phase 3: Lower Priority 8. All admin advanced templates (9 files) 9. Core photo templates (2 files) --- ## Implementation Steps 1. Create Pinia stores for products, stores, and users 2. Convert each Blade template following Vue component structure: - `