feat: plakat redesign phase 3 (windows on desktop, sheets on mobile) (#76)
- Tapping an object on the desk opens a window (desktop) or a bottom sheet (mobile) instead of flipping: projects, now, servers, reading, about, contact - Desktop windows in poster style (2px ink rule, hard offset shadow), open from the tapped object, thrown by the title bar with momentum and elastic viewport edges, stack by focus, minimize into a tray, Escape closes the top window, focus moves to close and returns to the trigger - Mobile sheets via vaul 1.1.2: drag down to dismiss, overlay, focus trap - Project window shows live/source links from Directus when present - Hero "Write me" opens the contact window; still a plain #contact link without JavaScript - Shared current-book loader for desk, deck and reading window - Texts in de/en, i18n key check extended Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+69
-3
@@ -36,11 +36,11 @@
|
||||
"tisch": {
|
||||
"title": "Der Tisch.",
|
||||
"allProjects": "Alle Projekte",
|
||||
"hintBoard": "Alles hier lässt sich anfassen. Werfen, stapeln, Karten umdrehen.",
|
||||
"hintDeck": "Wisch die Karten zur Seite, tipp zum Umdrehen.",
|
||||
"hintBoard": "Alles hier lässt sich anfassen. Werfen, stapeln, antippen für Details.",
|
||||
"hintDeck": "Wisch die Karten zur Seite, tipp für Details.",
|
||||
"tidy": "Aufräumen",
|
||||
"mess": "Durcheinander",
|
||||
"flip": "tippen zum Umdrehen",
|
||||
"flip": "antippen für Details",
|
||||
"details": "Zum Projekt",
|
||||
"prev": "Vorherige Karte",
|
||||
"next": "Nächste Karte",
|
||||
@@ -69,6 +69,72 @@
|
||||
"photoCaption": "Das bin ich.",
|
||||
"sticker": "Läuft auf eigenen Servern."
|
||||
},
|
||||
"windows": {
|
||||
"close": "Schließen",
|
||||
"minimize": "Ablegen",
|
||||
"openWindows": "Offene Fenster",
|
||||
"projectPage": "Projektseite",
|
||||
"source": "Quellcode",
|
||||
"live": "Live ansehen",
|
||||
"stack": "Technik",
|
||||
"year": "Jahr",
|
||||
"now": {
|
||||
"title": "jetzt.txt · Stand Oktober 2026",
|
||||
"days": "Tage bis zur Abgabe der Masterarbeit",
|
||||
"study": {
|
||||
"label": "Studium",
|
||||
"text": "Federated Reinforcement Learning für einen Logistik-Hub, Abgabe Mitte Februar 2027"
|
||||
},
|
||||
"work": {
|
||||
"label": "Arbeit",
|
||||
"text": "IT bei einem Unternehmen in Osnabrück, ab Februar 2027 fest als Microsoft-365-Administrator"
|
||||
},
|
||||
"side": {
|
||||
"label": "Nebenher",
|
||||
"text": "nightly, eine App für Gedanken zwischen 2 und 5 Uhr nachts"
|
||||
}
|
||||
},
|
||||
"server": {
|
||||
"title": "server · alle grün",
|
||||
"headline": "Drei Rechner, ein VPN."
|
||||
},
|
||||
"read": {
|
||||
"title": "lesen · aus Hardcover",
|
||||
"progress": "gelesen",
|
||||
"empty": "Gerade liegt kein Buch auf dem Nachttisch.",
|
||||
"library": "Zur Bibliothek"
|
||||
},
|
||||
"about": {
|
||||
"title": "über mich",
|
||||
"p1": "Aufgewachsen bin ich in Lingen, inzwischen wohne ich in Osnabrück. Angefangen hat alles mit einem Raspberry Pi und der Frage, ob ich meine Fotos nicht selbst speichern kann. Daraus sind drei Server geworden.",
|
||||
"p2": "Wenn ich nicht am Rechner sitze, bin ich dienstags bei Body Attack, im Winter auf der Piste oder mit Freunden bei einem Brettspiel.",
|
||||
"facts": {
|
||||
"laptop": {
|
||||
"label": "Arbeitsrechner",
|
||||
"value": "MacBook Pro M4 Pro"
|
||||
},
|
||||
"pc": {
|
||||
"label": "Zum Spielen",
|
||||
"value": "PC mit RTX 3080"
|
||||
},
|
||||
"study": {
|
||||
"label": "Studium",
|
||||
"value": "Master Informatik"
|
||||
},
|
||||
"languages": {
|
||||
"label": "Sprachen",
|
||||
"value": "Deutsch, Englisch"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"title": "kontakt",
|
||||
"body": "Für Projekte, Fragen zu meinem Setup oder einfach so. Ich antworte normalerweise innerhalb von ein, zwei Tagen.",
|
||||
"copy": "Adresse kopieren",
|
||||
"copied": "Kopiert",
|
||||
"form": "Zum Formular"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "Hinter den Kulissen",
|
||||
"p1": "Schon seit ich meinen ersten eigenen Server aufgesetzt habe, lässt mich das Thema Infrastruktur nicht mehr los. Als Student in Osnabrück verbringe ich meine Zeit am liebsten damit, moderne Web-Apps mit Next.js zu bauen oder mobile Lösungen mit Flutter zu entwickeln.",
|
||||
|
||||
+69
-3
@@ -36,11 +36,11 @@
|
||||
"tisch": {
|
||||
"title": "The desk.",
|
||||
"allProjects": "All projects",
|
||||
"hintBoard": "Everything here can be touched. Throw it, stack it, flip the cards.",
|
||||
"hintDeck": "Swipe the cards aside, tap to flip.",
|
||||
"hintBoard": "Everything here can be touched. Throw it, stack it, tap for details.",
|
||||
"hintDeck": "Swipe the cards aside, tap for details.",
|
||||
"tidy": "Tidy up",
|
||||
"mess": "Mess it up",
|
||||
"flip": "tap to flip",
|
||||
"flip": "tap for details",
|
||||
"details": "Open project",
|
||||
"prev": "Previous card",
|
||||
"next": "Next card",
|
||||
@@ -69,6 +69,72 @@
|
||||
"photoCaption": "That's me.",
|
||||
"sticker": "Runs on my own servers."
|
||||
},
|
||||
"windows": {
|
||||
"close": "Close",
|
||||
"minimize": "Minimize",
|
||||
"openWindows": "Open windows",
|
||||
"projectPage": "Project page",
|
||||
"source": "Source",
|
||||
"live": "See it live",
|
||||
"stack": "Stack",
|
||||
"year": "Year",
|
||||
"now": {
|
||||
"title": "now.txt · October 2026",
|
||||
"days": "days until my master's thesis is due",
|
||||
"study": {
|
||||
"label": "Study",
|
||||
"text": "Federated reinforcement learning for a logistics hub, due mid-February 2027"
|
||||
},
|
||||
"work": {
|
||||
"label": "Work",
|
||||
"text": "IT at a company in Osnabrück, from February 2027 full-time as Microsoft 365 administrator"
|
||||
},
|
||||
"side": {
|
||||
"label": "On the side",
|
||||
"text": "nightly, an app for thoughts between 2 and 5 a.m."
|
||||
}
|
||||
},
|
||||
"server": {
|
||||
"title": "servers · all green",
|
||||
"headline": "Three machines, one VPN."
|
||||
},
|
||||
"read": {
|
||||
"title": "reading · from Hardcover",
|
||||
"progress": "read",
|
||||
"empty": "No book on the nightstand right now.",
|
||||
"library": "To the library"
|
||||
},
|
||||
"about": {
|
||||
"title": "about me",
|
||||
"p1": "I grew up in Lingen and now live in Osnabrück. It all started with a Raspberry Pi and the question whether I could store my photos myself. That turned into three servers.",
|
||||
"p2": "When I'm not at the computer, I'm at Body Attack on Tuesdays, on the slopes in winter, or playing board games with friends.",
|
||||
"facts": {
|
||||
"laptop": {
|
||||
"label": "Work machine",
|
||||
"value": "MacBook Pro M4 Pro"
|
||||
},
|
||||
"pc": {
|
||||
"label": "For games",
|
||||
"value": "PC with RTX 3080"
|
||||
},
|
||||
"study": {
|
||||
"label": "Study",
|
||||
"value": "Master's in computer science"
|
||||
},
|
||||
"languages": {
|
||||
"label": "Languages",
|
||||
"value": "German, English"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"title": "contact",
|
||||
"body": "For projects, questions about my setup or just because. I usually reply within a day or two.",
|
||||
"copy": "Copy address",
|
||||
"copied": "Copied",
|
||||
"form": "To the form"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "Behind the Code",
|
||||
"p1": "Ever since I set up my first home server, I've been hooked on infrastructure. Currently studying in Osnabrück, I split my time between developing modern web apps with Next.js and building mobile experiences with Flutter.",
|
||||
|
||||
Reference in New Issue
Block a user