No description
Find a file
Lorentz Hinrichsen 06221d2d9c feat: add Redis caching layer, fix connection pools, add loading skeletons
- Create src/lib/redis.ts (singleton client) and src/lib/cache.ts
  (cachedQuery with graceful degradation on Redis failure)
- Wrap all 12 API routes and 7 RSC pages with cachedQuery (TTLs:
  120s-900s by data type — dashboard 3min, inventory/orders/shipments
  5min, BOL/order-ack/traveler 10min, ship-to 15min, avail-coils 2min)
- Fix redundant connection pools in dashboard.ts and shipments.ts
  (were creating their own sql.connect instead of using shared pool)
- Add pool tuning to epicor.ts (max:15, min:2, 60s idle, 30s acquire)
- Parallelize session checks (getQuestSession + getActiveCompany +
  isSubUser) with Promise.all across all inventory and orders pages
- Add loading.tsx skeletons for dashboard, inventory detail, orders,
  and shipments pages for instant shell rendering via Next.js streaming

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 07:40:07 -05:00
.forgejo/workflows Remove DOCKER_HOST from workflow 2026-02-15 22:52:33 +00:00
.vscode feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
docs feat: integrate shipment cart into inventory summary tables 2026-02-18 07:27:58 -05:00
prisma fix: make pages dynamic and fix middleware for Edge Runtime 2026-02-16 12:03:01 +00:00
public feat(C-004): implement orders list page with search and CSV export 2026-02-16 12:37:42 +00:00
scripts feat(F-008,F-009,F-010): complete Phase 1 foundation with middleware, navigation, and migrations 2026-02-16 11:07:44 +00:00
src feat: add Redis caching layer, fix connection pools, add loading skeletons 2026-02-18 07:40:07 -05:00
tests feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
traefik feat: add local dev workflow with hot reload via Traefik 2026-02-16 19:55:26 +00:00
.dockerignore feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
.env.example feat: add invoice viewing (C-015) and notifications display (C-016) 2026-02-17 10:04:01 -05:00
.eslintrc.json feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
.gitignore feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
.prettierignore feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
.prettierrc feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
CLAUDE.md feat: add order ack detail/PDF, BOL detail/PDF, coil activity usage & receipts 2026-02-17 09:14:52 -05:00
components.json feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
create-files.sh Initial infrastructure setup 2026-02-15 19:31:34 +00:00
docker-compose.yml feat: add local dev workflow with hot reload via Traefik 2026-02-16 19:55:26 +00:00
Dockerfile feat(C-003): implement inventory detail views with drill-down 2026-02-16 12:35:06 +00:00
init-databases.sh Initial infrastructure setup 2026-02-15 19:31:34 +00:00
next.config.ts feat: add order ack detail/PDF, BOL detail/PDF, coil activity usage & receipts 2026-02-17 09:14:52 -05:00
package-lock.json feat: redesign shipment request cart as inventory-integrated flow 2026-02-17 17:01:53 -05:00
package.json feat: redesign shipment request cart as inventory-integrated flow 2026-02-17 17:01:53 -05:00
playwright.config.ts feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
postcss.config.mjs feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
README.md feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
setup.sh Initial infrastructure setup 2026-02-15 19:31:34 +00:00
tailwind.config.ts feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
TASKS.md feat: add shipment request (C-013) and allocation request (C-014) cart workflows 2026-02-17 10:37:38 -05:00
tsconfig.json feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00
vitest.config.ts feat(F-001): scaffold Next.js 15 project with TypeScript and Tailwind 2026-02-16 00:04:44 +00:00

Vorteq Quest Portal

Modern customer portal for Vorteq Coil, built with Next.js 15, TypeScript, and PostgreSQL.

Tech Stack

  • Framework: Next.js 15 with App Router
  • Language: TypeScript (strict mode)
  • Database (App): PostgreSQL 16 with Prisma ORM
  • Database (Epicor): SQL Server (read-only via mssql package)
  • Auth: Better Auth
  • UI: shadcn/ui + Tailwind CSS
  • Cache/Queue: Redis 7 + BullMQ
  • Email: Microsoft Graph API
  • Infrastructure: Docker + Traefik + Forgejo CI/CD

Getting Started

Prerequisites

  • Node.js 22 LTS
  • Docker & Docker Compose
  • Access to Epicor SQL Server

Development Setup

  1. Install dependencies:

    npm install
    
  2. Set up environment variables:

    cp .env.example .env
    # Edit .env with your configuration
    
  3. Initialize database:

    npm run db:push
    npm run db:seed
    
  4. Run development server:

    npm run dev
    
  5. Open http://localhost:3000

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run lint - Run ESLint
  • npm run typecheck - Run TypeScript compiler check
  • npm test - Run unit tests
  • npm run test:e2e - Run E2E tests
  • npm run db:push - Push Prisma schema to database
  • npm run db:migrate - Create migration
  • npm run db:seed - Seed database

Project Structure

See CLAUDE.md for detailed project structure and coding conventions.

Documentation

  • Project Instructions: CLAUDE.md
  • Task Tracking: TASKS.md
  • PRD: docs/Vorteq_Quest_PRD_v1.0.docx
  • Legacy Documentation: docs/ directory

Infrastructure

License

Proprietary - Vorteq Coil