[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"project:en:copystaq":3,"portfolio:en":80},{"id":4,"slug":4,"title":5,"shortDescription":6,"description":7,"role":8,"featured":9,"technologies":10,"media":38,"links":55,"sections":59},"copystaq","copyStaq","A native macOS clipboard manager with searchable text and image history, Smart filters and Quick Paste. The project also includes a product website, licensing backend and update distribution.","copyStaq helps users find and reuse copied content without returning to the original app. The desktop app keeps history locally; the website handles product presentation, downloads, purchases and license management.","Development of the macOS app, product website, backend, licensing and update distribution.",true,[11,14,17,20,23,26,29,32,35],{"id":12,"name":13},"swift","Swift",{"id":15,"name":16},"swiftui","SwiftUI",{"id":18,"name":19},"appkit","AppKit",{"id":21,"name":22},"sqlite","SQLite",{"id":24,"name":25},"nuxt","Nuxt",{"id":27,"name":28},"typescript","TypeScript",{"id":30,"name":31},"postgresql","PostgreSQL",{"id":33,"name":34},"prisma","Prisma",{"id":36,"name":37},"docker","Docker",[39,47],{"id":40,"src":41,"alt":42,"width":43,"height":44,"srcSet":45,"caption":46},"app","\u002Fimages\u002Fprojects\u002Fcopystaq\u002Fapp.jpg","copyStaq on macOS showing clipboard history, search, filters and tags",1280,720,"\u002Fimages\u002Fprojects\u002Fcopystaq\u002Fapp-640.webp 640w, \u002Fimages\u002Fprojects\u002Fcopystaq\u002Fapp-960.webp 960w, \u002Fimages\u002Fprojects\u002Fcopystaq\u002Fapp-1280.webp 1280w","Clipboard history and filters in the macOS app — a preview from the public product demo.",{"id":48,"src":49,"alt":50,"width":51,"height":52,"srcSet":53,"caption":54},"home","\u002Fimages\u002Fprojects\u002Fcopystaq\u002Fhome.jpg","copyStaq product website introducing the app and showing the Quick Paste window",1265,712,"\u002Fimages\u002Fprojects\u002Fcopystaq\u002Fhome-640.webp 640w, \u002Fimages\u002Fprojects\u002Fcopystaq\u002Fhome-960.webp 960w, \u002Fimages\u002Fprojects\u002Fcopystaq\u002Fhome-1265.webp 1265w","Product website with an app introduction and download link.",[56],{"label":57,"url":58},"live","https:\u002F\u002Fcopystaq.app\u002F",[60,64,68,71,73,76],{"type":61,"heading":62,"body":63},"text","Brief and approach","Turn everyday clipboard use into a searchable, keyboard-driven workflow. The project combines a native macOS app with the web services needed for distribution and licensing.",{"type":65,"heading":66,"body":67},"feature","History, search and Quick Paste","The app stores text, RTF and HTML formatting, and images. SQLite with a full-text index supports search; filters for app, type, date, tags or notes can be saved. A global shortcut opens Quick Paste and inserts the selected content into the active app.",{"type":65,"heading":69,"body":70},"Local data and a native interface","SwiftUI and AppKit connect the main window, menu bar and Quick Paste panel. History stays on the Mac. Capture rules can exclude selected apps and password managers; important clips can be pinned, tagged and annotated.",{"type":72,"mediaId":48},"image",{"type":65,"heading":74,"body":75},"Product website and licensing backend","The multilingual Nuxt, Vue and TypeScript website is backed by PostgreSQL and Prisma. Lemon Squeezy integration handles checkout and licenses; customer accounts use email sign-in links through Resend. The backend manages activations and issues signed license entitlements that the app verifies locally.",{"type":77,"heading":78,"body":79},"technical-details","Distribution and updates","The app ships as a DMG, with Sparkle handling updates authenticated by Ed25519 signatures. Publishing verifies the package and appcast, and exposes the update feed only after the files are uploaded. Web services run in Docker containers behind Nginx and Traefik.",{"projects":81,"experience":164,"technologies":165,"profile":166},[82,105],{"id":4,"slug":4,"title":5,"shortDescription":6,"description":7,"role":8,"featured":9,"technologies":83,"media":93,"links":96,"sections":98},[84,85,86,87,88,89,90,91,92],{"id":12,"name":13},{"id":15,"name":16},{"id":18,"name":19},{"id":21,"name":22},{"id":24,"name":25},{"id":27,"name":28},{"id":30,"name":31},{"id":33,"name":34},{"id":36,"name":37},[94,95],{"id":40,"src":41,"alt":42,"width":43,"height":44,"srcSet":45,"caption":46},{"id":48,"src":49,"alt":50,"width":51,"height":52,"srcSet":53,"caption":54},[97],{"label":57,"url":58},[99,100,101,102,103,104],{"type":61,"heading":62,"body":63},{"type":65,"heading":66,"body":67},{"type":65,"heading":69,"body":70},{"type":72,"mediaId":48},{"type":65,"heading":74,"body":75},{"type":77,"heading":78,"body":79},{"id":106,"slug":107,"title":108,"shortDescription":109,"description":110,"role":111,"featured":9,"technologies":112,"media":121,"links":140,"sections":143},"immaculata","restaurovanie-immaculata","Reštaurovanie Immaculata","A multilingual website presenting restoration and artistic work. The public gallery is backed by a custom administration for content, photographs and visitor enquiries.","The goal was to connect a visual showcase of completed work with practical website administration. The client can edit pages, add projects and photographs, and handle contact-form enquiries in one administration.","Frontend, backend, CMS and self-managed hosting — from the public website to content administration and deployment.",[113,114,117,120],{"id":24,"name":25},{"id":115,"name":116},"laravel","Laravel",{"id":118,"name":119},"filament","Filament",{"id":36,"name":37},[122,128,134],{"id":48,"src":123,"alt":124,"width":43,"height":125,"srcSet":126,"caption":127},"\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fhome.jpg","Immaculata homepage with its lead photograph and introduction to restoration services",1000,"\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fhome-640.webp 640w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fhome-960.webp 960w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fhome-1280.webp 1280w","Homepage of the public website.",{"id":129,"src":130,"alt":131,"width":43,"height":44,"srcSet":132,"caption":133},"works","\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fworks.jpg","Restoration project listing with search and a photograph of completed work","\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fworks-640.webp 640w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fworks-960.webp 960w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fworks-1280.webp 1280w","Project listing with search.",{"id":135,"src":136,"alt":137,"width":43,"height":44,"srcSet":138,"caption":139},"detail","\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fdetail.jpg","Restoration project detail with a photographic gallery","\u002Fimages\u002Fprojects\u002Fimmaculata\u002Fdetail-640.webp 640w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fdetail-960.webp 960w, \u002Fimages\u002Fprojects\u002Fimmaculata\u002Fdetail-1280.webp 1280w","Photographs and detail of an individual restoration project.",[141],{"label":57,"url":142},"https:\u002F\u002Frestaurovanie-immaculata.sk\u002F",[144,146,149,152,155,158,161],{"type":61,"heading":62,"body":145},"The website showcases restoration work and helps visitors move from a completed project to an enquiry. Photographs, clear navigation and localized content in Slovak, Czech and English guide the presentation.",{"type":65,"heading":147,"body":148},"Public website","The Nuxt and Vue frontend presents services, project listings and details with photo galleries. It receives content through the backend API. Search helps visitors find work by title or location.",{"type":150,"mediaIds":151},"gallery",[129,135],{"type":65,"heading":153,"body":154},"Content and photograph administration","A Laravel backend with Filament administration provides a lightweight CMS. Pages, content sections, navigation, projects and localized copy are managed alongside a media library for organizing and attaching photographs.",{"type":65,"heading":156,"body":157},"Contact-form enquiries","Visitor enquiries are stored in the backend. The administration supports processing them by status and adding internal notes to keep follow-up organized.",{"type":77,"heading":159,"body":160},"Self-managed hosting and deployment","The application runs in Docker containers on our dedicated server, which also hosts other projects. Requests pass through Nginx and Traefik to the relevant application. The work included setting up hosting and deploying both the frontend and backend.",{"type":61,"heading":162,"body":163},"Outcome","One solution brings together a public showcase, day-to-day content editing, photographs and visitor enquiries. Keeping the frontend and backend separate allows the public website and administration to evolve independently.",[],[],{"id":167,"displayName":168,"role":169,"introduction":170,"email":171,"links":172},"linko","Linko","Software developer","I develop web applications, from the user interface and backend to deployment.","info@link0.eu",[173],{"id":174,"label":174,"url":175},"github","https:\u002F\u002Fgithub.com\u002F4713n",1791122151467]