Selected work

Marketing Content Manager

A back office for campaigns, banners and approvals

My idea, my build, now in daily use at Energycom Ltd., a solar energy company in Croatia. Their campaign plan was an Excel sheet, the banners sat in shared folders and approvals went by email. In 2026 I designed and built the whole thing myself, with AI as my coding assistant.

Company
Energycom Ltd., Croatia
My role
Idea, product design and build, with AI as my coding assistant
Platform
Responsive web app
Status
Online, in daily use at Energycom
Three dark-mode screens of the Marketing Content Manager: the Overview in front with campaigns grouped by channel, a campaign page with banner cards on the left and the cards view on the right
The Overview, with a campaign page and the cards view behind it. Every row shows the banner itself, so you don't have to open a campaign to see it.

Overview

The Marketing Content Manager keeps campaigns, banners and approvals in one place. A campaign has a code, a status, dates, people and one or more channels. Each banner has versions, an approval state and a rating.

Five roles decide who can do what, from Administrator down to a read-only Viewer. The company's marketing team uses it.

The challenge

Marketing people are in this all day, and they need to see the banner, not a row of text about it. So the banner sits in every table row, uncropped, and the rest of the page stays quiet: muted surfaces, one accent color, a monospace face for codes and counters.

One campaign often runs on several channels at once. It used to be one row per channel, and the totals counted it twice. Now a campaign has a list of channels, ticked in a checkbox grid.

My role

This was my idea, and there was no one else on it. I did the product, the design, the build and the tests, with AI as my coding assistant: it wrote code from the rules I gave it, and I made the calls.

The work

Six screens, dark theme, desktop and phone, and the main flows. The banners in the screens are blurred, and some of the data is in Croatian.

A campaign and its banners

Every banner is a card with its version, approval state and rating. A manager approves it or sends it back with a note, a person and a deadline. Restoring an old version makes a new one, so nothing gets overwritten.

One campaign, several channels

The new-campaign form, with the channels as a checkbox grid. That many options don't fit a dropdown, and nobody should have to Ctrl-click.

Tasks and rework

Tasks grouped by status, with filters for campaign and due date. When a reviewer sends a banner back, the app creates the rework task and assigns it.

Archive first, then trash

Nothing goes into the archive unrated. Deleting takes two steps: archive, then 30 days in Trash, where it can still be restored.

Table or cards

The same Overview two ways: a table when you scan the plan, cards when you want the banners bigger. Both run on the same tokens, so the light and dark themes are one set of values each, nothing patched by hand.

On a phone

Columns drop by priority as the screen narrows, and the banner keeps its width. A text-size switch makes the type bigger without breaking the layout.

How it flows

The main flows, drawn from the app: a campaign's life from the form to the trash, a banner's path through review, tasks, and who may do what. Every state has a way out: an unrated campaign can't be archived, a deleted one waits 30 days in Trash, and a sent-back banner comes back as a new version.

Next project

Field Sales App 

SonoIT Ltd.UX/UI design / Prototyping

Contact

Let’s work together.

If you liked what you saw, or just want to say hi, drop me a line.