You are tasked with building a full-stack web application named 'Small Business Assistant' using Next.js 14, leveraging the App Router for a multi-page structure. The application will serve small business owners, particularly those running gas stations and tire shops, to manage their operations more efficiently.Core Technologies: Framework: Next.js 14 (App Router) Styling: Tailwind CSS Database: PostgreSQL ORM: Drizzle ORM for database schema definition and interactions. Authentication: Basic email/password authentication (using NextAuth.js or a simple custom implementation, focusing on secure session management).Database Schema (Drizzle ORM):Define the following tables with appropriate fields and relationships:1. `users`: `id` (uuid, primary key) `email` (string, unique) `passwordHash` (string) `businessId` (uuid, foreign key to `businesses`) `createdAt` (timestamp) `updatedAt` (timestamp)2. `businesses`: `id` (uuid, primary key) `name` (string) `location` (string) `type` (string, e.g., 'Gas Station', 'Tire Shop', 'Both') `ownerId` (uuid, foreign key to `users`) - initial owner `createdAt` (timestamp) `updatedAt` (timestamp)3. `financialEntries`: `id` (uuid, primary key) `businessId` (uuid, foreign key to `businesses`) `date` (date) `type` (enum: 'Sale', 'Expense', 'FuelPurchase') `category` (string, e.g., 'Gas Sales', 'Tire Sales', 'Utilities', 'Payroll', 'Fuel Cost', 'Maintenance') `amount` (numeric) `description` (string, nullable) `createdAt` (timestamp) `updatedAt` (timestamp)4. `equipments`: `id` (uuid, primary key) `businessId` (uuid, foreign key to `businesses`) `name` (string, e.g., 'Tire Changer', 'POS System', 'Pizza Oven') `model` (string, nullable) `serialNumber` (string, nullable) `purchaseDate` (date) `warrantyEndDate` (date, nullable) `lastServiceDate` (date, nullable) `nextServiceDate` (date, nullable) `serviceProviderContact` (string, nullable) `hasBackup` (boolean, default false) `notes` (string, nullable) `createdAt` (timestamp) `updatedAt` (timestamp)5. `vendors`: `id` (uuid, primary key) `businessId` (uuid, foreign key to `businesses`) `name` (string) `contactPerson` (string, nullable) `phone` (string, nullable) `email` (string, nullable) `productsSupplied` (string array or JSONB) `performanceRating` (numeric, 1-5, nullable) `notes` (string, nullable) `createdAt` (timestamp) `updatedAt` (timestamp)6. `jobPostings`: `id` (uuid, primary key) `businessId` (uuid, foreign key to `businesses`) `title` (string, e.g., 'Tire Technician', 'Cashier') `description` (string) `requirements` (string, nullable) `applicationDeadline` (date, nullable) `status` (enum: 'Open', 'Closed', 'Filled') `createdAt` (timestamp) `updatedAt` (timestamp)Application Structure (App Router): `app/layout.tsx` (Root layout) `app/(auth)/login/page.tsx` (Login page) `app/(auth)/signup/page.tsx` (Signup page) `app/(dashboard)/layout.tsx` (Dashboard layout with navigation) `app/(dashboard)/dashboard/page.tsx` (Dashboard overview page) `app/(dashboard)/dashboard/financials/page.tsx` (List/view financial entries) `app/(dashboard)/dashboard/financials/create/page.tsx` (Create new financial entry) `app/(dashboard)/dashboard/financials/[id]/edit/page.tsx` (Edit financial entry) `app/(dashboard)/dashboard/equipment/page.tsx` (List/view equipment) `app/(dashboard)/dashboard/equipment/create/page.tsx` (Create new equipment entry) `app/(dashboard)/dashboard/equipment/[id]/edit/page.tsx` (Edit equipment entry) `app/(dashboard)/dashboard/vendors/page.tsx` (List/view vendors) `app/(dashboard)/dashboard/vendors/create/page.tsx` (Create new vendor) `app/(dashboard)/dashboard/vendors/[id]/edit/page.tsx` (Edit vendor) `app/(dashboard)/dashboard/jobs/page.tsx` (List/view job postings) `app/(dashboard)/dashboard/jobs/create/page.tsx` (Create new job posting) `app/(dashboard)/dashboard/jobs/[id]/edit/page.tsx` (Edit job posting) `app/(dashboard)/dashboard/settings/page.tsx` (Business profile settings)API Routes (Next.js API routes in `app/api`):Implement full CRUD (Create, Read, Update, Delete) for the following entities via dedicated API routes. Each route should handle authentication/authorization to ensure only the business owner can manage their own data. `/api/auth/login` (POST) `/api/auth/signup` (POST) `/api/business` (GET, PUT) - for the logged-in user's business profile `/api/financials` (GET, POST) `/api/financials/[id]` (GET, PUT, DELETE) `/api/equipment` (GET, POST) `/api/equipment/[id]` (GET, PUT, DELETE) `/api/vendors` (GET, POST) `/api/vendors/[id]` (GET, PUT, DELETE) `/api/jobs` (GET, POST) `/api/jobs/[id]` (GET, PUT, DELETE)Functionality Requirements:1. Authentication & Authorization: Users can sign up and log in. Each user is associated with one `business`. All dashboard data should be scoped to the logged-in user's `businessId`. Implement basic session management.2. Dashboard Page (`/dashboard`): Display a summary of the latest financial data. Show upcoming equipment service dates. List active job postings. Quick links to other sections.3. Financials Module (`/dashboard/financials`): CRUD for Financial Entries: Users can add, view, edit, and delete sales, expenses, and fuel purchase records. Seasonality & Cash Flow Visualization: Display a simple line chart showing monthly revenue/expenses over the past year to illustrate 'feast and famine' cycles. Fuel Price Spike Alert/Planning: Based on historical `FuelPurchase` entries, provide a rough estimate of potential cash needed for future fuel spikes (e.g., 'Based on past data, be prepared for a 20-30% increase in fuel check in Q1'). This can be a simple text output.4. Equipment Management Module (`/dashboard/equipment`): CRUD for Equipment: Users can add, view, edit, and delete details for critical equipment. Maintenance Tracking: Display upcoming service dates. Allow users to input `serviceProviderContact` for quick reference. Backup Status: `hasBackup` checkbox to indicate if a backup exists.5. Vendor Management Module (`/dashboard/vendors`): CRUD for Vend