Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -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.
80 changes: 80 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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
```
Comment on lines +43 to +56
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the project-structure code fence.

Line 43 opens a fenced block without a language hint, which triggers MD040 in markdownlint.

Proposed fix
-```
+```text
 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
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 43-43: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @CONTRIBUTING.md around lines 43 - 56, The project-structure code fence in
CONTRIBUTING.md is missing a language tag (triggering MD040); update the opening
fence from to include a language hint such astext (or bash/ansi if
preferred) so the block becomes a proper fenced code block and satisfies
markdownlint; no other content changes required—only modify the opening
backticks for the listed src/ tree block.


</details>

<!-- fingerprinting:phantom:poseidon:hawk -->

<!-- This is an auto-generated comment by CodeRabbit -->


## 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).
219 changes: 219 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="src/assets/logo.png">
<img alt="KDM" src="src/assets/logo.png" width="128" height="128">
</picture>
</p>

<h1 align="center">KDM Website</h1>

<p align="center">
<strong>Kubernetes &amp; Docker Monitor</strong> &mdash; marketing and documentation site for the KDM CLI.
<br>
Built with TanStack Start, React, TypeScript, and Tailwind CSS.
</p>

<p align="center">
<a href="https://github.com/KDM-cli/kdm-cli"><img alt="KDM CLI" src="https://img.shields.io/badge/KDM-CLI-000?style=flat-square&logo=kubernetes"></a>
<a href="LICENSE"><img alt="License: AGPL v3" src="https://img.shields.io/badge/License-AGPL%20v3-blue?style=flat-square"></a>
<a href="https://github.com/Yuvraj-Sarathe/kdm-website/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/Yuvraj-Sarathe/kdm-website?style=flat-square"></a>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use the canonical repository URL in badges and clone instructions.

Line 19 and Lines 91-92 point to Yuvraj-Sarathe/kdm-website; this PR targets KDM-cli/kdm-website, so docs should default to the canonical repo.

Proposed fix
-  <a href="https://github.com/Yuvraj-Sarathe/kdm-website/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/Yuvraj-Sarathe/kdm-website?style=flat-square"></a>
+  <a href="https://github.com/KDM-cli/kdm-website/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/KDM-cli/kdm-website?style=flat-square"></a>
-git clone https://github.com/Yuvraj-Sarathe/kdm-website.git
+git clone https://github.com/KDM-cli/kdm-website.git
 cd kdm-website

Also applies to: 91-92

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 19, Update the hard-coded repository URLs in README.md to
the canonical repo; replace occurrences of
"https://github.com/Yuvraj-Sarathe/kdm-website" (used in the contributors badge
and the clone instructions around lines 91-92) with
"https://github.com/KDM-cli/kdm-website" so badges and clone examples point to
the correct canonical repository; check for any other instances of the old
owner/repo string and update them consistently.

</p>

---

## 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 <target>` — list pods, containers, runners, and Minikube nodes across clouds |
| **Health diagnostics** | `kdm health <target>` — probe liveness, readiness, restarts, and resource pressure |
| **Live watch mode** | `kdm watch` — real-time streaming metrics with millisecond updates |
| **Smart log tailing** | `kdm logs <name>` — 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
```
Comment on lines +114 to +151
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the project-structure block metadata and route-tree path.

Line 114 uses a fenced block without a language tag (MD040), and Line 138 lists routeTree.gen.ts under src/routes/, but the file in this PR is src/routeTree.gen.ts.

Proposed fix
-```
+```text
 kdm-website/
 ├── src/
@@
-│   │   └── routeTree.gen.ts # Auto-generated route tree
+│   ├── routeTree.gen.ts     # Auto-generated route tree
@@
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 114-114: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 114 - 151, The README's project-structure code fence
lacks a language tag and incorrectly lists routeTree.gen.ts under src/routes/;
update the fenced block to use a language tag (e.g., ```text) and change the
tree line from "│   │   └── routeTree.gen.ts # Auto-generated route tree" to "│ 
├── routeTree.gen.ts     # Auto-generated route tree" (matching the actual file
location), ensuring the fence opens and closes correctly around the block;
modify the lines that mention routeTree.gen.ts and the opening fence token only.


---

## 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:

<div align="center" style="display: flex; justify-content: center; gap: 40px; flex-wrap: wrap;">
<a href="https://github.com/utkarsh232005" style="text-decoration: none; color: inherit;">
<img src="https://avatars.githubusercontent.com/u/137105846?v=4" width="64" height="64" alt="Utkarsh Patrikar" style="border-radius: 50%; display: block; margin: 0 auto;">
<strong>Utkarsh Patrikar</strong><br>
<span style="font-size: 0.85em;">Maintainer</span>
</a>
<a href="https://github.com/Yuvraj-Sarathe" style="text-decoration: none; color: inherit;">
<img src="https://avatars.githubusercontent.com/u/188508884?v=4" width="64" height="64" alt="Yuvraj Sarathe" style="border-radius: 50%; display: block; margin: 0 auto;">
<strong>Yuvraj Sarathe</strong><br>
<span style="font-size: 0.85em;">Contributor</span>
</a>
</div>

---

## 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.
Binary file added src/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading