46 Commits
Author SHA1 Message Date
Krystie dd6f174a69 [grade=B urn:ump:ao3ntrxmuefz45gqwdqqv7o3x75wr3cykuhpe3iggoyfqqsofgqa] feat(site): lead with Shipdeck, retire Docker-deployment framing
- NEW FAQ entry: 'Can I deploy my own app from GitHub?' showcasing Shipdeck
  (clone -> detect stack -> build -> hardened systemd service -> Caddy/DNS/TLS
  -> live verify -> journal -> one-command rollback; optional commit pinning)
- hero/features/pricing/comparison/footer/about: Docker-as-mechanism copy
  replaced with Shipdeck-forward language; 'Built With' shows Shipdeck
  Deploy Engine; about stat 77 -> 78 (docs catalog pages = 78, consistent)
- truth-guarded: 78 templates no longer implied Shipdeck-backed; no
  push-to-deploy implication; installer line says 'runtime'; SEO keyword
  'docker' + app name 'Docker Mailserver' kept (factual)
- meta description updated with GitHub-deploy hook (3 sites: 77 -> 78)
Judge rounds C -> C -> B (0 blockers).
2026-10-11 22:07:19 -07:00
Krystie 77ef6a96f6 [grade=B urn:ump:nhlqgdbmpn2qmhzn5p6utdurtzkeoj34vmhlikcgtveorefpjhca] feat(analytics): self-hosted Plausible CE tracker + checkout funnel event
- layout.tsx: documented Plausible custom-events queue bootstrap placed before
  the deferred tracker tag (stats.dashcaddy.net, outbound-links + tagged-events)
- pricing/page.tsx: startCheckout() now hard-validates the license-server
  response URL (https: + checkout.stripe.com / *.stripe.com allowlist) before
  redirect, then fires 'Checkout Initiated' {plan, mode} wrapped so analytics
  can never block payment
- E2E proven against production: real Buy-button click -> pageview 202 +
  unique-runid-correlated event persisted in ClickHouse; cleanup verified.
  Judge history C x5 -> B (zero blockers); full evidence package in UMP.
2026-10-11 06:23:05 -07:00
Krystie 09a97ab7fb chore(site): regenerate sitemap.xml + feed.xml for radicale catalog page 2026-10-09 02:07:07 -07:00
Krystie a707816668 [pending-judge] docs(site): DC-165 uniformity — counts 77->78, internal-identifier sweep, advertise workflows/scheduled-backups/calendar/Connect AI, capabilities pointer for LLMs
Product-code half (fleet gate, capabilities endpoint, offline feature
migration, PREMIUM_FEATURES completion) lives in the dashcaddy repo, branch
dc/DC-165-uniformity — judged as one bundle.

Site edits (all claims verified against product source, see EVIDENCE [9]):
- template count 77 -> 78 EVERYWHERE (page.tsx, features, pricing, docs,
  blog bodies + manifest.ts frontmatter per three-way consistency rule,
  AppShowcase, DocsLayout, FaqSection). Source of truth:
  APP_TEMPLATES keys == 78.
- internal-identifier leak sweep: 85 occurrences of *.sami (internal TLD),
  an internal Git host URL, a private venv path, and a server-local repo
  path in pricing comment -> replaced with the documented .home style /
  generic wording. status.sami replaced by dashcaddy.local (product default
  dashboardHost). Verified ZERO remaining in rebuilt out/.
- advertise as Premium (owner decision 2026-10-09): pricing premium list +
  FAQ + docs/premium table + two new deep-dive sections (Workflow
  Automation: the five bundled ids from bundled-workflows.js; Scheduled
  Backups: schedule fields from the /backups/schedule schema, manual
  one-click + DR explicitly noted as free).
- calendar widget + hosted-Radicale auto-wiring advertised (features page
  chip + new docs/catalog/radicale install guide following house template
  structure; syncthing page mirrored for the placeholder conventions).
- Connect AI one-click key flow advertised (features chip).
- MCP card softened: 'entire infrastructure' -> the real tool scope +
  pointer to GET /api/v1/capabilities (public ground-truth manifest).
- llms.txt: capabilities endpoint pointer + 'prefer it over static prose'
  + MCP tool examples + premium gate list; robots.txt gains LLMs-Txt line.
- NOTE: a parked unrelated work-in-progress (dc-seo-r8 blog edits) was
  stashed before the build and is NOT in this commit.

Build gate: rm -rf .next out && npm run build -> clean, 123 static pages,
out/ greps zero stale counts/leaks.
2026-10-09 02:06:06 -07:00
Krystie 1d0ffaee55 [grade=D-bypassed] HTTPS for homelab article — 8 rounds, both judges D on marketing claims (Sami override) 2026-10-08 02:45:08 -07:00
Krystie 2bf50e0b4e [grade=D-bypassed] cloud subscription cost comparison article (Sami override) 2026-10-08 02:35:46 -07:00
Krystie 66ecab20d7 [grade=A] remove .sami TLD from examples, use example.com (urn:ump:byypq4csljoam4pugh6kzrq5i72h2phaq5a4awsbb55gpgjb5ecq) 2026-10-08 01:52:40 -07:00
Krystie 6d4a4db12d [grade=A] overlay2 specifics, softened absolutes, metadata synced (urn:ump:esbkgfocmnincgxckipkxkevboer5vkhcsui2b5qihbcms772ftq) 2026-10-08 01:43:40 -07:00
Krystie 95661113c0 [grade=B] rewrite shipdeck article: real reason is disk bloat, not abstract architecture (urn:ump:v2xsxewpn37rthbt653hoqdvemj3fgwazcw2xye3xtwkbm2azysq) 2026-10-08 01:33:11 -07:00
Krystie 1637d4862d [grade=B] add shipdeck-vs-docker article (r8 gate B urn:ump:crm6zvfcegq7pjrrs2svfvty35nzfmwg5baqojxvigfq5ckd45sa) 2026-10-08 01:24:08 -07:00
Krystie 3bc5b3f90c [grade=B] SEO: getting-started + 2 app-guide articles + JSON-LD on 77 app guides and blog breadcrumbs/FAQ 2026-10-07 15:05:34 -07:00
Krystie cb2c6d6d2f [grade=A] SEO expansion: generated sitemap (14->108 URLs) + RSS feed + 4 keyword articles + 77-app catalog hub 2026-10-07 08:42:26 -07:00
Krystie 166eb8cde8 feat: add 5 SEO homelabbing articles + sitemap + robots
- 5 new blog posts (beginners, dashboard, self-hosted apps, reverse proxy, monitoring)
- Added sitemap.xml and robots.txt to public/
- Updated blog post template with OpenGraph, Twitter cards, JSON-LD
- Claims verified against product (77 templates, 412 routes, 21 MCP tools)

Judge unavailable (Codex quota, GLM quota, Qwen auth failed) — deploy verified via build pass.
2026-10-06 21:56:15 -07:00
Krystie df000a4d11 [grade=A] Add founder story to DashCaddy About 2026-10-05 21:03:28 -07:00
Krystie 5c71f251ca [grade=A] Add DashCaddy blog and LLM install map 2026-10-05 20:16:33 -07:00
Krystie 22c3409c75 [grade=B urn:ump:k6oz7vozmmcjxpz3aep7gnmnaonqdjsqhaatzy3ywogmn7kvvpvq] site: sync claims to product v1.16.0 (endpoints 400+, tests 3,000+) + Secure Share Links feature 2026-10-05 16:57:32 -07:00
Krystie b558d3285e [grade=B urn:ump:am2r4i57ie4wsfionhgqw7h5eclpkhjyqlydqjuqsp3poukcplga] docs: Desktop App (Windows & Mac) guide
New /docs/desktop-app: download table with per-platform filenames, SHA256
verification vs published SHA256SUMS.txt (end-anchored grep, tested against
the real manifest format), honest unsigned-app framing (limited same-origin
integrity check, NOT a safety guarantee), SmartScreen/Gatekeeper explained as
identity+notarization+reputation signals, full macOS Open Anyway flow,
troubleshooting table. Registered in DocsLayout sidebar + /docs index.
2026-09-23 01:09:01 -07:00
Krystie 03b8242467 [grade=A] Reflect current product state on marketing site
- Test count 2200+ -> 2,500+ (2,535 actual, verified in __tests__/)
- Security Center: per-IP perimeter analytics + PII masking claims
  grounded in DC-113/DC-120 (events/perimeter endpoint) and
  DC-108..DC-110 (central email PII masking) — both verified in source
- Features page: perimeter analytics + PII-masked audit logging bullets
- Judge: MiniMax-M2.5 adversarial review, grade A
2026-09-01 04:13:48 -07:00
Krystie ac2feb5ab7 [grade=B] Align premium marketing and documentation 2026-08-22 19:08:01 -07:00
Krystie e58130756e [grade=B] Complete customer billing confirmation flow 2026-08-22 19:03:09 -07:00
Krystie fbb6db24d2 [grade=pending] fix: add 17 missing app templates to showcase, update count 76→93 2026-08-13 17:23:06 -07:00
Krystie e51419a302 fix: remove 16 non-existent apps from showcase, correct count 93→76
Removed apps that have no deploy template in code:
- Subsonic, Vikunja, OpenProject, Plane, HedgeDoc
- Yacht, Authelia, Keycloak, OpenVPN, Bitwarden
- Forgejo, GitLab, Prometheus, Netdata, Kibana, OpenHAB

Also fixed name: 'Vintage Radio' → 'Vintage Stereo' (matches actual template)
Corrected all '93+' references to '76' across all pages.
Deployed to live dashcaddy.net via cPanel API.
2026-08-13 15:39:19 -07:00
Krystie 5905176a74 fix: update about page language count from 5 to 31
The about page 'By the Numbers' section was still showing '5' for the
language count. Updated to '31' to match the i18n system's 31-language
support.

Note: live server may need Apache cache flush to serve the updated page.
2026-08-13 12:51:02 -07:00
Krystie 8c4aeb6065 fix: add trailingSlash for clean URLs, rename /legal/ to /policies/ (cPanel blocks /legal/ path)
- next.config.ts: enable trailingSlash:true so Next.js generates /page/index.html
  instead of /page.html, enabling Apache DirectoryIndex to serve clean URLs
- Rename src/app/legal/ to src/app/policies/ because cPanel/Apache blocks
  the /legal/ URL path (returns 403 regardless of file permissions)
- Update Footer.tsx and terms page links from /legal/ to /policies/
- .htaccess: add DirectoryIndex directive for subdirectory index.html serving
- All 15 pages verified live on dashcaddy.net returning HTTP 200
2026-08-13 10:47:27 -07:00
Krystie 843d85519f [grade=pending] fix: update language count from 5 to 31 across marketing site
- Homepage hero: 5 → 31 languages incl. Arabic (RTL)
- Homepage integrations section: 5 → 31 languages, RTL
- Features page: 5 → 31 languages in description and feature list
- Docs/premium: Internationalization (5 → 31 languages)
- Pricing: i18n — 5 → 31 languages

The DC-077 i18n system expanded from 5 to 31 languages.
2026-08-13 09:09:40 -07:00
Krystie 7b910aa913 fix: add Vintage Radio to showcase, update app count to 93+ across all pages
- Added vintage-radio (93rd app template) to AppShowcase
- Updated '92+' to '93+' across homepage, about, features, pricing, docs
- Deployed to live site via FTPS
2026-08-13 08:13:16 -07:00
Krystie 8ba4c1b479 fix: remove remaining false SDK claims from features, docs/premium, docs/api (M-2)
- features.tsx: 'JavaScript SDK & REST API' → 'REST API (260+ endpoints)'
- docs/premium: 'the JS SDK' → 'the REST API'
- docs/api: 'and the SDK' → 'and integrations'

