Software Development Team Support
at Redime.

I built the internal tool Redime’s Trade Marketing team used to print QR codes: upload an image, choose size, layout and number of copies, and download a ready-to-print PDF. My first tool used daily by people outside the code, where the unglamorous details counted: exact sizes, print counts and cut guides.

Tech-stack I’ve used here

Challenges I faced

  • A stack that had to fit the server: The project was set up for PHP 8.1 and a newer Laravel, while the internal server still ran 7.4.

  • Sizes had to be exact: A QR code printed too small is a code nobody can scan, so the tool had to resize to the centimeters the team asked for.

  • One image, many prints: A single job could mix sizes, and each size needed its own number of copies on the sheet.

  • A server nobody was watching: Uploads and generated PDFs piled up on disk, and nobody remembered to clean them by hand.

  • Cutting paper by hand: The team printed on plain sheets, so whoever took the scissors needed something to guide them.

Achievements

  • Running where the team worked. Moved the project from PHP 8.1 to 7.4 and from Vite to Laravel Mix so it could be deployed on the internal server.

  • Any size, any amount. Custom sizes in centimeters and up to 100 copies of the same code in one job.

  • Ready to print and cut. Dashed guides around every code turned the PDF into a sheet the team could trim in one pass.

  • The disk cleans itself. Every conversion removes old uploads and PDFs, so the server never fills up with yesterday’s jobs.

  • Sizes that match the paper. Tuned the resize and the print margins until the output measured what the team had chosen.

From image to print sheet

The print tool, end to endA person picks an image, its size, the number of copies and the layout; the Laravel app stores it, reads it back and renders every copy at exact centimeters, then hands back a printable PDF sheet with cut guides. Old uploads and PDFs are cleared on every run.Print formimagesizecopieslayoutUpload endpointpng · jpg · unique nameTemp filesuploadsImg · uploadsPdfcleared on every runConvert endpointgroups sizes and copies× Ncut guides8.5 cmPDF sheetpublic/uploadsPdfexact cm

My approach

  • Fewest steps for the user: Upload, choose size and layout, choose how many copies, convert. Nothing else to learn.

  • The PDF is the product: A screen preview only helps so much, so sizes and margins were checked against a real printout.

  • Keep the stack plain:

    • Laravel controllers, one for the upload and one for the conversion, each with a single job.
    • Blade and Bootstrap for the form, plain JavaScript for sizes, copies and layout.
    • Intervention Image for resizing and DomPDF for the final sheet.
  • Leave the server tidy: Temporary files are deleted on a short timer, with nothing left for the next person to clean up.