AndymickandClaude Haiku 4.5 0f119b5db5 Fix: Show approved designs in customer account so they can order
- Add query for approved designs (status = 'APPROVED')
- Display 'Ready to order' section in customer account
- Link directly to checkout with design pre-selected
- Show estimated delivery date if set
- Add success message when admin approves design

Now when admin approves a design with expected delivery date:
1. Customer sees it in 'Ready to order' section
2. Can click to view and proceed to payment
3. Can see estimated delivery date

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-22 05:38:51 +01:00

Craft2Prints — Ink it. Print it. Love it.

A complete self-hosted e-commerce platform for personalized products (apparel, drinkware, phone cases) with an in-browser design tool, integrated accounting system, and real Stripe payments.

Features

Customer Experience

  • Design Tool — In-browser tool to customize templates with text and images
  • Product Catalog — Browse and filter by category, color, size, and price
  • Shopping Cart — Persistent cart stored in IndexedDB (handles large design files)
  • Customer Accounts — Optional sign-up for order history and faster checkout
  • Dark Mode — Full dark mode support with system preference detection
  • Mobile Responsive — Works seamlessly on all devices

Order Management

  • Real Payments — Stripe integration for production-ready checkout
  • Order Tracking — Customers see order history, status, and print files
  • Design Approvals — Upload custom designs for customer review with built-in chat
  • Photo Requests — Customers submit photos; you design them into products
  • Auto-Archiving — Paid/failed orders auto-archive after 30 days

Admin Dashboard

  • Product Management — Add/edit/delete products with photos, colors, sizes
  • Category Management — Organize products by customer-facing categories
  • Financial System — Complete self-hosted accounting:
    • 📊 Reports & Analysis — KPIs, profit trends, income breakdown, tax year summaries
    • 🏦 Bank Reconciliation — Upload CSV statements, auto-match transactions, verify accuracy
    • 📋 Audit Trail — Track all changes with IP addresses, timestamps, and reasons
    • 📈 Tax Compliance — UK tax year (April-April) calculations and HMRC export
  • Admin Login Activity — Track who logged in, when, from where
  • Customer Login Activity — Monitor customer account access
  • Order Management — View, approve, archive orders
  • Inbox — Chat with customers about design changes
  • Promotions — Create sales with per-product or site-wide discounts

Security & Compliance

  • Admin Authentication — Session-based login with automatic logout on page close
  • Customer Authentication — Separate customer account system (optional)
  • Rate Limiting — DB-backed rate limiting on login/checkout
  • CAPTCHA — Cloudflare Turnstile on public forms
  • Audit Logging — Full financial audit trail for compliance
  • Session Expiry — Auto-logout when browser closes

Technical Stack

  • Frontend — Next.js 14 (App Router), React, Tailwind CSS
  • Backend — Next.js server actions, API routes
  • Database — SQLite with Prisma ORM
  • Payments — Stripe (production-ready)
  • Email — SMTP (Gmail, Outlook, SendGrid, etc.)
  • Design — SVG-based mockups, Canvas for rendering

Quick Start

  1. Install Node.js 18+ — Check with node -v

  2. Install dependencies

    npm install
    
  3. Set up environment

    cp .env.example .env
    # Edit .env with your configuration (see SETUP_AND_BUILD.md for details)
    
  4. Create database and load starter products

    npm run db:push
    npm run db:seed
    
  5. Start dev server

    npm run dev
    

    Open http://localhost:3000 — you'll see the homepage and catalog.

Configuration

Essential (.env):

  • DATABASE_URL — SQLite path (default: file:./dev.db)
  • ADMIN_USER / ADMIN_PASSWORD — Admin login credentials (⚠️ change before deployment)
  • STRIPE_SECRET_KEY / STRIPE_WEBHOOK_SECRET — Stripe payment keys

Optional:

  • SMTP_* — Email configuration for order confirmations and password resets
  • NEXT_PUBLIC_TURNSTILE_SITE_KEY / TURNSTILE_SECRET_KEY — CAPTCHA on forms
  • NEXT_PUBLIC_FACEBOOK_APP_ID — Messenger sharing (WhatsApp always works)

See .env.example and SETUP_AND_BUILD.md for complete reference.

Key Concepts

Product Catalogs

  • Personalised Catalog (/made-to-order) — Full design tool, customers customize templates
  • Products Catalog (/products) — Buy as-is with color/size picker, no design tool

A product can appear on both catalogs simultaneously.

Currency

Prices stored in GBP pence internally. Customer-facing header currency selector (£/$/€) changes display only — no actual conversion happens until checkout is configured for it.

Cart Storage

Cart persists to IndexedDB, not localStorage, because design items carry large image files. IndexedDB has no 5-10MB limit like localStorage.

Color Names

Colors display as friendly names to customers (Navy, Red, Forest Green) instead of hex codes. Admin still sees hex for reference.

Accounting Features

Financial Reports

  • KPI Dashboard — Year-to-date metrics, income source breakdown, growth rates
  • 12-Month Trends — Visual profit trends with best/worst month analysis
  • Income Breakdown — Website sales vs manual sales comparison
  • Revenue vs Expenses — Side-by-side trend analysis
  • Tax Year Summary — UK April-April year calculations
  • HMRC Report — Tax compliance format for self-assessment filing

Bank Reconciliation

  • Upload CSV bank statements from any UK bank
  • Auto-matches transactions based on amount and date (95%+ accuracy)
  • Manual matching for edge cases (transfers, fees, refunds)
  • Discrepancy detection (amount mismatches flagged in orange)
  • Reconciliation status tracking (PENDING → RECONCILED → ARCHIVED)
  • Export reconciliation reports

Audit Trail

  • Logs all financial changes (create/update/delete)
  • Tracks IP address, timestamp, and reason for each change
  • Stores before/after values for data integrity
  • Separate login activity logging (admin and customer)

Deployment

See SETUP_AND_BUILD.md for detailed deployment instructions including:

  • Production build process
  • Environment setup
  • Stripe live keys configuration
  • Reverse proxy setup (nginx)
  • Process management (pm2)
  • Database backups
  • Security hardening

Support

  • Issues — Check the GitHub issues for known problems
  • Docs — See SETUP_AND_BUILD.md for comprehensive setup and deployment guide
  • Examples.env.example shows all available configuration options

License

Built with ❤️ for small businesses and makers.

S
Description
No description provided
Readme
1,010 MiB
Languages
TypeScript 98.7%
JavaScript 0.9%
CSS 0.2%
PowerShell 0.2%