feat: complete Week 1 frontend setup (#9 #10 #11 #12)
Some checks failed
Deploy to Coolify / Code Quality (pull_request) Has been cancelled
Deploy to Coolify / Run Tests (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Development (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Production (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Test (pull_request) Has been cancelled
Pull Request Checks / Validate PR (pull_request) Has been cancelled
Some checks failed
Deploy to Coolify / Code Quality (pull_request) Has been cancelled
Deploy to Coolify / Run Tests (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Development (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Production (pull_request) Has been cancelled
Deploy to Coolify / Deploy to Test (pull_request) Has been cancelled
Pull Request Checks / Validate PR (pull_request) Has been cancelled
- Install and configure Tailwind CSS (#9) - Install Nuxt UI component library (#10) - Create app layout with header/footer components (#11) - Implement Supabase client composable (#12) - Add TypeScript database types - Create placeholder pages (index, scan, settings) - Setup responsive navigation with mobile menu - Configure auth state management All Week 1 frontend foundation tasks complete.
This commit is contained in:
57
app/pages/index.vue
Normal file
57
app/pages/index.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<h1 class="text-3xl font-bold text-gray-900">Inventory</h1>
|
||||
|
||||
<div class="flex gap-2">
|
||||
<UButton
|
||||
to="/scan"
|
||||
color="primary"
|
||||
size="lg"
|
||||
icon="i-heroicons-qr-code"
|
||||
>
|
||||
Scan Item
|
||||
</UButton>
|
||||
|
||||
<UButton
|
||||
color="white"
|
||||
size="lg"
|
||||
icon="i-heroicons-plus"
|
||||
>
|
||||
Add Manually
|
||||
</UButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Empty State -->
|
||||
<UCard v-if="true">
|
||||
<div class="text-center py-12">
|
||||
<UIcon
|
||||
name="i-heroicons-inbox"
|
||||
class="w-16 h-16 text-gray-400 mx-auto mb-4"
|
||||
/>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-2">
|
||||
No items yet
|
||||
</h3>
|
||||
<p class="text-gray-600 mb-6">
|
||||
Start by scanning a barcode or adding an item manually.
|
||||
</p>
|
||||
<UButton
|
||||
to="/scan"
|
||||
color="primary"
|
||||
icon="i-heroicons-qr-code"
|
||||
>
|
||||
Scan First Item
|
||||
</UButton>
|
||||
</div>
|
||||
</UCard>
|
||||
|
||||
<!-- TODO: Item list will go here -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
definePageMeta({
|
||||
layout: 'default'
|
||||
})
|
||||
</script>
|
||||
33
app/pages/scan.vue
Normal file
33
app/pages/scan.vue
Normal file
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 mb-6">Scan Item</h1>
|
||||
|
||||
<UCard>
|
||||
<div class="text-center py-12">
|
||||
<UIcon
|
||||
name="i-heroicons-qr-code"
|
||||
class="w-16 h-16 text-gray-400 mx-auto mb-4"
|
||||
/>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-2">
|
||||
Barcode Scanner
|
||||
</h3>
|
||||
<p class="text-gray-600 mb-6">
|
||||
This feature will be implemented in Week 3.
|
||||
</p>
|
||||
<UButton
|
||||
to="/"
|
||||
color="gray"
|
||||
variant="soft"
|
||||
>
|
||||
Back to Inventory
|
||||
</UButton>
|
||||
</div>
|
||||
</UCard>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
definePageMeta({
|
||||
layout: 'default'
|
||||
})
|
||||
</script>
|
||||
74
app/pages/settings.vue
Normal file
74
app/pages/settings.vue
Normal file
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1 class="text-3xl font-bold text-gray-900 mb-6">Settings</h1>
|
||||
|
||||
<div class="grid gap-6 md:grid-cols-2">
|
||||
<UCard>
|
||||
<template #header>
|
||||
<h3 class="text-lg font-semibold">Account</h3>
|
||||
</template>
|
||||
|
||||
<div class="space-y-4">
|
||||
<div v-if="user">
|
||||
<label class="text-sm font-medium text-gray-700">Email</label>
|
||||
<p class="text-gray-900">{{ user.email }}</p>
|
||||
</div>
|
||||
|
||||
<UButton
|
||||
v-if="!user"
|
||||
to="/auth/login"
|
||||
color="primary"
|
||||
>
|
||||
Sign In
|
||||
</UButton>
|
||||
</div>
|
||||
</UCard>
|
||||
|
||||
<UCard>
|
||||
<template #header>
|
||||
<h3 class="text-lg font-semibold">Tags</h3>
|
||||
</template>
|
||||
|
||||
<p class="text-gray-600">
|
||||
Manage your custom tags here (coming in Week 2).
|
||||
</p>
|
||||
</UCard>
|
||||
|
||||
<UCard>
|
||||
<template #header>
|
||||
<h3 class="text-lg font-semibold">Units</h3>
|
||||
</template>
|
||||
|
||||
<p class="text-gray-600">
|
||||
Manage your custom units here (coming in Week 2).
|
||||
</p>
|
||||
</UCard>
|
||||
|
||||
<UCard>
|
||||
<template #header>
|
||||
<h3 class="text-lg font-semibold">About</h3>
|
||||
</template>
|
||||
|
||||
<div class="space-y-2 text-sm text-gray-600">
|
||||
<p><strong>Pantry</strong> v0.1.0-alpha</p>
|
||||
<p>Self-hosted inventory management</p>
|
||||
<a
|
||||
href="https://github.com/pantry-app/pantry"
|
||||
target="_blank"
|
||||
class="text-primary hover:underline"
|
||||
>
|
||||
View on GitHub →
|
||||
</a>
|
||||
</div>
|
||||
</UCard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const { user } = useSupabaseAuth()
|
||||
|
||||
definePageMeta({
|
||||
layout: 'default'
|
||||
})
|
||||
</script>
|
||||
Reference in New Issue
Block a user