[{"data":1,"prerenderedAt":80},["ShallowReactive",2],{"$fDDZaBAWZT12XCbnmSfSrPqaoSDTwdYJdVdcElGtNvVs":3},{"id":4,"title":5,"body":6,"category":58,"challenge":59,"description":52,"extension":60,"featured":61,"image":62,"images":62,"impact":63,"meta":64,"navigation":65,"order":66,"path":67,"seo":68,"slug":69,"solution":70,"stem":71,"tagline":72,"tags":73,"testimonial":62,"testimonial_author":62,"testimonial_role":62,"url":62,"__hash__":79},"projects_en\u002Fprojects\u002Fen\u002Fphotobooth-platform.md","Photobooth Platform",{"type":7,"value":8,"toc":51},"minimark",[9,14,18,22,44,48],[10,11,13],"h2",{"id":12},"project-overview","Project Overview",[15,16,17],"p",{},"This project involved rebuilding a photobooth software platform from the ground up for a company that rents out photobooths — including hardware, personnel, custom overlays, and software — for corporate events and live occasions. The existing MVP covered only the bare minimum and was not fit for real-world, high-volume use.",[10,19,21],{"id":20},"key-features","Key Features",[23,24,25,29,32,35,38,41],"ul",{},[26,27,28],"li",{},"Node.js disk watcher detecting newly captured images from a WiFi SD card in real time",[26,30,31],{},"Laravel backend for image ingestion, thumbnail generation, and overlay compositing",[26,33,34],{},"WebSocket notifications pushing new images to the Vue frontend instantly",[26,36,37],{},"Overlay selection with backend-rendered preview images (mediocre resolution for speed)",[26,39,40],{},"Full-resolution image generation with selected overlay on confirmation",[26,42,43],{},"PHP print command dispatched from Laravel to the connected event printer",[10,45,47],{"id":46},"technical-highlights","Technical Highlights",[15,49,50],{},"The core challenge was achieving real-time responsiveness without polling. The combination of a Node.js file watcher and a Laravel WebSocket broadcaster meant the frontend was always up to date the moment a photo landed on disk. Thumbnail generation on the backend was essential to keep the frontend snappy — loading full-resolution images in a live event context would have caused noticeable delays. The Laravel\u002FVue stack replaced an unmaintainable plain PHP\u002FJS codebase with a clean, framework-structured application ready for future extensions.",{"title":52,"searchDepth":53,"depth":53,"links":54},"",2,[55,56,57],{"id":12,"depth":53,"text":13},{"id":20,"depth":53,"text":21},{"id":46,"depth":53,"text":47},"web-app","A photobooth rental company had an MVP built in plain PHP and HTML\u002FJS with no framework, no live image loading, and performance unsuitable for live events with high photo volumes. Freshly captured photos weren't displayed in real time, the codebase wasn't maintainable, and the frontend lacked the reactivity needed for a smooth booth experience.","md",false,null,"The platform replaced a fragile MVP with a robust, maintainable application capable of handling high-volume live events. Real-time image delivery and instant print dispatch gave booth operators and event guests a smooth, responsive experience. The Laravel\u002FVue stack provided a clean foundation for future feature development.",{},true,5,"\u002Fprojects\u002Fen\u002Fphotobooth-platform",{"title":5,"description":52},"photobooth-platform","I rewrote the platform with a Laravel backend and Vue.js frontend. A Node.js script continuously scanned the target disk for new images captured via a WiFi-enabled SD card. On detection, it notified the Laravel backend, which processed each image — generating thumbnails for fast preview and overlay-composited versions for selection. Once a photo and overlay were chosen, Laravel generated the final full-resolution image and dispatched a PHP print command directly to the connected printer. The frontend received real-time updates via WebSocket, displaying new photos instantly without any manual reload.","projects\u002Fen\u002Fphotobooth-platform","Real-time photo processing for live events",[74,75,76,77,78],"Vue.js","Laravel","Node.js","WebSockets","PHP","W5mRdtnD0Jw-b5OGRWkoqA6F848Ginjm4JraKNJEcd4",1775672746039]