Hermes 414c962d3c docs(catalog): audit and fix 10 hallucinations in install guides
Round-1 docs claimed things the code does not do. This commit rewrites
all 77 per-template pages + the catalog index to match reality:

CORRECTED:
- REST API payload shape: was {template, subdomain, port, environment}
  Real Joi schema (src/utilities/validate.js appDeploy) is
  {appId, config: {subdomain, port, mediaPath?, plexClaimToken?, ...}}
  All optional fields now documented per-schema.

- Auth methods: was just "Authorization: Bearer" — real middleware
  accepts three (TOTP session cookie, Authorization: Bearer JWT,
  X-API-Key header). All three now shown.

- Deploy is synchronous: was "poll GET /api/v1/apps/{id}/status" — there
  is no status endpoint. Response shape documented as
  {success, containerId, url, message, setupInstructions}.

- AI Intent Router: was "starts the deployment" — it returns a
  structured intent; the caller must POST /api/v1/apps/deploy to
  actually provision. Documented accurately.

- MCP dashcaddy_deploy_app: was treated as full deploy — it only writes
  the Caddy route + services.json entry, NOT the container. Documented
  as such with manual docker pull as next step.

- Watchtower: was claimed to auto-update every 24h — DashCaddy does NOT
  poll for new digests. Watchtower is a separate template with default
  schedule 0 0 4 * * * (cron 04:00). Documented.

- Update button: was "Apps → {Name} → Update" — no such endpoint exists.
  Manual docker pull + restart now documented.

- Restore-on-install: was "prompt to restore from snapshot during install"
  — no such prompt. POST /api/v1/apps/{appId}/restore documented.

- Backups: was "default daily snapshot" — backup schedule is
  configurable via backup-config.json, not "nightly" by default.
  Volumes ARE included; documented.

- Dashboard menu: was "Apps → Catalog" — actual entry is the
  "App Selector" button on the dashboard home. Documented.

- Dashboard URL: status.sami confirmed correct (configurable via
  dashboardHost).

Also fixes default port resolution: was using portList[0].split(":")[0]
which leaks "{{PORT}}" literal when the template uses the placeholder.
Now uses t.defaultPort (Joi-validated) first, falling back to portList.

Build: 78 routes prerender as static, TypeScript clean.
2026-08-15 03:28:15 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00
2026-04-15 20:55:30 -07:00

DashCaddy.net - Marketing Website

Marketing and sales website for DashCaddy, the self-hosted Docker dashboard with automatic SSL, DNS, and reverse proxy configuration.

Tech Stack

  • Next.js 16 with App Router and TypeScript
  • Tailwind CSS for styling
  • Stripe for subscription payments ($20/mo or $99/yr)

Getting Started

# Install dependencies
npm install

# Copy environment file and configure
cp .env.example .env.local

# Run development server
npm run dev

Open http://localhost:3000 to see the site.

Pages

Route Description
/ Landing page with hero, features, app showcase
/features Detailed feature breakdown
/pricing Pricing plans with Stripe Checkout
/docs Getting started guide and documentation
/about About page and company info
/success Post-checkout success page

Stripe Integration

See STRIPE_SETUP.md for detailed setup instructions.

API Routes:

  • POST /api/checkout - Creates Stripe Checkout session
  • POST /api/webhooks/stripe - Handles Stripe webhook events

Logo Setup

Place your samiahmed7777-logo.png file in public/images/ for the footer copyright branding.

Deployment

# Build for production
npm run build

# Start production server
npm start

The site can be deployed to Vercel, your own server (with Node.js), or any platform that supports Next.js.

License

Proprietary - DashCaddy

S
Description
DashCaddy website (sami-ahmed.net / dashcaddy.net)
Readme
6.9 MiB
Languages
TypeScript 99.6%
CSS 0.3%