commit d7af03e7a614d29c3bf8e84806255e72761c46f0 Author: Krystie Date: Wed Apr 15 20:49:12 2026 -0700 DashCaddy.net website diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..88d5fc3 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..f20f687 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..3178994 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "dashcaddy-site", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@stripe/stripe-js": "^9.2.0", + "next": "16.2.4", + "react": "19.2.4", + "react-dom": "19.2.4", + "stripe": "^22.0.1" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.4", + "tailwindcss": "^4", + "typescript": "^5" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..bc52b4a --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/.gitkeep b/public/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public/images/README.txt b/public/images/README.txt new file mode 100644 index 0000000..ab91e6f --- /dev/null +++ b/public/images/README.txt @@ -0,0 +1 @@ +Place your samiahmed7777-logo.png file in this directory diff --git a/public/images/samiahmed7777-logo.png b/public/images/samiahmed7777-logo.png new file mode 100644 index 0000000..11c97b1 Binary files /dev/null and b/public/images/samiahmed7777-logo.png differ diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..2652dee --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,197 @@ +import Navbar from "@/components/Navbar"; +import Footer from "@/components/Footer"; +import Link from "next/link"; + +export default function AboutPage() { + return ( + <> + +
+ {/* Hero */} +
+
+
+

+ Built for the{" "} + Self-Hosting Community +

+

+ DashCaddy was born from the frustration of managing dozens of + Docker containers, SSL certificates, and DNS records by hand. We + built the tool we wished existed. +

+
+
+ + {/* Story */} +
+
+

Our Story

+
+

+ Self-hosting is powerful. You own your data, you control your + infrastructure, and you're not at the mercy of SaaS + providers who can change their terms, raise prices, or shut down + overnight. But let's be honest — it can also be a + pain. +

+

+ Every new service means editing Caddyfiles, creating DNS + records, configuring SSL certificates, writing Docker Compose + files, and hoping everything plays nicely together. Multiply that + by 20, 30, or 50 services, and you've got a full-time + operations job on your hands. +

+

+ DashCaddy was built to solve this. One click to deploy an app. + SSL, DNS, and reverse proxy configuration happen automatically. + A beautiful dashboard to monitor everything. And when something + goes wrong, you know about it immediately — not when a + family member texts you that Plex is down. +

+

+ We believe self-hosting should be accessible to everyone, not + just people who enjoy writing YAML at 2 AM. DashCaddy makes it + beautiful and effortless. +

+
+
+
+ + {/* Values */} +
+
+

+ What We Believe In +

+
+ {[ + { + icon: "๐Ÿ”“", + title: "Open Core", + description: + "The core of DashCaddy is free and always will be. Premium features fund development, but the essentials are open to everyone.", + }, + { + icon: "๐Ÿ ", + title: "Your Data, Your Server", + description: + "DashCaddy runs entirely on your hardware. No cloud dependency, no telemetry, no phoning home. Your data never leaves your network.", + }, + { + icon: "๐Ÿ› ๏ธ", + title: "Built to Last", + description: + "We use proven technologies โ€” Caddy, Docker, Node.js. No bleeding-edge frameworks that break every six months. Stable, reliable, boring (in the best way).", + }, + ].map((value) => ( +
+
{value.icon}
+

+ {value.title} +

+

{value.description}

+
+ ))} +
+
+
+ + {/* Tech Stack */} +
+
+

+ Built With +

+
+ {[ + { + name: "Caddy", + role: "Reverse Proxy & SSL", + icon: "๐Ÿ”’", + }, + { + name: "Docker", + role: "Container Runtime", + icon: "๐Ÿณ", + }, + { + name: "Node.js", + role: "API Backend", + icon: "๐ŸŸข", + }, + { + name: "Technitium", + role: "DNS Server", + icon: "๐ŸŒ", + }, + ].map((tech) => ( +
+
{tech.icon}
+
{tech.name}
+
{tech.role}
+
+ ))} +
+
+
+ + {/* Contact / Support */} +
+
+

Get In Touch

+

+ Have questions, feedback, or want to contribute? We'd love to + hear from you. +

+ +
+
+ + {/* CTA */} +
+
+

+ Ready to simplify your homelab? +

+

+ Start with the free tier. Upgrade when you're ready. +

+ + View Pricing + +
+
+
+