12 KiB
Unified App Migration Checklist
Track your progress as you implement the unified app.
Phase 1: Project Setup (0.5 days)
Directory Structure
- Create directory structure in root (
/mnt/e/proiecte/roa2web/) - Create
src/subdirectories:src/modules/reports/views/src/modules/reports/stores/src/modules/reports/services/src/modules/data-entry/views/receipts/src/modules/data-entry/components/ocr/src/modules/data-entry/stores/src/modules/data-entry/services/src/shared/components/src/shared/stores/src/shared/styles/src/config/src/router/src/assets/css/
Core Configuration Files
- Create
package.json(merge dependencies from both apps) - Create
vite.config.js(dual proxy + lazy loading) - Create
src/main.js(PrimeVue setup) - Create
.env.example(environment variables) - Create
.gitignore - Create
README.md
Copy Shared Resources
- Copy
shared/frontend/components/→src/shared/components/ - Copy
shared/frontend/stores/→src/shared/stores/ - Copy
shared/frontend/styles/→src/shared/styles/ - Copy
reports-app/frontend/src/assets/css/→src/assets/css/
Verification
- Run
npm install- succeeds - Run
npm run dev- starts on port 3000 - No console errors
Phase 2: Module Migration (1 day)
Reports Module - Views
- Copy
DashboardView.vue→src/modules/reports/views/ - Copy
InvoicesView.vue→src/modules/reports/views/ - Copy
BankCashRegisterView.vue→src/modules/reports/views/ - Copy
TrialBalanceView.vue→src/modules/reports/views/ - Copy
TelegramView.vue→src/modules/reports/views/ - Copy
CacheStatsView.vue→src/modules/reports/views/ - Update imports in all views (if needed)
Reports Module - Stores
- Copy
dashboard.js→src/modules/reports/stores/ - Copy
invoices.js→src/modules/reports/stores/ - Copy
treasury.js→src/modules/reports/stores/ - Copy
trialBalance.js→src/modules/reports/stores/ - Copy
cacheStore.js→src/modules/reports/stores/ - Update imports in all stores (if needed)
Reports Module - Services
- Copy
api.js→src/modules/reports/services/(in root) - Update base URL to
/api/reports/in api.js - Test API calls route to localhost:8001
Data Entry Module - Views
- Copy
ReceiptsListView.vue→src/modules/data-entry/views/receipts/ - Copy
ReceiptCreateView.vue→src/modules/data-entry/views/receipts/ - Update imports in views (if needed)
Data Entry Module - Components
- Copy
OCRUploadZone.vue→src/modules/data-entry/components/ocr/ - Copy
OCRPreview.vue→src/modules/data-entry/components/ocr/ - Copy
OCRConfidenceIndicator.vue→src/modules/data-entry/components/ocr/ - Update imports in components (if needed)
Data Entry Module - Stores
- Copy
receiptsStore.js→src/modules/data-entry/stores/ - Update imports in store (if needed)
Data Entry Module - Services
- Copy
api.js→src/modules/data-entry/services/(in root) - Update base URL to
/api/data-entry/in api.js - Test API calls route to localhost:8003
CSS Merge
- Review
data-entry-app/frontend/src/assets/css/main.css - Merge unique styles into
src/assets/css/(in root) - Resolve any style conflicts
- Test responsive design
Verification
- All Reports views render without errors
- All Data Entry views render without errors
- No import errors in console
- CSS loads correctly
- No style conflicts
Phase 3: Routing & Navigation (0.5 days)
Router Configuration
- Create
src/router/index.js(in root) - Add
/loginroute (eager loaded) - Add
/reports/*routes (lazy loaded) - Add
/data-entry/*routes (lazy loaded) - Add redirect
/→/reports/dashboard - Add authentication guard
- Add 404 handling
- Test all routes work
Menu Configuration
- Create
src/config/menu.js(in root) - Define "Rapoarte" section
- Define "Introduceri Date" section
- Define "Sistem" section
- Export menu configuration
Feature Flags
- Create
src/config/features.js(in root) - Add reports.enabled flag
- Add dataEntry.enabled flag
- Add module-level flags
- Export isFeatureEnabled function
Root Component
- Create
src/App.vue(in root) - Integrate AppHeader with unified menu
- Integrate SlideMenu with menu sections
- Add router-view
- Add Toast and ConfirmDialog
- Test menu navigation
Verification
- Can navigate to all routes
- Menu highlights active route
- Authentication guard works
- Login redirects to dashboard
- 404 redirects work
Phase 4: Error Boundaries & Resilience (0.25 days)
Error Boundary Component
- Create
src/shared/components/ErrorBoundary.vue(in root) - Implement onErrorCaptured hook
- Add user-friendly error display
- Add retry functionality
- Add navigate away option
- Test with intentional error
Module Layouts
- Create
src/modules/reports/ReportsLayout.vue(in root) - Wrap with ErrorBoundary component
- Create
src/modules/data-entry/DataEntryLayout.vue(in root) - Wrap with ErrorBoundary component
Error Isolation Testing
- Introduce error in Reports module
- Verify Data Entry still works
- Introduce error in Data Entry module
- Verify Reports still works
- Test retry functionality
- Test navigate away functionality
Feature Flags Testing
- Disable Reports module
- Verify menu items hidden
- Disable Data Entry module
- Verify menu items hidden
- Re-enable all modules
Loading States
- Add loading spinner for lazy routes
- Test module switching loading
- Add skeleton screens (optional)
Verification
- Error boundary catches component errors
- User sees friendly error message
- Can retry or navigate away
- Module isolation works (error in one doesn't crash other)
- Feature flags work
Phase 5: Build & Deploy (0.25 days)
Production Build
- Run
npm run build - Build succeeds without errors
- Check
dist/output - Verify chunks created:
- vendor-core.[hash].js
- vendor-primevue.[hash].js
- vendor-utils.[hash].js
- reports.[hash].js (lazy)
- data-entry.[hash].js (lazy)
- main.[hash].js
- main.[hash].css
Bundle Analysis
- Install
rollup-plugin-visualizer - Analyze bundle sizes
- Verify total size ≤ sum of current apps
- Check for duplicate dependencies
Local Preview
- Run
npm run preview - Test all routes work
- Test API calls work
- Test error boundaries
- Test lazy loading
IIS Configuration
- Create
web.config(in root) with URL rewrite rules - Add SPA routing rule (all → index.html)
- Add proxy rule:
/api/reports/*→http://localhost:8001/api/* - Add proxy rule:
/api/data-entry/*→http://localhost:8003/api/* - Add proxy rule:
/uploads/*→http://localhost:8003/uploads/*
Staging Deployment
- Deploy to staging IIS site
- Test all routes
- Test API calls
- Test error boundaries
- Test on different browsers
- Test on mobile devices
Production Deployment
- Backup current IIS configuration
- Backup current builds
- Deploy unified app
- Test all routes
- Test API calls
- Monitor error logs
Verification
- Build succeeds
- Chunks split correctly
- IIS deployment works
- API routing correct
- All features work in production
Testing Checklist
Manual Testing
- Login flow works
- Navigate to all Reports views
- Navigate to all Data Entry views
- Switch between modules
- Test company selector
- Test period selector
- Test logout
- Test on mobile (375px)
- Test on tablet (768px)
- Test on desktop (1920px)
E2E Tests
- Create
tests/e2e/login.spec.js(in root) - Create
tests/e2e/reports-navigation.spec.js(in root) - Create
tests/e2e/data-entry-navigation.spec.js(in root) - Create
tests/e2e/module-switching.spec.js(in root) - Create
tests/e2e/error-isolation.spec.js(in root) - Run all E2E tests - pass
Performance Testing
- Run Lighthouse audit
- Performance score ≥ 90
- Initial load < 2 seconds
- Module switching < 500ms (cached)
Post-Implementation Checklist
Documentation Updates
- Update
CLAUDE.md- Architecture section - Update
CLAUDE.md- Deployment section - Update
README.md- Quick start - Update
README.md- URL structure - Update
DEPLOYMENT_GUIDE.md- IIS configuration - Update
docs/ARCHITECTURE_SCHEMA.md- Diagrams - Update
deployment/windows/README.md- Deployment steps
Cleanup (After 1 Week)
- Archive
reports-app/frontend/→reports-app/frontend-archived/ - Archive
data-entry-app/frontend/→data-entry-app/frontend-archived/ - Update
start-test.shto use root directory - Update
start-data-entry.shto use root directory - Update CI/CD pipelines (if any)
- Document migration in CHANGELOG.md
Monitoring (First Week)
- Day 1: Review error logs
- Day 2: Review error logs
- Day 3: Review error logs
- Day 4: Review error logs
- Day 5: Review error logs
- Day 6: Review error logs
- Day 7: Review error logs + user feedback
Optimization (First Month)
- Week 2: Analyze bundle sizes
- Week 2: Optimize images/assets
- Week 3: Consider further code splitting
- Week 3: Add performance monitoring
- Week 4: Evaluate feature flag usage
- Week 4: Plan next improvements
Common Issues & Solutions
Issue: CSS Conflicts
Solution: Use CSS modules, check docs/CSS_PATTERNS.md
Issue: Import Errors
Solution: Update import paths, check alias configuration in vite.config.js
Issue: API Calls Failing
Solution: Verify proxy configuration, check backend is running
Issue: Error Boundary Not Catching
Solution: Check onErrorCaptured implementation, add global error handler
Issue: Large Bundle Size
Solution: Review manualChunks, enable tree shaking, lazy load more
Issue: IIS Routing Not Working
Solution: Check web.config URL rewrite rules, verify IIS URL Rewrite module installed
Issue: Store Contamination
Solution: Use module-scoped stores, check for global state
Issue: PrimeVue Theme Conflicts
Solution: Use single theme (saga-blue), override in vendor CSS
Progress Tracking
Phase 1: Setup
- Started: ___________
- Completed: ___________
- Time Spent: ___________ hours
Phase 2: Migration
- Started: ___________
- Completed: ___________
- Time Spent: ___________ hours
Phase 3: Routing
- Started: ___________
- Completed: ___________
- Time Spent: ___________ hours
Phase 4: Error Boundaries
- Started: ___________
- Completed: ___________
- Time Spent: ___________ hours
Phase 5: Build & Deploy
- Started: ___________
- Completed: ___________
- Time Spent: ___________ hours
Total Time: ___________ hours (Estimated: 20 hours)
Success Metrics
Deployment
- Single IIS site running (not 2)
- Single build process (not 2)
- Zero downtime during deployment
Performance
- Initial load < 2 seconds
- Module switching < 500ms
- Lighthouse score ≥ 90
- Bundle size ≤ sum of old apps
Quality
- 100% feature parity
- All E2E tests passing
- Zero user-reported bugs (first week)
- Error isolation verified
Status: ⬜ Not Started | 🔵 In Progress | ✅ Complete
Last Updated: ___________ Completed By: ___________ Production Deploy Date: ___________