266 lines
7.6 KiB
Markdown
266 lines
7.6 KiB
Markdown
# Queue North Website
|
|
|
|
## Objective
|
|
|
|
Queue North Website is the modern rebuild of the Queue North Technologies business website.
|
|
|
|
The goal is to replace the current static early-2000s-style HTML/CSS/JS site with a polished 2026 business website that clearly presents Queue North as a trustworthy communications, contact center, networking, and managed support partner.
|
|
|
|
The site should feel:
|
|
|
|
- Bright and professional
|
|
- Modern but not flashy
|
|
- Business-first, not cyber/gaming/crypto
|
|
- Easy to navigate
|
|
- Clear about Queue North's 8x8 partnership and service expertise
|
|
- Optimized for consultation and support request conversion
|
|
|
|
## Target Stack
|
|
|
|
- **Vite** — build tool, not Next.js
|
|
- **React** — SPA frontend
|
|
- **React Router** — client-side routing
|
|
- **Tailwind CSS** — utility-first styling
|
|
- **shadcn/ui** — component primitives
|
|
- **Sonner** — toast notifications
|
|
- **TanStack Query** — server state management
|
|
- **Express** — backend API
|
|
- **better-sqlite3** — SQLite database
|
|
|
|
## Layout Direction
|
|
|
|
The design direction is a light-first B2B technology layout with strategic dark navy sections.
|
|
|
|
Primary structure:
|
|
|
|
1. **Hero**
|
|
- Dark navy section
|
|
- Clear headline and value proposition
|
|
- Primary CTA: `Request Consultation`
|
|
- Secondary CTA: `Explore Services`
|
|
- Trust chips: 8x8 Certified Partner, Veteran Owned, 25+ Years Experience, SMB to Enterprise
|
|
|
|
2. **Trust / Certification Bar**
|
|
- Light section
|
|
- Reinforces 8x8 partner credibility
|
|
|
|
3. **Services Preview**
|
|
- White cards on a bright background
|
|
- Concise service explanations
|
|
- Links to service detail pages
|
|
|
|
4. **Why Queue North**
|
|
- Three-pillar section:
|
|
- Architecture
|
|
- Deployment
|
|
- Lifecycle Support
|
|
|
|
5. **Industries**
|
|
- Healthcare
|
|
- Retail
|
|
- Manufacturing
|
|
- Education & Finance
|
|
|
|
6. **Final CTA**
|
|
- Dark navy conversion band
|
|
- Consultation-focused message
|
|
|
|
## Planned Routes
|
|
|
|
```txt
|
|
/
|
|
/about
|
|
/services
|
|
/services/unified-communications
|
|
/services/contact-center
|
|
/services/managed-support
|
|
/services/consulting-training
|
|
/services/infrastructure-cabling
|
|
/services/wireless-access
|
|
/services/local-networking
|
|
/industries
|
|
/industries/healthcare
|
|
/industries/retail
|
|
/industries/manufacturing
|
|
/industries/education-finance
|
|
/8x8
|
|
/contact
|
|
/support
|
|
```
|
|
|
|
## Overhaul Phases
|
|
|
|
Version numbers correlate directly to the active phase:
|
|
|
|
- **Phase 1 — Stack Scaffold**: `0.1.x` ✅ Complete
|
|
- ~~Vite + React app foundation~~ ✅
|
|
- ~~Tailwind CSS setup~~ ✅
|
|
- ~~shadcn/ui-style primitives~~ ✅
|
|
- ~~React Router~~ ✅
|
|
- ~~Express backend~~ ✅
|
|
- ~~better-sqlite3 database~~ ✅
|
|
- ~~Initial API health/contact/support paths~~ ✅
|
|
|
|
- **Phase 2 — Layout Rebuild**: `0.2.x` ✅ Complete
|
|
- ~~App shell: Header, Footer, layout wrapper, mobile nav~~ ✅
|
|
- ~~Route pages fully built and navigable~~ ✅
|
|
- ~~Existing business content ported into React~~ ✅
|
|
- ~~Repeated service/industry content moved into data files~~ ✅
|
|
- ~~Static hash routing fully replaced by React Router~~ ✅
|
|
|
|
- **Phase 3 — Visual Overhaul**: `0.3.x` ✅ Complete
|
|
- ~~Modern light-first business design~~ ✅
|
|
- ~~Tailwind theme polish~~ ✅
|
|
- ~~Typography, spacing, radius, shadows, and responsive rhythm~~ ✅
|
|
- ~~Refined service/industry cards and CTA sections~~ ✅
|
|
- ~~Mobile-first layout polish~~ ✅
|
|
|
|
- **Phase 4 — Forms + Backend Hardening**: `0.4.x` 🔄 In Progress
|
|
- ~~Contact and support forms fully wired to Express~~ ✅
|
|
- ~~SQLite persistence verified~~ ✅
|
|
- ~~Client-side validation + Sonner feedback~~ ✅
|
|
- ~~Server-side validation + input sanitization~~ ✅
|
|
- ~~Optional Zoho forwarding layer~~ ✅
|
|
- Backend/API hardening as needed
|
|
|
|
- **Phase 5 — Verification + Release Readiness**: `0.5.x`
|
|
- Build/runtime verification
|
|
- Route and form testing
|
|
- Accessibility checks
|
|
- Documentation and release cleanup
|
|
- Final push to `dev` for the completed phase
|
|
|
|
Patch versions increment for completed task batches after the full pipeline finishes. Dispatch a task batch, run it through the required agents, then push that completed batch once. Example: Docker task batch goes through Neo → Private Hudson → Bishop → Ripley, then pushes as `0.2.1`. Notes/tags should use the version number only.
|
|
|
|
## Backend Goals
|
|
|
|
Initial API endpoints:
|
|
|
|
```txt
|
|
GET /api/health
|
|
POST /api/leads
|
|
POST /api/support
|
|
```
|
|
|
|
Initial SQLite tables:
|
|
|
|
- `leads`
|
|
- `support_requests`
|
|
|
|
Contact and support forms should submit through Express, save to SQLite, and show user feedback with Sonner.
|
|
|
|
## Agent Plan
|
|
|
|
The overhaul is handled through the agent pipeline below:
|
|
|
|
1. **Scarlett** — design system, Tailwind/shadcn layout direction, responsive polish, accessibility review
|
|
2. **Neo** — Vite/React implementation, Express API, SQLite/database work, build-system changes
|
|
3. **Private Hudson** — security review for API routes, form handling, validation, data exposure, dependency risks, and backend hardening
|
|
4. **Scarlett** — UI polish pass after implementation changes
|
|
5. **Bishop** — build/runtime verification, route checks, documentation verification, version consistency
|
|
6. **Ripley** — final local checks, commit, tag, and push to `dev`
|
|
|
|
Agents do not touch git. Ripley owns all commits, tags, and pushes.
|
|
|
|
## Batch Pipeline Rule
|
|
|
|
Work is dispatched as task batches. A batch runs through the required agents, then Ripley pushes that completed batch once.
|
|
|
|
Example Docker batch:
|
|
|
|
```txt
|
|
Neo → Private Hudson → Bishop → Ripley
|
|
```
|
|
|
|
The whole Docker batch is one checkpoint: `0.2.1`.
|
|
|
|
Do not increment the patch version for each individual agent inside the same batch. Increment only after the full task batch finishes and is ready to push.
|
|
|
|
Notes, tags, and checkpoint labels should use only the version number, such as `0.2.1`.
|
|
|
|
## Design Source of Truth
|
|
|
|
See [OVERHAUL_PLAN.md](./OVERHAUL_PLAN.md) for the full rebuild plan and Scarlett's design implementation brief.
|
|
|
|
## Docker Deployment
|
|
|
|
The application can be containerized using Docker for consistent deployment across environments.
|
|
|
|
### Prerequisites
|
|
|
|
- Docker (v20+)
|
|
- Docker Compose (v2+)
|
|
|
|
### Quick Start
|
|
|
|
#### Using Docker Compose (Recommended)
|
|
|
|
```bash
|
|
# Build and start the container
|
|
npm run docker:compose:up
|
|
|
|
# View logs
|
|
npm run docker:compose:logs
|
|
|
|
# Stop the container
|
|
npm run docker:compose:down
|
|
```
|
|
|
|
#### Manual Docker Build
|
|
|
|
```bash
|
|
# Build the image
|
|
npm run docker:build
|
|
|
|
# Run the container
|
|
npm run docker:run
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
Set the following in the `.env` file (not included in image by default):
|
|
|
|
```env
|
|
NODE_ENV=production
|
|
SERVER_PORT=3001
|
|
```
|
|
|
|
### Data Persistence
|
|
|
|
SQLite database is persisted in the `./db` directory. Data will survive container restarts.
|
|
|
|
**Note on data persistence:**
|
|
|
|
The application uses Docker named volumes (`queuenorth-db` and `queuenorth-logs`) to persist data. Docker manages the ownership and permissions of these volumes automatically, so no manual setup is required.
|
|
|
|
If you prefer to use host bind mounts instead, ensure your host `./db` and `./logs` directories are owned by UID 1001:
|
|
|
|
```bash
|
|
mkdir -p ./db ./logs
|
|
sudo chown -R 1001:1001 ./db ./logs
|
|
```
|
|
|
|
If you encounter "unable to open database file" errors, verify the host directory is writable by the container's UID (1001) or use named volumes as shown above.
|
|
|
|
### Health Check
|
|
|
|
The container includes a health check at `/api/health`. A healthy container returns:
|
|
|
|
```json
|
|
{"status":"ok","timestamp":"2026-05-12T..."}
|
|
```
|
|
|
|
### Ports
|
|
|
|
- Backend API: `3001` (host) → `3001` (container)
|
|
|
|
### Build Optimization
|
|
|
|
The `.dockerignore` excludes:
|
|
- `node_modules` (reinstalled in container)
|
|
- `dist` (built in container)
|
|
- `db/` (mounted as volume)
|
|
- `.git`, logs, private docs
|
|
|
|
This ensures minimal image size and reproducible builds.
|