Vibe coder · AI-assisted · Local-first

Luna Noir

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.

Luna Noir avatar
@lunanoir21 · arch + hyprland
cat about.md

Whoami

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.

~/luna-noir/about.rs
// 🇬🇧 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]
11 total stars across every public repo
11 public repos all open source
7.35 MB of source 16 languages detected
93 days building since 3 June 2026

Code by language

share of 7.35 MB
Rust Rust — 2.31 MB · 31.49% 31.5%
QML QML — 2.30 MB · 31.3% 31.3%
TypeScript TypeScript — 1.61 MB · 21.96% 22.0%
Dart Dart — 582 KB · 7.73% 7.7%
Shell Shell — 213 KB · 2.83% 2.8%
Other Other — 353 KB · 4.69% 4.7%
Bytes reported by GitHub across 10 source repos, forks excluded · measured 4 September 2026.

Stars

11
dynamic-island dynamic-island — 5 ★ 5
Life OS Life OS — 3 ★ 3
aurguard aurguard — 1 ★ 1
dep-lens dep-lens — 1 ★ 1
hypr-connect hypr-connect — 1 ★ 1
Every repo with at least one star, refreshed from the GitHub API on load.
cat how-i-build.md

How I build

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.

01

Spec before code

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.

02

AI writes the implementation

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.

03

Review, then prove it

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.

04

Ship it and own it

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 Git GitHub Actions Arch Linux Hyprland

// Claude is used as a pair programmer, not an autopilot — it proposes, I decide, CI proves it.

ls ~/stack

Tech Stack

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.

Languages

  • QMLdesktop shell
  • Rustdaemons, CLIs
  • TypeScriptweb, TUI
  • Gorelay server
  • Dartmobile

Frameworks

  • Next.js 16web
  • React 19UI
  • Tauri v2desktop
  • Fluttermobile
  • Node.jstooling

Systems & tooling

  • Arch Linuxdaily driver
  • Hyprlandcompositor
  • Waylanddisplay
  • SQLitestorage
  • Dockerdeploy
  • Gitvcs
ls ~/projects

Projects

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.

v1.0.0 · released

dynamic-island

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.

QML Quickshell Hyprland Wayland MIT
5 · updated 2026-09-02
pre-release

Life OS

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.

Next.js 16 TypeScript Rust Tauri MIT
3 · updated 2026-06-08
pre-release

connectible

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.

Rust Flutter Tauri gRPC TLS 1.3
0 · updated 2026-07-23
pre-release

orca

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.

Rust GTK4 Lua age GPL-3.0
0 · updated 2026-06-20
v1.0.0 · released

aurguard

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.

Rust CLI AUR i18n MIT
1 · updated 2026-07-03
pre-release

dep-lens

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.

Rust TypeScript TUI license MIT
1 · updated 2026-06-21
active

aether-dotfiles

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.

QML Hyprland fish kitty Wayland
0 · updated 2026-08-15
early wip

nyx

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.

Go SQLite WebSocket E2E
0 · updated 2026-08-08
git log --oneline -n 30

Activity

Live cards rendered by GitHub itself. They are the only third-party requests this page makes — no analytics, no fingerprinting, nothing stored on you.

contributions overview
GitHub stats for lunanoir21
top languages
Top languages for lunanoir21
contribution graph — last 12 months
Contribution graph for lunanoir21
echo $CONTACT

Let's build something

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.