Refactor frontend to Vue 3 + Vite + Pinia + Cypress E2E

- Replace single-file 8441-line HTML with Vue 3 SPA
- Pinia stores: auth, oils, recipes, diary, ui
- Composables: useApi, useDialog, useSmartPaste, useOilTranslation
- 6 shared components: RecipeCard, RecipeDetailOverlay, TagPicker, etc.
- 9 page views: RecipeSearch, RecipeManager, Inventory, OilReference, etc.
- 14 Cypress E2E test specs (113 tests), all passing
- Multi-stage Dockerfile (Node build + Python runtime)
- Demo video generation scripts (TTS + subtitles + screen recording)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-06 18:35:00 +00:00
parent 0368e85abe
commit ee8ec23dc7
62 changed files with 15035 additions and 8448 deletions

View File

@@ -0,0 +1,56 @@
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
name: 'RecipeSearch',
component: () => import('../views/RecipeSearch.vue'),
},
{
path: '/manage',
name: 'RecipeManager',
component: () => import('../views/RecipeManager.vue'),
},
{
path: '/inventory',
name: 'Inventory',
component: () => import('../views/Inventory.vue'),
},
{
path: '/oils',
name: 'OilReference',
component: () => import('../views/OilReference.vue'),
},
{
path: '/projects',
name: 'Projects',
component: () => import('../views/Projects.vue'),
},
{
path: '/mydiary',
name: 'MyDiary',
component: () => import('../views/MyDiary.vue'),
},
{
path: '/audit',
name: 'AuditLog',
component: () => import('../views/AuditLog.vue'),
},
{
path: '/bugs',
name: 'BugTracker',
component: () => import('../views/BugTracker.vue'),
},
{
path: '/users',
name: 'UserManagement',
component: () => import('../views/UserManagement.vue'),
},
]
const router = createRouter({
history: createWebHistory(),
routes,
})
export default router