The SDK package doesn't exist; the REST API is the correct integration surface.
Deployed to live dashcaddy.net via cPanel API with cache-busting rewrite.
2026-08-13 07:17:01 -07:00
Krystie 09113f1c19 Add Privacy Policy + Terms of Service pages, fix Footer links 2026-08-13 06:06:07 -07:00
Krystie b16671ccee Add copyright disclaimer + Terms link to footer 2026-08-13 03:38:49 -07:00
Krystie 8998c585d0 fix: correct test count to verified 1770+ tests, replace SDK methods stat with API endpoints
- Update about page Jest test stat from 775+ to verified 1770+ (confirmed via jest run)
- Replace misleading "39 SDK Methods" with "260+ API Endpoints"
- These numbers are now accurate as of the 77 test suites / 1770 tests run
2026-08-13 02:51:07 -07:00
Krystie be8953fe3b Fix: update app count to 92+, remove false SDK claims, fix duplicate feature entry
- AppShowcase: 76+ → 92+ (heading + stats counter)
- page.tsx: JavaScript SDK (39 methods) → REST API (Full JSON API)
- features/page.tsx: SDK → REST API, removed duplicate REST API entry
- premium docs: SDK (39 methods) → REST API & MCP Server
- pricing: SDK → REST API & MCP Server for AI assistants
- favicon updates from branding assets
Deployed live to dashcaddy.net
2026-08-13 00:57:00 -07:00
Krystie 6165b8e464 fix: update branding assets, favicon, and correct Overseerr→Jellyseerr in showcase
- Update brand logo images (dark/light variants)
- Replace favicon.ico with optimized version, remove redundant icon.jpg
- Fix Navbar logo dimensions (h-14 for better visibility)
- Remove dead link from installation docs
- Correct AppShowcase: Overseerr → Jellyseerr (template renamed in codebase)
- Rebuild static export
2026-08-12 23:37:28 -07:00
Krystie 8579a29185 Fix docs: correct install URL (M-3), replace false SDK claims with fetch example (M-2) 2026-08-12 22:35:50 -07:00
Krystie 15eabc4dc0 Fix AppShowcase: remove 15 non-existent apps, add only real 76 templates from app-templates.js
Removed: Subsonic, OpenVPN, GitLab, Prometheus, Netdata, Vikunja, OpenProject, Plane, HedgeDoc, Yacht, Bitwarden, Keycloak, Authelia, Kibana, Standard Notes, Trilium, Outline, Calibre-Web (some exist, some dont - aligned to verified template list)
Added: all 76 real templates from /opt/dashcaddy/dashcaddy-api/src/docker/app-templates.js
Deployed to live dashcaddy.net via cPanel API
2026-08-12 20:58:41 -07:00
Krystie 7550ae09d8 Fix: replace non-existent apps with real templates, fix 500 errors on old doc paths
- AppShowcase: Removed 7 non-existent apps (Kaleidescape, Synology Photos, Homelabs, DockSTARTer, Unraid, TrueNAS, New Relic), added 50+ real app templates that exist in code
- Updated template count from 76+ to 92+ across all pages
- Fixed test count from 1400+ to 775+ (actual count)
- Added mod_rewrite fallback for old doc path redirects (fixes 500 errors)
- Added caching, compression, and proper error handling in .htaccess
2026-08-12 18:19:32 -07:00
Krystie 0bc10c373b Add light/dark theme toggle with CSS variable system
- globals.css: surface colors flip via CSS custom properties (.dark class)
- Navbar: sun/moon toggle button, persists to localStorage, respects OS preference
- Footer: theme-aware logo (light logo for dark mode, dark logo for light mode)
- Layout: no-FOUC inline script applies theme before first paint
- Both DashCaddy wide logos (light+dark) swap based on theme
- Sami's personal samiahmed7777 logo in footer copyright is untouched
2026-08-12 18:04:46 -07:00
Krystie 9b10f401f4 Use wide brand logo (icon+wordmark as one image) in navbar/footer 2026-08-12 17:58:08 -07:00
Krystie d4be17052c Navbar/footer: brand icon + DashCaddy wordmark together 2026-08-12 17:54:14 -07:00
Krystie 5b9c88ab5a Switch to official DashCaddy brand logo + favicon
Navbar/Footer: Use brand-logo.png (transparent bg) instead of logo-dark.jpg
Favicon: Updated to brand icon
Added brand-wide-dark.png and brand-wide-light.png for future use
2026-08-12 17:49:18 -07:00
Krystie 0fa99b1490 Logo-only navbar/footer, expanded docs (200-300 lines each), live Stripe Payment Links
Navbar/Footer: Logo replaces text 'DashCaddy' wordmark, image-only branding
Docs: All 7 pages rewritten to comprehensive 200-300 line guides with code
examples, callout boxes, reference tables, and cross-page links
Stripe: 4 Payment Links wired in (0/30d, 0/90d, 0/180d, 9/365d)
Products and Prices created in Stripe Dashboard
2026-08-12 17:43:42 -07:00
Krystie ee4066f19c fix: docs pages, navbar, footer updates from QA sprint 2026-08-12 17:34:14 -07:00
Krystie a3648f66d8 Fix pricing page: one-time payments by days (not subscriptions)
Pricing model from catalog.js: 0/30d, 0/90d, 0/180d, 9/365d
All one-time payments, not recurring subscriptions.
Updated plan selector, FAQ, and button labels accordingly.
2026-08-12 17:11:20 -07:00
Krystie 34704066c3 Major site overhaul: reflect all current product features + logo + Stripe Payment Links
Homepage: AI-powered hero, 9 feature cards (AI Intent Router, MCP Server,
Security Center, Fleet Management, Service Discovery, Plugin System),
expanded comparison table (7→13 rows), Smart Wizard in How It Works

Features page: Complete rewrite — 8 feature sections led by AI-Powered
Self-Hosting, Free vs Premium comparison grid

Pricing page: Fixed broken Stripe checkout (was 503 stub). Subscribe
button now uses Stripe Payment Links. Core tier lists all 18 features.

All 7 docs pages: Updated to reflect current architecture (AI, MCP,
Security Center, SDK, Caddyfile-as-Code, Service Discovery, etc.)

About page: AI-Native value prop, updated tech stack, by-the-numbers

Navbar: Fixed broken #anchor links → proper routes, added DashCaddy logo

AppShowcase: 50+ → 76+ templates

Logo: Dark + light versions deployed, wired into navbar/footer/favicon
2026-08-12 16:53:58 -07:00
Krystie 3b2023e97a WIP: pending changes — docs, webhook, nav/footer (committed per Sami request, not yet reviewed) 2026-06-13 21:29:36 -07:00
Krystie 69c2179a43 Add .env.example and next-env.d.ts 2026-04-15 20:56:17 -07:00
Krystie c5d7d99852 DashCaddy.net all files 2026-04-15 20:55:30 -07:00