No description
Find a file
SJCoetz 565b1a6e2b Add supplier map feature with Leaflet UI
Introduce a new SupplierMap component and page to visualize suppliers on a Leaflet map (client-side, dynamic import). Wire the feature into the app by importing Leaflet CSS in the global layout and adding a Supplier Map entry to the sidebar. The map fetches suppliers, parses coordinates, groups nearby suppliers into proximity clusters, and shows markers, tooltips, and lists of missing coordinates. Update package.json to include leaflet, react-leaflet and types; remove a Windows-specific lightningcss package. Also normalize Dockerfile ENV formatting (no behavior change).
2026-05-27 14:39:00 +02:00
.vscode feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
docs Add PocketBase collections, APIs & migration docs 2026-05-25 18:39:33 +02:00
public feat: add service worker, offline page, and manifest for PWA support 2026-05-24 17:02:07 +02:00
scripts Add PocketBase collections, APIs & migration docs 2026-05-25 18:39:33 +02:00
src Add supplier map feature with Leaflet UI 2026-05-27 14:39:00 +02:00
.gitignore feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
AGENTS.md feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
CLAUDE.md feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
components.json feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
Dockerfile Add supplier map feature with Leaflet UI 2026-05-27 14:39:00 +02:00
eslint.config.mjs feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
next.config.ts feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
package-lock.json Add supplier map feature with Leaflet UI 2026-05-27 14:39:00 +02:00
package.json Add supplier map feature with Leaflet UI 2026-05-27 14:39:00 +02:00
postcss.config.mjs feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
README.md feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00
tsconfig.json feat: add UI components for separator, sheet, sonner, switch, table, tabs, textarea, tooltip 2026-05-24 16:31:01 +02:00

WFDASH - Business CRM

A modern business CRM built with Next.js 16, shadcn/ui, Tailwind CSS 4, and PocketBase.

Tech Stack

  • Frontend: Next.js 16 (App Router), React 19, TypeScript
  • UI: shadcn/ui, Tailwind CSS 4, Lucide Icons
  • Backend: PocketBase (database, auth, file storage, realtime)
  • Notifications: Sonner

Getting Started

Prerequisites

  • Node.js 18+
  • PocketBase server running at http://127.0.0.1:8090

Installation

npm install

PocketBase Setup

  1. Start PocketBase:
./pocketbase serve
  1. Create an admin account in the PocketBase admin UI

  2. Set environment variables:

export PB_ADMIN_EMAIL=admin@example.com
export PB_ADMIN_PASSWORD=your_password
  1. Run the setup script to create collections:
npm run setup

Environment Variables

Create .env.local:

NEXT_PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090

Development

npm run dev

Features

  • Customers: Full CRUD with search, pagination, CSV export
  • Companies: Full CRUD with detail pages
  • Suppliers: Full CRUD with tag support
  • Quotes: Line items with auto-calculations, status workflow
  • Orders: PO generation, supplier grouping
  • Dashboard: Real-time stats, recent activity
  • Auth: Login, register, password reset
  • Dark/Light Mode: Theme switching
  • Mobile Responsive: Collapsible sidebar, card views on mobile

Collections

  • customers - Customer database
  • companies - Company database
  • suppliers - Supplier network
  • quotes - Quotes with line items
  • orders - Orders with PO generation

Project Structure

src/
├── app/
│   ├── (auth)/          # Auth pages (login, register)
│   └── (app)/           # Protected app pages
│       ├── dashboard/   # Dashboard
│       ├── customers/   # Customer management
│       ├── companies/   # Company management
│       ├── suppliers/   # Supplier management
│       ├── quotes/      # Quote management
│       └── orders/      # Order management
├── components/
│   ├── ui/              # shadcn/ui components
│   ├── sidebar.tsx      # Navigation sidebar
│   ├── auth-provider.tsx # Auth context
│   ├── theme-provider.tsx # Theme context
│   └── ...              # Form and table components
└── lib/
    ├── pocketbase.ts    # PocketBase client
    ├── pb-helpers.ts    # Helper functions
    ├── types.ts         # TypeScript types
    └── utils.ts         # Utility functions