[{"data":1,"prerenderedAt":577},["ShallowReactive",2],{"projects-timeline":3},[4,50,79,123,155,188,216,254,286,316,350,385,421,448,484,517,545],{"id":5,"title":6,"accent":7,"body":8,"commits":15,"date":22,"de":23,"description":27,"emergent":28,"extension":29,"home":30,"langs":31,"meta":35,"navigation":36,"note":30,"path":37,"private":38,"pushed":39,"repo":40,"seo":41,"shared":38,"skin":28,"spark":42,"spec":46,"stars":43,"stem":47,"url":48,"__hash__":49},"projects/projects/100year-archive.md","A century of objects","#7fe7ff",{"type":9,"value":10,"toc":11},"minimark",[],{"title":12,"searchDepth":13,"depth":13,"links":14},"",2,[],[16,19],{"date":17,"message":18},"26 Feb","Refactor SimilarObjects to streamline token management",{"date":20,"message":21},"25 Feb","refactor: enhance authentication token management and the UI","2025-03-28",{"title":24,"description":25,"spec":26},"Ein Jahrhundert in Objekten","Ein Upload-Tool für ein Archiv zum hundertjährigen Jubiläum. Beitragende laden Objekte hoch, die App zeigt ähnliche, schon katalogisierte Objekte an, und das Token-Handling sorgt dafür, dass lange Katalogisierungs-Sessions nicht abbrechen.","Directus · Ähnlichkeitssuche für Objekte","An upload desk for a centenary archive. Contributors add objects, the app points out ones that look like something already catalogued, and the token handling keeps long cataloguing sessions from dropping.","archive","md",null,[32,33,34],"Vue","TypeScript","CSS",{},true,"/projects/100year-archive",false,"2026-02-26","johkirche/100year-object-upload-frontend",{"title":6,"description":27},[43,43,44,43,43,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43],0,1,3,"Directus · similar-object matching","projects/100year-archive","https://github.com/johkirche/100year-object-upload-frontend","14BEuFBGENaRqWzOElrgnq6WUbLThTMjVPKr72peg_4",{"id":51,"title":52,"accent":53,"body":54,"commits":58,"date":59,"de":60,"description":64,"emergent":65,"extension":29,"home":30,"langs":66,"meta":69,"navigation":36,"note":30,"path":70,"private":38,"pushed":71,"repo":72,"seo":73,"shared":38,"skin":65,"spark":74,"spec":75,"stars":13,"stem":76,"url":77,"__hash__":78},"projects/projects/angry-birds-gan.md","Angry Birds levels, generated","#ff6b6b",{"type":9,"value":55,"toc":56},[],{"title":12,"searchDepth":13,"depth":13,"links":57},[],[],"2023-07-29",{"title":61,"description":62,"spec":63},"Angry-Birds-Level, generiert","Die veröffentlichte Version: vortrainierte Modelle und der Decoding-Algorithmus, erschienen zusammen mit dem Paper „Utilizing GANs for Stable Structure Generation in Angry Birds“.","Paper · vortrainierte Modelle","The published version: pretrained models and the decoding algorithm, released with the paper “Utilizing GANs for Stable Structure Generation in Angry Birds”.","paper",[67,68],"Jupyter Notebook","Python",{},"/projects/angry-birds-gan","2025-02-18","Blaxzter/Utilizing-Generative-Adversarial-Networks-for-Stable-Structure-Generation-in-Angry-Birds",{"title":52,"description":64},[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43],"paper · pretrained models","projects/angry-birds-gan","https://github.com/Blaxzter/Utilizing-Generative-Adversarial-Networks-for-Stable-Structure-Generation-in-Angry-Birds","PnO2OMJe14DenUwC6FzIuyWNtcbGeNFpYuwhQvt_n7M",{"id":80,"title":81,"accent":82,"body":83,"commits":87,"date":94,"de":95,"description":98,"emergent":99,"extension":29,"home":100,"langs":101,"meta":103,"navigation":36,"note":30,"path":104,"private":38,"pushed":105,"repo":106,"seo":107,"shared":36,"skin":108,"spark":109,"spec":118,"stars":119,"stem":120,"url":121,"__hash__":122},"projects/projects/episko.md","Episko","#00ff9c",{"type":9,"value":84,"toc":85},[],{"title":12,"searchDepth":13,"depth":13,"links":86},[],[88,91],{"date":89,"message":90},"18 Sep","fleet: rebuilt to the design, and it is the screen the app opens on",{"date":92,"message":93},"17 Sep","dashboard: three columns, one ranked queue, and a thread you can read","2026-07-16",{"title":81,"description":96,"spec":97},"Eine native Desktop-App, um viele Coding-Agents gleichzeitig laufen zu lassen. Jede Session bekommt ein echtes Terminal, und Claude und Codex melden Phase, Kontextverbrauch, Kosten und Berechtigungsanfragen zurück. So behältst du ein Dutzend Agents so leicht im Blick wie einen einzelnen Chat.","Tauri + Rust · 198 von 617 Commits","A native desktop app for running many coding agents at once. Every session gets a real terminal, and Claude and Codex report their phase, context use, cost and permission prompts, so a dozen agents are as easy to keep track of as one chat.","sessions","https://episko.dev",[33,102,34],"Rust",{},"/projects/episko","2026-09-18","respeak-io/episko",{"title":81,"description":98},"cockpit",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,13,110,111,112,113,114,115,116,117,114],71,56,14,6,10,8,9,12,"Tauri + Rust · 198 of 617 commits",20,"projects/episko","https://github.com/respeak-io/episko","H6eAxo03Rr7cw3F4vz3KDSFO2lIG2jQdpNzbETeFuyU",{"id":124,"title":125,"accent":126,"body":127,"commits":131,"date":136,"de":137,"description":141,"emergent":142,"extension":29,"home":30,"langs":143,"meta":144,"navigation":36,"note":30,"path":145,"private":38,"pushed":105,"repo":146,"seo":147,"shared":38,"skin":142,"spark":148,"spec":151,"stars":43,"stem":152,"url":153,"__hash__":154},"projects/projects/fabraham.md","This website","#9ad1ff",{"type":9,"value":128,"toc":129},[],{"title":12,"searchDepth":13,"depth":13,"links":130},[],[132,134],{"date":89,"message":133},"fix(explore): stop the hidden cards eating the free camera’s drag",{"date":89,"message":135},"feat(outro): the coda gets planets, and the finale lets the cursor go","2025-05-31",{"title":138,"description":139,"spec":140},"Diese Website","Diese Seite. Nuxt und Nuxt Content, Lenis und GSAP und ein GLB-Kopf, gerendert durch einen ASCII-Post-Process. Kamera, Licht, Blickrichtung und Set-Pieces werden alle aus einem einzigen Scroll-Wert berechnet.","ein Scroll-Signal · acht Set-Pieces","This site. Nuxt and Nuxt Content, Lenis and GSAP, and a GLB head rendered through an ASCII post-process. Camera, lights, gaze and set-pieces are all derived from a single scroll value.","ascii",[32,33,34],{},"/projects/fabraham","Blaxzter/fabraham",{"title":125,"description":141},[43,13,43,43,44,44,43,13,43,43,43,43,43,43,149,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,149,112,43,44,43,43,43,44,44,43,43,43,43,43,43,150],4,16,"one scroll signal · eight set-pieces","projects/fabraham","https://github.com/Blaxzter/fabraham","bQK1rZM5Dsviu1oyQ2wlv3DXRsrQw3WzQUFOIed9hSY",{"id":156,"title":157,"accent":158,"body":159,"commits":163,"date":169,"de":170,"description":173,"emergent":174,"extension":29,"home":30,"langs":175,"meta":176,"navigation":36,"note":30,"path":177,"private":38,"pushed":178,"repo":179,"seo":180,"shared":38,"skin":181,"spark":182,"spec":184,"stars":43,"stem":185,"url":186,"__hash__":187},"projects/projects/free-fast-file-sync.md","Free Fast File Sync","#ff8a3d",{"type":9,"value":160,"toc":161},[],{"title":12,"searchDepth":13,"depth":13,"links":162},[],[164,167],{"date":165,"message":166},"24 Jul","fix(e2e-native): stop flaking on a slow msedgedriver startup (#4)",{"date":165,"message":168},"ci: make the Tier-2 native E2E actually run, and gate PRs with it (#3)","2026-06-25",{"title":157,"description":171,"spec":172},"Dateisynchronisation mit Rust-Kern und TypeScript-Oberfläche. Eine native End-to-End-Testsuite läuft bei jedem Pull Request, auch für den langsamen Treiberstart, der die Tests früher unzuverlässig gemacht hat.","Rust-Kern · TS-Oberfläche · Tier-2-E2E","File sync with a Rust core and a TypeScript shell. A native end-to-end suite runs on every pull request, including the slow-driver startup case that used to make it flaky.","files",[102,33,34],{},"/projects/free-fast-file-sync","2026-07-24","Blaxzter/Free-Fast-File-Sync",{"title":157,"description":173},"hatch",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,183,113,45,43,13,43,43,43,43,43,43,43,43],15,"Rust core · TS shell · Tier-2 E2E","projects/free-fast-file-sync","https://github.com/Blaxzter/Free-Fast-File-Sync","BJZifr1y79roimNRxq3Qar7-_qnYjPO9_z0heLqMPwI",{"id":189,"title":190,"accent":126,"body":191,"commits":195,"date":196,"de":197,"description":201,"emergent":202,"extension":29,"home":30,"langs":203,"meta":205,"navigation":36,"note":30,"path":206,"private":38,"pushed":207,"repo":208,"seo":209,"shared":38,"skin":210,"spark":211,"spec":212,"stars":43,"stem":213,"url":214,"__hash__":215},"projects/projects/gaenapi.md","Genetic algorithms for the JVM",{"type":9,"value":192,"toc":193},[],{"title":12,"searchDepth":13,"depth":13,"links":194},[],[],"2020-02-27",{"title":198,"description":199,"spec":200},"Genetische Algorithmen für die JVM","Generische Umgebungen für genetische Algorithmen auf der JVM, mit Hall of Fame, anpassbaren Selektionswahrscheinlichkeiten und automatischer Hyperparameter-Suche.","Hall of Fame · automatische Hyperparameter","Generic genetic-algorithm environments for the JVM, with a hall of fame, selection-probability shaping and automated hyper-parameter search.","dna",[204],"Java",{},"/projects/gaenapi","2025-12-19","Blaxzter/GaenAPI",{"title":190,"description":201},"genome",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43],"hall of fame · auto hyper-params","projects/gaenapi","https://github.com/Blaxzter/GaenAPI","M9ybr_IdWCG1865FFyxTADsBa3_xeRH5eXt1csbiZLs",{"id":217,"title":218,"accent":219,"body":220,"commits":224,"date":230,"de":231,"description":235,"emergent":236,"extension":29,"home":30,"langs":237,"meta":238,"navigation":36,"note":30,"path":239,"private":38,"pushed":240,"repo":241,"seo":242,"shared":38,"skin":243,"spark":244,"spec":250,"stars":43,"stem":251,"url":252,"__hash__":253},"projects/projects/gb-app-pwa.md","The hymnal app","#ffd479",{"type":9,"value":221,"toc":222},[],{"title":12,"searchDepth":13,"depth":13,"links":223},[],[225,228],{"date":226,"message":227},"15 Sep","fix(lied): sound the note that was tapped",{"date":226,"message":229},"fix(noten): scale every note into the words’ width","2025-12-27",{"title":232,"description":233,"spec":234},"Die Gesangbuch-App","Die App, aus der in der Gemeinde gesungen wird: gesetzte Noten, die sich an den Bildschirm anpassen und dabei Platz für den Text lassen, Noten, die beim Antippen erklingen, und Blättern entlang der Playlist oder des Gottesdienstablaufs.","gesetzte Noten · Note antippen und hören","The app people sing from in church: engraved sheet music that reflows to the screen while keeping room for the lyrics, notes you can tap to hear, and paging that follows the playlist or the order of service.","notes",[32,33,34],{},"/projects/gb-app-pwa","2026-09-19","johkirche/gb-app-pwa",{"title":218,"description":235},"staff",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,13,44,245,112,245,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,183,116,45,43,43,43,43,43,43,43,43,246,247,248,43,43,249],7,5,62,32,33,"engraved notation · tap a note to hear it","projects/gb-app-pwa","https://github.com/johkirche/gb-app-pwa","Wq5yuplG129jP5sSn8Wpil4GhPtayipMBtA51ubBQpM",{"id":255,"title":256,"accent":219,"body":257,"commits":261,"date":267,"de":268,"description":272,"emergent":236,"extension":29,"home":30,"langs":273,"meta":276,"navigation":36,"note":30,"path":277,"private":38,"pushed":240,"repo":278,"seo":279,"shared":38,"skin":280,"spark":281,"spec":271,"stars":44,"stem":283,"url":284,"__hash__":285},"projects/projects/gb-dashboard.md","The hymnal’s editor",{"type":9,"value":258,"toc":259},[],{"title":12,"searchDepth":13,"depth":13,"links":260},[],[262,265],{"date":263,"message":264},"4 Sep","refactor(inhaltsverzeichnis): Melodie-Spalte ohne 2000er-Liednummern",{"date":263,"message":266},"feat(noten): Choralbuchsatz im Notenbild-Karussell anzeigen","2024-02-15",{"title":269,"description":270,"spec":271},"Der Gesangbuch-Editor","Das Redaktions-Tool hinter dem Gesangbuch der Gemeinde: Inhaltsverzeichnis, ein Karussell mit gesetzten Noten und Änderungsnotizen.","Directus · Vue · Vuetify","The editing tool behind the church hymnal: table of contents, a carousel of engraved sheet music, and change notes.",[32,274,275],"JavaScript","SCSS",{},"/projects/gb-dashboard","Blaxzter/gb-dashboard",{"title":256,"description":272},"desk",[13,43,246,43,43,43,43,44,43,43,43,43,43,43,43,43,43,44,43,13,246,43,149,43,43,43,44,43,43,45,149,43,246,116,45,115,282,183,246,13,246,13,114,119,45,45,246,149,43,246,43,43],22,"projects/gb-dashboard","https://github.com/Blaxzter/gb-dashboard","MQN3Cf9KEu5_6dNPK8Fz8yZKRBDxYFoQdvAWS6woBdA",{"id":287,"title":288,"accent":219,"body":289,"commits":293,"date":298,"de":299,"description":303,"emergent":304,"extension":29,"home":30,"langs":305,"meta":306,"navigation":36,"note":30,"path":307,"private":38,"pushed":308,"repo":309,"seo":310,"shared":38,"skin":304,"spark":311,"spec":312,"stars":43,"stem":313,"url":314,"__hash__":315},"projects/projects/gb-pwa.md","The hymnal, offline",{"type":9,"value":290,"toc":291},[],{"title":12,"searchDepth":13,"depth":13,"links":292},[],[294,296],{"date":226,"message":295},"docs(testing): 887 tests across 27 files",{"date":226,"message":297},"fix(offline): honest download state, prompt-mode updates, install prompt","2025-06-06",{"title":300,"description":301,"spec":302},"Das Gesangbuch, offline","Der Offline-Teil des Gesangbuchs: ein Download-Status, der zeigt, was wirklich gespeichert ist, Dark Mode schon vor dem ersten Rendern und ein Gottesdienst-Stepper, der sich sperrt, solange ein Gottesdienst läuft.","887 Tests · 27 Dateien · offline-first","The offline part of the hymnal: a download state that reports what is really stored, dark mode applied before the first paint, and a service stepper that locks while a service is running.","tests",[33,32,274],{},"/projects/gb-pwa","2026-09-15","johkirche/gb-pwa",{"title":288,"description":303},[43,43,43,43,43,43,43,43,43,43,43,246,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,13,246,149,43,43,43,43,43,43,43,119,45,44,43,43,43,112],"887 tests · 27 files · offline-first","projects/gb-pwa","https://github.com/johkirche/gb-pwa","3QA48kKHw4VXWaJtKfMg7lNu6tWjC7tRQjMitAovbqM",{"id":317,"title":318,"accent":319,"body":320,"commits":324,"date":331,"de":332,"description":335,"emergent":336,"extension":29,"home":30,"langs":337,"meta":339,"navigation":36,"note":30,"path":340,"private":38,"pushed":341,"repo":342,"seo":343,"shared":38,"skin":344,"spark":345,"spec":346,"stars":45,"stem":347,"url":348,"__hash__":349},"projects/projects/instant-twitch-replay.md","Instant Twitch Replay","#c4a0ff",{"type":9,"value":321,"toc":322},[],{"title":12,"searchDepth":13,"depth":13,"links":323},[],[325,328],{"date":326,"message":327},"22 Jul","feat: configurable replay volume and redesigned settings popup",{"date":329,"message":330},"22 Feb","feat: update version to 2.0 in manifest.json","2024-11-28",{"title":318,"description":333,"spec":334},"Nimmt die letzten x Sekunden eines Twitch-Streams auf, damit du dir noch einmal ansehen kannst, was du gerade verpasst hast. Einstellbare Wiedergabelautstärke und ein überarbeitetes Einstellungs-Popup.","v2.0 · rollender 60-s-Puffer","Records the last x seconds of a Twitch stream so you can replay what you just missed. Configurable replay volume and a redesigned settings popup.","clips",[274,338],"HTML",{},"/projects/instant-twitch-replay","2026-07-22","Blaxzter/Instant-Twitch-Replay",{"title":318,"description":335},"scrub",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,149,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,13,43,43,43,43,43,43,43,43],"v2.0 · rolling 60s buffer","projects/instant-twitch-replay","https://github.com/Blaxzter/Instant-Twitch-Replay","9R-NSicRXVkTC8dYifEs5g51iV10iVXMXYz1oOm5MA4",{"id":351,"title":352,"accent":353,"body":354,"commits":358,"date":365,"de":366,"description":370,"emergent":371,"extension":29,"home":372,"langs":373,"meta":374,"navigation":36,"note":375,"path":376,"private":38,"pushed":377,"repo":378,"seo":379,"shared":36,"skin":371,"spark":380,"spec":381,"stars":13,"stem":382,"url":383,"__hash__":384},"projects/projects/kitawo.md","Johannischer Kirchentag","#ffb454",{"type":9,"value":355,"toc":356},[],{"title":12,"searchDepth":13,"depth":13,"links":357},[],[359,362],{"date":360,"message":361},"Apr 2025","feat: fix filtering on preview page",{"date":363,"message":364},"Mar 2025","chore: update docker-compose and Dockerfile configurations","2020-07-04",{"title":352,"description":367,"spec":368,"note":369},"Die Veranstaltungsseite des Johannischen Kirchentags: Programm, Termine und Anmeldung, als statische Seite auf Cloudflare. Fünf Jahre Arbeit mit Unterbrechungen, zusammen mit der Gemeinschaft; ich bin der zweitgrößte Contributor.","johannischer-kirchentag.de · 94 Commits","In diesem Zeitraum keine Commits von mir. Meine 94 Commits liegen zwischen Juni 2020 und April 2025; die Seite ist live und andere pflegen sie weiter.","The event site for the Johannischer Kirchentag: programme, dates and registration, deployed as a static site on Cloudflare. Five years of on-and-off work with the community; I'm its second-largest contributor.","event","https://johannischer-kirchentag.de",[32,274,33],{},"No commits from me in this window. My 94 commits run from Jun 2020 to Apr 2025; the site is live and others keep it going.","/projects/kitawo","2026-08-21","johkirche/KiTaWo-Frontend",{"title":352,"description":370},[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43],"johannischer-kirchentag.de · 94 commits","projects/kitawo","https://github.com/johkirche/KiTaWo-Frontend","_bmAiuW8ZAY5zI1hLU-JI2rdQZwz-fnZejXAFpL2ulM",{"id":386,"title":387,"accent":82,"body":388,"commits":392,"date":397,"de":398,"description":401,"emergent":402,"extension":29,"home":403,"langs":404,"meta":405,"navigation":36,"note":30,"path":406,"private":38,"pushed":240,"repo":407,"seo":408,"shared":38,"skin":409,"spark":410,"spec":417,"stars":43,"stem":418,"url":419,"__hash__":420},"projects/projects/logolab.md","LogoLab",{"type":9,"value":389,"toc":390},[],{"title":12,"searchDepth":13,"depth":13,"links":391},[],[393,395],{"date":89,"message":394},"feat(ui): ask what kind of report it is, then hand over a real GitHub form",{"date":89,"message":396},"fix(ui): a tooltip flips instead of landing on the control it describes","2026-06-09",{"title":387,"description":399,"spec":400},"Vorschau, Bereinigung, Vektorisierung und Export deines Logos, komplett im Browser. Keine Uploads, keine Anmeldung. Die Hintergrundentfernung läuft auf WebGPU.","WebGPU · transformers.js · kein Upload","Preview, clean up, vectorize and export your logo, entirely in your browser. No uploads, no sign-up. Background removal runs on WebGPU.","vectors","https://logolab.fabraham.dev",[33,338,34],{},"/projects/logolab","Blaxzter/LogoLab",{"title":387,"description":401},"alpha",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,117,411,183,149,246,412,413,115,414,415,116,183,13,416,413],43,21,17,23,13,52,"WebGPU · transformers.js · no upload","projects/logolab","https://github.com/Blaxzter/LogoLab","eIKCsVGcMxJh2oh4k4jv22EUU-z8N10aTqZWl2s7SGA",{"id":422,"title":423,"accent":319,"body":424,"commits":428,"date":429,"de":430,"description":434,"emergent":435,"extension":29,"home":30,"langs":436,"meta":437,"navigation":36,"note":30,"path":438,"private":38,"pushed":439,"repo":440,"seo":441,"shared":38,"skin":442,"spark":443,"spec":444,"stars":44,"stem":445,"url":446,"__hash__":447},"projects/projects/master-thesis.md","The master’s thesis",{"type":9,"value":425,"toc":426},[],{"title":12,"searchDepth":13,"depth":13,"links":427},[],[],"2022-04-04",{"title":431,"description":432,"spec":433},"Die Masterarbeit","Die Arbeit selbst: GANs, die Level für Science Birds generieren, bewertet danach, ob die entworfenen Strukturen tatsächlich stehen bleiben.","Science Birds · auf Spielbarkeit bewertet","The thesis itself: GANs trained to generate Science Birds levels, scored on whether the structures they design actually stay standing.","blocks",[67,68,204],{},"/projects/master-thesis","2022-12-10","Blaxzter/Master-Thesis_GAN-level-gen",{"title":423,"description":434},"lattice",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43],"Science Birds · playability-scored","projects/master-thesis","https://github.com/Blaxzter/Master-Thesis_GAN-level-gen","MJGKCJCebRQhXmTDP-MzDeW2BMuDd4LzkzVvzhRvwOw",{"id":449,"title":450,"accent":82,"body":451,"commits":455,"date":462,"de":463,"description":466,"emergent":467,"extension":29,"home":468,"langs":469,"meta":470,"navigation":36,"note":30,"path":471,"private":36,"pushed":472,"repo":473,"seo":474,"shared":38,"skin":475,"spark":476,"spec":481,"stars":43,"stem":482,"url":468,"__hash__":483},"projects/projects/puttyparty.md","Putty Party",{"type":9,"value":452,"toc":453},[],{"title":12,"searchDepth":13,"depth":13,"links":454},[],[456,459],{"date":457,"message":458},"1 Oct","feat(codes): Gutscheine — ein Code schaltet einen Tarif für n Monate frei",{"date":460,"message":461},"30 Sep","chore(dev): pnpm run dev:fixture — Wegwerf-DB mit Daten auf jeder /admin-Seite","2026-06-12",{"title":450,"description":464,"spec":465},"Der digitale Score-Block für Minigolf-Anlagen. Gäste scannen am Eingang einen QR-Code und spielen sich Bahn für Bahn am eigenen Handy durch, ohne App und ohne Konto, während ein großer Bildschirm die Live-Rangliste zeigt: Podium, Gleichstände und wer gerade aufgestiegen ist.","Workers · Durable Objects · Live-Rangliste","A digital scorecard for mini-golf courses. Guests scan a QR code at the entrance and play hole by hole on their own phone, with no app and no account, while a big screen keeps the live leaderboard: podium, ties and who just climbed.","golf","https://puttyparty.de",[33,34,274],{},"/projects/puttyparty","2026-10-02","Blaxzter/PuttyParty",{"title":450,"description":466},"green",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,117,113,113,43,413,477,245,150,478,477,44,116,479,113,413,411,480],19,65,18,63,"Workers · Durable Objects · live board","projects/puttyparty","9wuZ4LdMl7Fph10tSr64NffnWjhbxbxqd2UMh0f9V3U",{"id":485,"title":486,"accent":7,"body":487,"commits":491,"date":497,"de":498,"description":502,"emergent":503,"extension":29,"home":30,"langs":504,"meta":506,"navigation":36,"note":30,"path":507,"private":38,"pushed":508,"repo":509,"seo":510,"shared":38,"skin":511,"spark":512,"spec":513,"stars":246,"stem":514,"url":515,"__hash__":516},"projects/projects/room-booking-tool.md","Room booking, self-hosted",{"type":9,"value":488,"toc":489},[],{"title":12,"searchDepth":13,"depth":13,"links":490},[],[492,495],{"date":493,"message":494},"17 Jun","chore: bake static-page content in Dockerfile.frontend build",{"date":493,"message":496},"feat: pre-render static-page content at build time (hybrid)","2024-04-02",{"title":499,"description":500,"spec":501},"Raumbuchung, selbst gehostet","Raum- und Ressourcenbuchung zum Selbsthosten. Die statischen Seiten werden beim Build vorgerendert und direkt ins Frontend-Image eingebaut.","selbst gehostet · Repo mit den meisten Sternen","Self-hostable room and resource booking. The static pages are pre-rendered at build time and baked straight into the frontend image.","rooms",[32,33,505],"Liquid",{},"/projects/room-booking-tool","2026-06-17","Blaxzter/room-booking-tool",{"title":486,"description":502},"week",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,246,43,43,43,43,43,43,43,43,43,43,43,43,43],"self-hosted · most-starred repo","projects/room-booking-tool","https://github.com/Blaxzter/room-booking-tool","iuHOyNDCuDJKYs_vuCrNYm6UT2bKhrV5_jQfJb5mMMU",{"id":518,"title":519,"accent":82,"body":520,"commits":524,"date":377,"de":530,"description":533,"emergent":534,"extension":29,"home":535,"langs":536,"meta":537,"navigation":36,"note":30,"path":538,"private":38,"pushed":105,"repo":539,"seo":540,"shared":38,"skin":534,"spark":541,"spec":532,"stars":43,"stem":542,"url":543,"__hash__":544},"projects/projects/speeden-and-cuben.md","Speeden & Cuben",{"type":9,"value":521,"toc":522},[],{"title":12,"searchDepth":13,"depth":13,"links":523},[],[525,527],{"date":89,"message":526},"Ask the question the other way round",{"date":528,"message":529},"16 Sep","Open a case in a cube you can turn yourself",{"title":519,"description":531,"spec":532},"Eine CFOP-Referenz mit 3D-Wiedergabe. Jeder Algorithmus ist maschinell gegen ein echtes Würfelmodell geprüft, und jeder Fall lässt sich in einem Würfel öffnen, den du selbst drehen kannst.","41 F2L · 57 OLL · 21 PLL","A CFOP reference with 3D playback. Every algorithm is machine-checked against a real cube model, and every case opens in a cube you can turn yourself.","cubes","https://speeden-and-cuben.fabraham.dev",[33,338,68],{},"/projects/speeden-and-cuben","Blaxzter/speeden-and-cuben",{"title":519,"description":533},[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,245,245,43,246,149],"projects/speeden-and-cuben","https://github.com/Blaxzter/speeden-and-cuben","0C06LknWoN7Qhpwner_T8yNdHEJSzLJgwJUwx94Rlgg",{"id":546,"title":547,"accent":53,"body":548,"commits":552,"date":558,"de":559,"description":562,"emergent":563,"extension":29,"home":30,"langs":564,"meta":565,"navigation":36,"note":30,"path":566,"private":38,"pushed":567,"repo":568,"seo":569,"shared":38,"skin":570,"spark":571,"spec":573,"stars":43,"stem":574,"url":575,"__hash__":576},"projects/projects/wirksam.md","Wirksam",{"type":9,"value":549,"toc":550},[],{"title":12,"searchDepth":13,"depth":13,"links":551},[],[553,556],{"date":554,"message":555},"13 Sep","build(release): refuse to cut a release from the wrong branch",{"date":554,"message":557},"refactor(events): step through the copy wizard instead of stacking it","2026-03-03",{"title":547,"description":560,"spec":561},"Ein Veranstaltungs-Tool in Python und Vue. Eine README gibt es noch nicht; im Commit-Log sieht man einen Kopier-Assistenten, den man Schritt für Schritt durchgeht, und einen Release-Prozess, der sich weigert, vom falschen Branch aus zu veröffentlichen.","v0.20.1 · 306 Commits / 52 Wo.","An events tool in Python and Vue. It has no README yet; the commit log shows a step-by-step copy wizard and a release process that refuses to ship from the wrong branch.","tags",[68,32,33],{},"/projects/wirksam","2026-09-13","Blaxzter/wirksam",{"title":547,"description":562},"rail",[43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,149,44,246,45,245,183,150,248,414,149,572,413,413,116,117,43,43,43,43,43,43,43,43,43,43,43,119,412,115,44,411,245,45,116],29,"v0.20.1 · 306 commits / 52w","projects/wirksam","https://github.com/Blaxzter/wirksam","QdgYco9iJvigvsM_QSNoCf-bayjm9QRfNJPVi6vssPQ",1791366245851]