Initial commit: Shop Database Flask Application

Flask backend with Vue 3 frontend for shop floor machine management.
Includes database schema export for MySQL shopdb_flask database.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-01-13 16:07:34 -05:00
commit 30dd65674d
186 changed files with 19921 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<template>
<div class="app-layout">
<aside class="sidebar">
<div class="sidebar-header">
<img src="/ge-aerospace-logo.svg" alt="GE Aerospace" class="sidebar-logo" />
<h1>West Jefferson</h1>
</div>
<div class="sidebar-search">
<input
v-model="searchQuery"
type="text"
placeholder="Search..."
@keyup.enter="performSearch"
/>
</div>
<nav class="sidebar-nav">
<router-link to="/">Dashboard</router-link>
<router-link to="/map">Map</router-link>
<router-link to="/machines">Equipment</router-link>
<router-link to="/pcs">PCs</router-link>
<router-link to="/printers">Printers</router-link>
<router-link to="/applications">Applications</router-link>
<router-link to="/knowledgebase">Knowledge Base</router-link>
<router-link v-if="authStore.isAdmin" to="/settings">Settings</router-link>
</nav>
<div class="user-menu">
<template v-if="authStore.isAuthenticated">
<div class="username">{{ authStore.username }}</div>
<button class="btn btn-secondary" @click="handleLogout">Logout</button>
</template>
<router-link v-else to="/login" class="btn btn-primary">Login</router-link>
</div>
</aside>
<main class="main-content">
<router-view />
</main>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { useAuthStore } from '../stores/auth'
const router = useRouter()
const authStore = useAuthStore()
const searchQuery = ref('')
function performSearch() {
if (searchQuery.value.trim()) {
router.push({ path: '/search', query: { q: searchQuery.value.trim() } })
searchQuery.value = ''
}
}
async function handleLogout() {
await authStore.logout()
router.push('/login')
}
</script>