Imran Munawar
Web ApplicationsIn production2024–2026

CYMaps

Billboard inventory, availability and campaign booking on a map, for Cyprus

My role: Full-stack developer: Laravel API and admin, React map dashboard, PDF campaign reports, hosting.

CYMaps map view: 1,843 billboard signs plotted across Cyprus with a sign list and photos in the sidebar

In production for an outdoor-media company in Cyprus. Client name shown only with their agreement. Screenshots were taken on a test account with the client's permission.

Overview

A platform for planning outdoor advertising campaigns. Every billboard in the country is a pin with photos, specs, supplier, price and an availability calendar. Media planners filter the inventory, drop signs into a project, check date conflicts, share a live proposal link with the client, and print a campaign report.

The problem

Outdoor media planning was done from photos in emails and availability in phone calls. Nobody could see, on one map, what was free for a date range, near which points of interest, at what price.

The solution

A Laravel 9 backend exposes the inventory, clients, projects, bookings and suppliers through a token-authenticated API and still serves the legacy admin. A React dashboard puts everything on Google Maps with filters, points of interest from Google Places, project management, date-range booking with conflict checks, shareable public proposal pages, and an in-browser PDF report generator with Greek typography.

Principal features

  • Map-first inventory

    Filter by type, size, lighting, supplier, tags, price and availability; measure distances; find signs near POIs.

  • Projects and proposals

    Build a campaign from selected signs, rename, merge and clone projects, and share a public read-only link.

  • Availability and bookings

    Date-range availability per sign, blocked dates, shortlists and booking enquiries.

  • Campaign PDF report

    A branded Outdoor Campaign Report generated client-side with maps, photos and tables.

  • Sign lifecycle

    Approval workflow for new signs, image upload and ordering, supplier management, audit logs.

  • Exports

    Excel exports and print views for planners who still work in spreadsheets.

Technical decisions

  • Kept the existing Laravel domain model and added a Sanctum API beside the Blade admin, so the client could migrate screen by screen instead of in one risky cut-over.
  • Server-side pagination and filter endpoints keep the map responsive as the inventory grows.
  • PDF generation runs in the browser (jsPDF with an embedded Noto Sans face) to avoid a headless-Chrome service on a small host.

Screens

Searching a sign by code zooms the map to its location and highlights it in the list
Searching a sign by code zooms the map to its location and highlights it in the list
Signs management table with type, size, supplier, city and map links, plus export and filters
Signs management table with type, size, supplier, city and map links, plus export and filters

More Web Applications