diff --git a/frontend/src/components/gallery/TimelineSidebar.vue b/frontend/src/components/gallery/TimelineSidebar.vue
new file mode 100644
index 0000000..8ea5c24
--- /dev/null
+++ b/frontend/src/components/gallery/TimelineSidebar.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
diff --git a/frontend/src/components/modal/ImageViewer.vue b/frontend/src/components/modal/ImageViewer.vue
new file mode 100644
index 0000000..370b462
--- /dev/null
+++ b/frontend/src/components/modal/ImageViewer.vue
@@ -0,0 +1,9 @@
+
+
+
+ Image viewer
+ Modal viewer lands in Batch 5 (Tasks 19–22).
+
+
+
+
diff --git a/frontend/src/router.js b/frontend/src/router.js
index c983d82..fab0176 100644
--- a/frontend/src/router.js
+++ b/frontend/src/router.js
@@ -1,10 +1,11 @@
import { createRouter, createWebHistory } from 'vue-router'
import PlaceholderView from './views/PlaceholderView.vue'
import SettingsView from './views/SettingsView.vue'
+import GalleryView from './views/GalleryView.vue'
const routes = [
// FC-2: image backbone
- { path: '/', name: 'gallery', component: PlaceholderView, meta: { title: 'Gallery' } },
+ { path: '/', name: 'gallery', component: GalleryView, meta: { title: 'Gallery' } },
{ path: '/showcase', name: 'showcase', component: PlaceholderView, meta: { title: 'Showcase' } },
{ path: '/tags', name: 'tags', component: PlaceholderView, meta: { title: 'Tags' } },
{ path: '/settings', name: 'settings', component: SettingsView, meta: { title: 'Settings' } },
diff --git a/frontend/src/stores/modal.js b/frontend/src/stores/modal.js
new file mode 100644
index 0000000..7f88020
--- /dev/null
+++ b/frontend/src/stores/modal.js
@@ -0,0 +1,10 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+// Placeholder modal store — real implementation lands in Task 19.
+export const useModalStore = defineStore('modal', () => {
+ const currentImageId = ref(null)
+ function open(id) { currentImageId.value = id }
+ function close() { currentImageId.value = null }
+ return { currentImageId, open, close }
+})
diff --git a/frontend/src/views/GalleryView.vue b/frontend/src/views/GalleryView.vue
new file mode 100644
index 0000000..c2f9d72
--- /dev/null
+++ b/frontend/src/views/GalleryView.vue
@@ -0,0 +1,77 @@
+
+
+ Gallery
+
+
+
+
+
+
+
+
+