diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..97d8203 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,60 @@ +# Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior: + +- The use of sexualized language or imagery, and sexual attention or advances + of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, + without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the project maintainers. All complaints will be reviewed and +investigated promptly and fairly. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), +version 2.1, available at +https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5d00ab8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +# Contributing to KDM Website + +Thank you for considering contributing to the KDM website. This document outlines the guidelines for contributions. + +## Code of Conduct + +By participating in this project, you agree to abide by the [Code of Conduct](CODE_OF_CONDUCT.md). + +## How to Contribute + +### Reporting Issues + +- **Bug reports:** Open a GitHub issue with a clear title and description, steps to reproduce, expected behavior, and actual behavior. +- **Feature requests:** Open a GitHub issue describing the feature, its use case, and any relevant context. +- **Documentation improvements:** Open a GitHub issue or submit a pull request directly. + +### Development Process + +1. Fork the repository +2. Create a feature branch (`git checkout -b feat/your-feature`) +3. Make your changes +4. Run the project locally to verify (`npm run dev`) +5. Run the linter (`npm run lint`) +6. Commit your changes following [conventional commits](https://www.conventionalcommits.org/) +7. Push to your fork and open a pull request + +### Development Setup + +```bash +# Clone your fork +git clone https://github.com/your-username/kdm-website.git +cd kdm-website + +# Install dependencies +npm install + +# Start the development server +npm run dev +``` + +### Project Structure + +``` +src/ +├── assets/ # Static assets (images, icons) +├── components/ # React components +│ ├── docs/ # Documentation view components +│ └── ui/ # UI primitives (shadcn/ui) +├── hooks/ # React hooks +├── lib/ # Utility functions and libraries +├── routes/ # TanStack Router route definitions +├── router.tsx # Router configuration +├── server.ts # SSR error wrapper (entry point) +├── start.ts # TanStack Start instance +└── styles.css # Tailwind CSS v4 styles +``` + +## Pull Request Guidelines + +- Keep PRs focused — one feature or fix per PR. +- Write descriptive commit messages using conventional commits. +- Ensure all lint checks pass before submitting. +- Update documentation if your change introduces new behavior. + +## Tech Stack + +| Tool | Purpose | +|------|---------| +| [TanStack Start](https://start.tanstack.com/) | React SSR framework | +| [TanStack Router](https://tanstack.com/router) | File-based routing | +| [TanStack Query](https://tanstack.com/query) | Data fetching and caching | +| [Tailwind CSS v4](https://tailwindcss.com/) | Utility-first CSS | +| [shadcn/ui](https://ui.shadcn.com/) | UI component primitives | +| [Vite](https://vitejs.dev/) | Build tool | +| [Cloudflare Workers](https://workers.cloudflare.com/) | Deployment target | +| [Vercel](https://vercel.com/) | Alternative deployment target | + +## License + +By contributing, you agree that your contributions will be licensed under the [GNU AGPL v3](LICENSE). diff --git a/README.md b/README.md new file mode 100644 index 0000000..aa65af5 --- /dev/null +++ b/README.md @@ -0,0 +1,219 @@ +

+ + + KDM + +

+ +

KDM Website

+ +

+ Kubernetes & Docker Monitor — marketing and documentation site for the KDM CLI. +
+ Built with TanStack Start, React, TypeScript, and Tailwind CSS. +

+ +

+ KDM CLI + License: AGPL v3 + Contributors +

