Skip to content
Merged
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
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# KShield
<div align="center">
<img src="assets/logo.svg" width="96" alt="KShield logo" />

> The pre-commit security firewall for developers. Catches hardcoded secrets, broken access control, AI hallucinations, and supply-chain risks — entirely on your machine, before a single line reaches your remote.
# KShield

[![Build](https://img.shields.io/github/actions/workflow/status/YTT-Global/kshield/kshield-ci.yml?label=CI&style=flat-square)](https://github.com/YTT-Global/kshield/actions)
[![Release](https://img.shields.io/github/v/release/YTT-Global/kshield?style=flat-square)](https://github.com/YTT-Global/kshield/releases/latest)
[![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/YTTGlobal.kshield-vscode?style=flat-square&label=VS%20Code%20Marketplace)](https://marketplace.visualstudio.com/items?itemName=YTTGlobal.kshield-vscode)
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)
[![Stack](https://img.shields.io/badge/stack-Rust%20·%20FastAPI%20·%20React-red?style=flat-square)](#tech-stack)
**The pre-commit security firewall for developers**

Catches hardcoded secrets, broken access control, AI hallucinations, and supply-chain risks — entirely on your machine, before a single line reaches your remote.

[![Build](https://img.shields.io/github/actions/workflow/status/YTT-Global/kshield/kshield-ci.yml?label=CI&style=flat-square)](https://github.com/YTT-Global/kshield/actions)
[![Release](https://img.shields.io/github/v/release/YTT-Global/kshield?style=flat-square)](https://github.com/YTT-Global/kshield/releases/latest)
[![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/YTTGlobal.kshield-vscode?style=flat-square&label=VS%20Code%20Marketplace)](https://marketplace.visualstudio.com/items?itemName=YTTGlobal.kshield-vscode)
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)
[![Stack](https://img.shields.io/badge/stack-Rust%20·%20FastAPI%20·%20React-red?style=flat-square)](#tech-stack)
</div>

---

Expand Down Expand Up @@ -245,6 +251,7 @@ kshield/
├── homebrew/kshield.rb # Homebrew formula
├── install.sh # curl | bash installer
├── pyproject.toml # pip install kshield
├── assets/logo.svg # Brand mark, used in this README
├── LICENSE # MIT
├── CHANGELOG.md
└── docs/
Expand Down
62 changes: 62 additions & 0 deletions assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 11 additions & 9 deletions frontend/src/components/Landing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,11 @@ const DETECTIONS: { Icon: React.FC<{ size: number; className: string }>; label:
];

const INSTALL_TABS = [
{ label: 'curl', cmd: 'curl -fsSL https://raw.githubusercontent.com/YTT-Global/kshield/main/install.sh | bash' },
{ label: 'brew', cmd: 'brew install YTT-Global/tap/kshield' },
{ label: 'npm', cmd: 'npx kshield init' },
{ label: 'pip', cmd: 'pip install kshield && kshield-backend &' },
{ label: 'curl', cmd: 'curl -fsSL https://raw.githubusercontent.com/YTT-Global/kshield/main/install.sh | bash' },
{ label: 'brew', cmd: 'brew install ytt-global/tap/kshield' },
{ label: 'npm', cmd: 'npx kshield init' },
{ label: 'pip', cmd: 'pip install kshield && kshield-backend &' },
{ label: 'VS Code', cmd: 'code --install-extension YTTGlobal.kshield-vscode' },
];

const STATS = [
Expand All @@ -137,8 +138,9 @@ const FEATURES = [
'Suppression config via .kshield.yml',
'React dashboard with live scan telemetry',
'Tauri desktop app for native experience',
'VS Code extension with inline diagnostics',
'GitHub Actions CI integration built-in',
'Homebrew · npm · pip · curl install paths',
'Homebrew · npm · pip · curl · VS Code install paths',
];

// ── Landing ──────────────────────────────────────────────────────────────────
Expand All @@ -165,7 +167,7 @@ export const Landing: React.FC = () => {
<div className="flex items-center gap-3">
<KShieldLogo size={26} />
<span className="font-bold tracking-widest uppercase text-sm">KShield</span>
<span className="text-[10px] font-mono text-slate-400 dark:text-slate-500 border border-slate-200 dark:border-slate-700 px-1.5 py-0.5 rounded">v1.0.0</span>
<span className="text-[10px] font-mono text-slate-400 dark:text-slate-500 border border-slate-200 dark:border-slate-700 px-1.5 py-0.5 rounded">v1.1.0</span>
</div>
<div className="flex items-center gap-2">
<button
Expand Down Expand Up @@ -307,16 +309,16 @@ export const Landing: React.FC = () => {
<div className="max-w-2xl mx-auto text-center">
<p className="text-[10px] font-bold font-mono text-red-500 uppercase tracking-widest mb-3">Install</p>
<h2 className="text-3xl sm:text-4xl font-black mb-4">Pick your path</h2>
<p className="text-slate-600 dark:text-slate-400 text-sm mb-8">All four point to the same binary and the same experience.</p>
<p className="text-slate-600 dark:text-slate-400 text-sm mb-8">All paths point to the same binary and the same experience.</p>

{/* Install block always dark — it's a code terminal */}
<div className="rounded-xl border border-slate-700 bg-slate-900 overflow-hidden text-left">
<div className="flex border-b border-slate-800">
<div className="flex border-b border-slate-800 overflow-x-auto">
{INSTALL_TABS.map((t, i) => (
<button
key={t.label}
onClick={() => setTab(i)}
className={`px-5 py-3 text-sm font-mono font-semibold transition-colors ${
className={`flex-shrink-0 px-5 py-3 text-sm font-mono font-semibold transition-colors ${
tab === i
? 'text-white border-b-2 border-red-500 bg-slate-800/50'
: 'text-slate-500 hover:text-slate-300'
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ export const Sidebar: React.FC<SidebarProps> = ({
</svg>
<div className="text-center">
<h1 className="font-bold text-base tracking-widest uppercase text-slate-900 dark:text-white leading-none">KShield</h1>
<span className="text-[10px] text-slate-400 dark:text-slate-500 font-mono tracking-widest mt-1 block">v1.0.0 · LOCAL</span>
<span className="text-[10px] text-slate-400 dark:text-slate-500 font-mono tracking-widest mt-1 block">v1.1.0 · LOCAL</span>
</div>
</div>
{/* Mobile close button — absolute so it doesn't break centered layout */}
Expand Down
Binary file modified src-tauri/icons/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src-tauri/icons/64x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square107x107Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square142x142Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square150x150Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square284x284Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square30x30Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square310x310Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square44x44Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square71x71Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/Square89x89Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/StoreLogo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src-tauri/icons/icon.icns
Binary file not shown.
Binary file modified src-tauri/icons/icon.ico
Binary file not shown.
Binary file modified src-tauri/icons/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified vscode-extension/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading