I'm a vibe coder, and every project on this page was built with AI — I don't pretend otherwise. What I bring is the part the model cannot do on its own: the spec, the architecture calls, the review, the tests, and the decision to ship. What comes out is real, working, open-source software.
A vibe coder who uses AI seriously — and says so out loud. Everything below is measured, not claimed: the numbers come straight from the GitHub API over my own repos.
// 🇬🇧 English
struct LunaNoir {
role: "Vibe Coder",
method: "AI-assisted, spec-first",
honest: "every repo here was built with AI",
my_part: ["spec", "architecture", "review",
"tests", "release"],
stack: ["QML", "Rust", "TypeScript", "Go", "Dart"],
desktop: "Arch Linux + Hyprland",
telemetry: None,
}
// 🇹🇷 Türkçe
// rol: "Vibe Coder"
// yöntem: "yapay zeka destekli, önce şartname"
// dürüstçe: "buradaki her repo yapay zeka ile inşa edildi"
// benim payım: [şartname, mimari, inceleme, test, sürüm]
The honest version of the workflow. The AI writes the code; the judgement around it is mine. This is what that looks like on every project below.
Every repo starts as documents, not prompts — RULES.md, PLAN.md, TASKS.md, ARCHITECTURE.md. Constraints, threat model and the definition of done are written down before a single line is generated, so the model builds toward a target instead of guessing at one.
This is the part I am open about: most of the code in these repos is model-generated — in small reviewed steps, never one giant dump. I steer it file by file and decision by decision, and I throw away far more than I keep.
Generated code is not trusted code. cargo test --workspace, clippy -D warnings, strict tsc, flutter analyze — and then actually running it on my own machine. If I cannot explain what a file does, it does not get committed.
Releases, docs, changelogs, GitHub Pages, issues — that part is on me, not the model. If something ships broken, it is my name on it. Which is exactly why steps 01–03 are not optional.
// Claude is used as a pair programmer, not an autopilot — it proposes, I decide, CI proves it.
What these repos are actually written in — taken from the languages GitHub reports on my own code, not from a wish list. Every logo below is an inlined SVG; nothing on this page is fetched from a third party.
Eight public repos, every one of them AI-built and open source. Star counts and dates below refresh straight from the GitHub API when this page loads, so nothing here goes stale.
A monochrome Dynamic Island for Hyprland, built on Quickshell. One always-on-top surface carrying MPRIS media with a cava-driven spectrum, notifications, timers and alarms, a pixel-art clock, and live mic/camera privacy indicators. No accent colour anywhere.
Local-first personal life OS — habits, finance, journal, workouts, recipes, goals and calendar in one self-hostable app. Next.js 16 and React 19 on the surface, a Rust backend underneath, packaged for the desktop with Tauri.
A KDE Connect alternative over gRPC and TLS 1.3. Pair a phone and a desktop on the same LAN to sync the clipboard, send files, mirror notifications and drive one machine's mouse and keyboard from the other — end-to-end encrypted, LAN only, no cloud.
A security-focused Linux file manager written in Rust — Wayland-first, dual-pane, Dolphin-inspired. age-encrypted vaults with Argon2id key derivation, ripgrep-backed content search, and a sandboxed Lua plugin API with a hard boundary around vault internals.
A security guard for AUR packages. It fetches the PKGBUILD and .install scripts, runs static analysis fully offline, and shows you the risks before makepkg ever runs. Multilingual (en · tr · fr · es · az), no telemetry.
Scans dependencies across nine ecosystems, classifies every license, scores commercial-use risk, and lets you browse the whole result in a fast ASCII TUI. Rust core with a Node.js/Ink wrapper.
My Hyprland desktop, rebuilt from scratch: kitty, fish, a Turkish keyboard layout and an all-workspaces overview on SUPER+TAB. Laid out to mirror ~/.config exactly, with Dynamic Island carried in as a submodule rather than a copy.
An early-stage messaging relay in Go — a WebSocket hub, a SQLite offline queue, and a public-key identity model with no passwords at all. End-to-end encryption through a libsignal sidecar and a Tauri client are next on the roadmap.
Live cards rendered by GitHub itself. They are the only third-party requests this page makes — no analytics, no fingerprinting, nothing stored on you.
Open to collaboration on local-first tools, Rust and Go services, and Hyprland desktop work. If you want to build this way — with AI, and without pretending otherwise — even better. Email preferred, ProtonMail only.