+ +--- + +## Table of Contents + +- [About](#about) +- [Tech Stack](#tech-stack) +- [Getting Started](#getting-started) +- [Project Structure](#project-structure) +- [Available Scripts](#available-scripts) +- [Deployment](#deployment) +- [Contributing](#contributing) +- [Contributors](#contributors) +- [License](#license) + +--- + +## About + +This repository contains the marketing website for **KDM** — a cloud-native CLI that streams real-time health, logs, and metrics for Kubernetes clusters, Docker hosts, and Minikube from a single unified command. + +The website serves as both a landing page and documentation hub for the KDM CLI project. It features: + +- **Landing page** with hero, features, live command demos, and call-to-action sections +- **Documentation** with search, sidebar navigation, and markdown-rendered content +- **Dark, monochrome design** inspired by terminal aesthetics +- **Responsive layout** optimized for all screen sizes + +### Key Features (of KDM CLI) + +| Feature | Description | +|---------|-------------| +| **Unified visibility** | `kdm show ` — list pods, containers, runners, and Minikube nodes across clouds | +| **Health diagnostics** | `kdm health ` — probe liveness, readiness, restarts, and resource pressure | +| **Live watch mode** | `kdm watch` — real-time streaming metrics with millisecond updates | +| **Smart log tailing** | `kdm logs ` — structured log parsing with multi-line stitching and instant search | +| **Cloud-synced state** | Securely sync cluster state across your team | +| **Zero-trust by default** | Read-only kubeconfig context, scoped tokens, end-to-end encrypted streams | + +> **Note:** This repo hosts the *website*. The KDM CLI tool lives at [github.com/KDM-cli/kdm-cli](https://github.com/KDM-cli/kdm-cli). + +--- + +## Tech Stack + +| Layer | Technology | +|-------|-----------| +| **Framework** | [TanStack Start](https://start.tanstack.com/) (React SSR) | +| **Routing** | [TanStack Router](https://tanstack.com/router) (file-based) | +| **Data Fetching** | [TanStack Query](https://tanstack.com/query) | +| **Styling** | [Tailwind CSS v4](https://tailwindcss.com/) + [tw-animate-css](https://github.com/tw-in-js/tw-animate-css) | +| **UI Primitives** | [shadcn/ui](https://ui.shadcn.com/) (Radix-based) | +| **Build Tool** | [Vite](https://vitejs.dev/) | +| **Language** | [TypeScript](https://www.typescriptlang.org/) | +| **Icons** | [Lucide React](https://lucide.dev/) | +| **Deployment** | [Cloudflare Workers](https://workers.cloudflare.com/) / [Vercel](https://vercel.com/) | + +--- + +## Getting Started + +### Prerequisites + +- [Node.js](https://nodejs.org/) >= 18 +- npm (or bun, pnpm) + +### Installation + +```bash +# Clone the repository +git clone https://github.com/Yuvraj-Sarathe/kdm-website.git +cd kdm-website + +# Install dependencies +npm install + +# Start the development server +npm run dev +``` + +The site will be available at `http://localhost:5173`. + +### Build for Production + +```bash +npm run build +npm run preview +``` + +--- + +## Project Structure + +``` +kdm-website/ +├── src/ +│ ├── assets/ # Static assets (logo.png, etc.) +│ ├── components/ # React components +│ │ ├── docs/ # Documentation view components +│ │ ├── ui/ # shadcn/ui primitives +│ │ ├── Commands.tsx # Interactive command demo section +│ │ ├── CTA.tsx # Call-to-action section +│ │ ├── Features.tsx # Features grid section +│ │ ├── Footer.tsx # Site footer +│ │ ├── Hero.tsx # Hero section +│ │ ├── Navbar.tsx # Navigation bar +│ │ └── Terminal.tsx # Terminal animation component +│ ├── hooks/ # Custom React hooks +│ ├── lib/ # Utilities (docs, error handling, etc.) +│ ├── routes/ # TanStack Router route files +│ │ ├── __root.tsx # Root layout + SEO config +│ │ ├── index.tsx # Landing page +│ │ ├── docs.tsx # Documentation layout +│ │ ├── docs.index.tsx # Documentation index +│ │ ├── docs.$slug.tsx # Dynamic doc pages +│ │ ├── privacy.tsx # Privacy policy +│ │ ├── terms.tsx # Terms of service +│ │ └── routeTree.gen.ts # Auto-generated route tree +│ ├── router.tsx # Router configuration +│ ├── server.ts # SSR error wrapper +│ ├── start.ts # TanStack Start instance +│ └── styles.css # Global styles and Tailwind theme +├── .gitignore +├── CONTRIBUTING.md # Contribution guidelines +├── CODE_OF_CONDUCT.md # Code of conduct +├── LICENSE # GNU AGPL v3 +├── package.json +├── tsconfig.json +├── vite.config.ts # Vite configuration +└── wrangler.jsonc # Cloudflare Workers configuration +``` + +--- + +## Available Scripts + +| Script | Description | +|--------|-------------| +| `npm run dev` | Start development server with HMR | +| `npm run build` | Build for production | +| `npm run build:dev` | Build in development mode | +| `npm run preview` | Preview production build locally | +| `npm run lint` | Run ESLint across the project | +| `npm run format` | Format code with Prettier | + +--- + +## Deployment + +The site is configured for deployment to both **Cloudflare Workers** and **Vercel**. + +### Cloudflare Workers + +```bash +npm run build +npx wrangler deploy +``` + +Cloudflare configuration is in [`wrangler.jsonc`](wrangler.jsonc) — the server entry point is `src/server.ts`. + +### Vercel + +Deploy via the Vercel dashboard or CLI — the build process auto-detects Vercel and uses Nitro with the Vercel preset via [`vite.config.ts`](vite.config.ts). + +--- + +## Contributing + +We welcome contributions! Please read: + +- **[CONTRIBUTING.md](CONTRIBUTING.md)** — development setup, pull request guidelines, and project structure +- **[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)** — our community standards + +--- + +## Contributors + +Thanks to everyone who has contributed to this project: + +
+ + Utkarsh Patrikar + Utkarsh Patrikar
+ Maintainer +
+ + Yuvraj Sarathe + Yuvraj Sarathe
+ Contributor +
+
+ +--- + +## License + +This project is licensed under the **GNU Affero General Public License v3.0** — see the [LICENSE](LICENSE) file for full details. + +In short, you are free to use, modify, and distribute this software. If you modify and run it on a server accessible to users, you must make your modified source code available to those users under the same license. diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000..10af494 Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index bd21de3..da6e79b 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -1,3 +1,5 @@ +import { Link } from "@tanstack/react-router"; + export const Footer = () => { return (