No description
Find a file
Steve Duskett 0373bf4c28 fix: handbook hero images + responsive heights + hydration
- Switch hero from plain <img> to Next.js <Image> component
  - Fixes broken images by proxying through /_next/image
  - S3 URLs now work via configured remotePatterns
- Add responsive min-heights instead of hard-coded values
  - min-h-[420px] sm:min-h-[480px] lg:min-h-[550px]
- Add line-clamp-3 to title and excerpt for consistent carousel height
- Fix hydration mismatch with UTC timezone in date formatting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 05:41:00 +01:00
.docker fix: responsive layout - remove nested max-width constraints in templates 2026-01-09 22:38:38 +01:00
.playwright-mcp feat: add Wikipedia-style wiki components for handbook articles 2026-01-15 02:00:22 +01:00
.serena fix: update doc references to holy-13/serper_discovery.py 2026-01-14 23:08:08 +01:00
content/handbook/laws chore: track all markdown documentation (previously hidden by gitignore) 2025-12-08 21:56:20 +01:00
docs feat: add Wikipedia-style wiki components for handbook articles 2026-01-15 02:00:22 +01:00
drizzle fix: sync discovered_urls schema and fix old path references 2026-01-14 23:01:06 +01:00
exports fix: critical bug fixes for TODO cleanup implementation 2025-12-12 00:48:26 +01:00
public feat: improve create topic page - resizable editor + dynamic category grid 2026-01-16 02:37:05 +01:00
scripts feat: add comprehensive law metadata for all 53 handbook law articles 2026-01-16 02:57:30 +01:00
src fix: handbook hero images + responsive heights + hydration 2026-01-16 05:41:00 +01:00
tests fix: range card static maps, pipeline NUL sanitization, various UI updates 2025-12-11 18:31:53 +01:00
.dockerignore fix: add .dockerignore and force NODE_ENV=production in nixpacks 2025-11-17 00:23:49 +01:00
.gitignore chore: restore 39 stock images needed by articles, archive unused 2026-01-09 06:26:45 +01:00
.mcp.json fix: restore missing dashboard tab panels (campfire, notifications, library, submissions) 2025-12-19 01:24:10 +01:00
.nvmrc fix: remove legacy NextAuth packages causing Html import error 2025-11-22 10:33:10 +01:00
.prettierignore feat: integrate Drizzle ORM, TanStack Query, Zustand, Zod, ESLint, and Prettier 2025-09-30 13:40:52 -06:00
.prettierrc feat: integrate Drizzle ORM, TanStack Query, Zustand, Zod, ESLint, and Prettier 2025-09-30 13:40:52 -06:00
audit_safety.json fix: NodeBB posting privileges + wiki keyboard nav + handbook infoboxes 2026-01-15 20:07:09 +01:00
audit_sample.json fix: NodeBB posting privileges + wiki keyboard nav + handbook infoboxes 2026-01-15 20:07:09 +01:00
CHANGELOG.md docs: update changelog and project context 2026-01-15 23:51:37 +01:00
CLAUDE.md docs: update changelog and project context 2026-01-15 23:51:37 +01:00
CONTRIBUTING.md chore: add protected pipeline rules + save 5 utility scripts 2025-12-03 21:04:39 +01:00
drizzle.config.ts feat: integrate Drizzle ORM, TanStack Query, Zustand, Zod, ESLint, and Prettier 2025-09-30 13:40:52 -06:00
eslint.config.mjs feat: restore handbook tabs, URL persistence, and laws view layout 2026-01-05 20:57:44 +01:00
GEMINI.md fix: NodeBB API voting/bookmark use PUT, not POST 2026-01-15 21:48:23 +01:00
link to CLAUDE.md feat: improve create topic page - resizable editor + dynamic category grid 2026-01-16 02:37:05 +01:00
next.config.js fix: switch NodeBB Write API from v3 to v2 for _uid delegation 2026-01-15 20:36:50 +01:00
nixpacks.toml fix: combine build and static copy in single command for cache mount compatibility 2025-11-23 05:56:09 +01:00
package-lock.json feat: add in-article search, image lightbox, wiki tab improvements 2026-01-15 18:02:58 +01:00
package.json feat: add in-article search, image lightbox, wiki tab improvements 2026-01-15 18:02:58 +01:00
playwright.config.ts chore: add protected pipeline rules + save 5 utility scripts 2025-12-03 21:04:39 +01:00
postcss.config.mjs fix: configure autoprefixer to preserve backdrop-filter for glassmorphism effects 2025-11-24 19:13:33 +01:00
README.md chore: bump version to v1.3.43 2026-01-06 00:58:04 +01:00
sentry.edge.config.ts fix: remove invalid telemetry option from Sentry configs 2026-01-09 23:55:12 +01:00
sentry.server.config.ts fix: remove invalid telemetry option from Sentry configs 2026-01-09 23:55:12 +01:00
tailwind.config.ts feat: add life to embedded editor with glowing focus border 2026-01-07 20:44:17 +01:00
tsconfig.json fix: add missing logger imports and fix call signatures 2026-01-12 01:56:08 +01:00
validation_summary.txt feat: handbook article enhancements, discipline landing pages, ticker improvements 2025-12-29 22:17:25 +01:00
vercel.json fix: improve dev login page for mobile and replace signature button 2025-11-01 19:13:06 +01:00
vitest.config.mts test: achieve 42/42 passing integration tests for gamification systems 2025-11-13 04:11:22 +01:00
vitest.setup.ts test: achieve 42/42 passing integration tests for gamification systems 2025-11-13 04:11:22 +01:00

The Boise Gun Club

Idaho's firearms community platform - Events, business directory, shooting locations, and community forums.

Next.js React TypeScript PostgreSQL

Production: https://theboisegunclub.com Version: 1.3.43


Quick Start

# Clone and install
git clone https://github.com/yourusername/theboisegunclub.git
cd theboisegunclub
npm ci --legacy-peer-deps

# Configure environment
cp .env.example .env.local
# Edit .env.local with your credentials (see docs/ENVIRONMENT_VARIABLES.md)

# Verify database connection (port 5433)
PGPASSWORD=prod123 psql -h 127.0.0.1 -p 5433 -U bgc_prod -d boise_gun_club_prod -c "SELECT 1"
npm run drizzle:migrate

# Start dev server
npm run dev

Access: http://localhost:1337


Tech Stack

Layer Technologies
Frontend Next.js 15 (App Router), React 19, TypeScript 5.7, Tailwind CSS v4, Framer Motion
Backend Node.js 20+, PostgreSQL 16, Drizzle ORM, JWT auth
Infrastructure Docker, Coolify (self-hosted), Nixpacks
External Services Mapbox, NodeBB (forum), Stalwart (email)

Project Structure

src/
├── app/                    # Next.js App Router (168 API endpoints)
│   ├── (auth)/            # Login, register, OAuth
│   ├── (dashboard)/       # User dashboard
│   ├── api/               # API routes
│   ├── events/            # Event calendar
│   ├── directory/         # Business directory
│   ├── handbook/          # Knowledge base
│   ├── ranges/            # Shooting locations
│   └── campfire/          # Community forum
├── components/            # React components (atomic design)
├── lib/                   # Business logic, auth, database
├── stores/                # Zustand state management
└── styles/                # Tailwind v4 tokens and utilities

docs/                      # Documentation
scripts/                   # Utility and pipeline scripts
scrapers/                  # Python data pipeline
drizzle/                   # Database migrations

Development

Prerequisites

  • Node.js 20+
  • Docker (for PostgreSQL)
  • Python 3.11+ (optional, for data pipeline)

Environment Variables

Copy .env.example to .env.local and configure. See docs/ENVIRONMENT_VARIABLES.md for complete documentation.

Required variables:

  • DATABASE_URL - PostgreSQL connection string
  • JWT_SECRET - Authentication secret
  • NEXT_PUBLIC_MAPBOX_TOKEN - Mapbox public token

Common Commands

# Development
npm run dev              # Start dev server
npm run lint             # Run ESLint
npx tsc --noEmit         # Type check (don't use npm run build during dev)

# Database
npm run drizzle:migrate  # Run migrations
npm run seed             # Seed test data

# Testing
npm run vitest           # Unit tests
npm run test:e2e         # E2E tests (Playwright)

# Data Pipeline
npm run pipeline         # Full pipeline (Serper -> Scrape -> LLM -> DB)
npm run enrich-events    # LLM enrichment only
npm run geocode          # Batch geocoding

Database Access

# Production database on port 5433
PGPASSWORD=prod123 psql -h 127.0.0.1 -p 5433 -U bgc_prod -d boise_gun_club_prod

Documentation

Document Description
CLAUDE.md Development guidelines (read first)
docs/PROJECT_BRIEFING.md Feature overview
docs/ENVIRONMENT_VARIABLES.md Environment configuration
docs/PRODUCTION_DEPLOYMENT_CHECKLIST.md Deployment procedures
docs/API_REFERENCE.md API endpoint documentation

Deployment

Platform deploys via Coolify with git push to main. See docs/PRODUCTION_DEPLOYMENT_CHECKLIST.md for complete deployment procedures.

# Pre-deployment checks
npm run lint
npx tsc --noEmit
npm run build

# Deploy
git push origin main

License

Proprietary - All rights reserved.


Contact

Developer: Steve Duskett Email: steve@boisegunclub.com Website: https://theboisegunclub.com