← Aleksandr Baranov

Map editor & map video editor frontend

Software Engineer · 2022 — 2024 · Mapcreator

Cartography SaaS for newsrooms and publishers: maps built in the browser, animated into video, served as vector tiles.

Map video editor: a MapLibre scene animated on a timeline, rendered to video, and exported to After Effects as tracking pointsMAP VIDEO EDITOR — MAP TO MOTION GRAPHICSMap sceneMapLibre forkcollision controldetail ≠ zoomTimelinekeyframes per elementfade · grow · moveVideo renderscene played outframe by frameAfter Effectsplugin exportmap objects →tracking pointsThe map underneath is vector tiles the team bakes and serves; the editor is Vue 3 + Pinia.

My role

Team product. I was in the frontend team, and the map editor, the video editor and the After Effects plugin were mine, along with renderer work in our MapLibre fork. I had spent years cutting my own GoPro footage before this, so I knew the tool as a user before I had to build one.

What I did

  • Carried the editor from Vue 2 / Vuex / Mapbox GL to Vue 3, Pinia and the Composition API. A large app, migrated piece by piece while it stayed in production.
  • Built the video editor and shaped its architecture: a timeline, with per-element animation on the map (fade, grow, move) keyed to it.
  • Wrote an After Effects plugin that turns objects drawn on the map into tracking points, so motion designers hang their own layers on a moving map instead of rotoscoping it.
  • Built the interactive side of the editor: a spreadsheet dropped on the canvas becomes points, its columns bound to popup templates, and the map goes out as a live link or an embed.
  • Patched our MapLibre fork for what the stock style-spec has no room for: collision handling between map objects, and map detail set independently of zoom.
  • Worked on the SVG exporter, which redraws what MapLibre renders as vector paths. A map leaves the editor as a cleanly layered file, sharp at any size and still editable, rather than a picture of one.
  • Integrated Stripe, with plan state settled by webhook rather than by what the checkout redirect claims.

In the product

Stack

Vue 2 → Vue 3 · Pinia · Nuxt · TypeScript · Mapbox GL · MapLibre GL · After Effects plugin · Stripe · Node.js · BullMQ

Map editor & map video editor frontend
The editor: imported data bound to pop-up templates, styling on the right.

More work →