Skip to content

← Back to DWS Receipts

Terminal window
# Public (exposed to browser)
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
# Server-only (API routes)
SUPABASE_SERVICE_ROLE_KEY=eyJ...
Terminal window
# OpenRouter (used for GPT-4.1-nano OCR)
OPENROUTER_API_KEY=sk-or-...
Terminal window
OPENAI_API_KEY=sk-... # For GPT-5 models
ANTHROPIC_API_KEY=sk-ant-... # For Claude models
{
"dev": "next dev --turbopack -H 0.0.0.0",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
export default {
serverExternalPackages: ['@boundaryml/baml'], // BAML not bundled
images: {
remotePatterns: [{
hostname: 'qebbmojnqzwwdpkhuyyd.supabase.co' // Storage images
}]
},
typescript: { ignoreBuildErrors: true },
eslint: { ignoreDuringBuilds: true }
};
{
"compilerOptions": {
"target": "ES2017",
"strict": true,
"paths": {
"@/*": ["./src/*"],
"@baml/*": ["./baml_client/*"]
}
}
}

Using Tailwind CSS 4 with inline theme:

@import "tailwindcss";
@import "tw-animate-css";
@theme inline {
--color-primary: oklch(0.21 0.006 285.885);
--color-secondary: oklch(0.27 0.005 286.033);
/* ... shadcn design tokens */
}
{
"style": "new-york",
"rsc": true,
"tailwind": {
"baseColor": "neutral",
"cssVariables": true
},
"iconLibrary": "lucide"
}
{
"env": { "NEXT_ESLINT_DISABLED": "1" },
"installCommand": "npm install --legacy-peer-deps"
}
generator target {
output_type typescript
output_dir "../"
version "0.214.0"
default_client_mode async
}
client<llm> GPT4oMini {
provider openai-generic
options {
base_url "https://openrouter.ai/api/v1"
model "openai/gpt-4.1-nano"
api_key env.OPENROUTER_API_KEY
}
retry_policy Exponential
}
PackageVersionPurpose
next15.3.6Framework
react19UI library
@supabase/ssrlatestSSR auth
@supabase/supabase-jslatestDatabase client
@boundaryml/bamllatestAI orchestration
@tanstack/react-querylatestData fetching
tailwindcss4Styling
sharplatestImage processing
sonnerlatestToast notifications
lucide-reactlatestIcons
dws-app/
├── .env.local # Environment variables
├── next.config.ts # Next.js config
├── tsconfig.json # TypeScript config
├── package.json # Dependencies
├── components.json # shadcn config
├── vercel.json # Deployment config
├── baml_src/ # BAML definitions
│ ├── clients.baml # LLM clients
│ ├── generators.baml # Code generation
│ └── receipts.baml # Receipt extraction
└── src/
└── app/
└── globals.css # Tailwind theme
Terminal window
# Clone and install
cd dws-app
npm install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your keys
# Run development server
npm run dev
  1. Connect repo to Vercel
  2. Set environment variables in Vercel dashboard
  3. Build command: npm run build
  4. Output directory: .next

ESLint disabled during builds via NEXT_ESLINT_DISABLED=1.