Backroundo — Architecture Roadmap

Project Philosophy

Backroundo is a multi-stage engineering project.

The goal is not to build every component immediately, but to gradually evolve a simple artwork viewer into a distributed digital museum platform.

Each phase should produce a working system before moving forward.

The core principle:

Build the museum room by room. Do not construct the entire building before hanging the first painting.


Phase 0 — Foundation & Architecture Decisions

Goal

Create the project structure and establish architectural rules.

Tasks

Suggested structure:

backroundo/

├── services/
│   ├── web-go/
│   ├── artwork-service-cpp/
│   ├── metadata-worker-cpp/
│   └── image-worker-cpp/
│
├── proto/
│   └── artwork.proto
│
├── infrastructure/
│   ├── docker/
│   └── kubernetes/
│
├── storage/
│
└── docs/

Deliverable

A clean project skeleton where every service can be started independently.


Phase 1 — The First Artwork

Goal

Build the smallest working version.

The first milestone:

One artwork exists in the system and can be viewed in the browser.

Architecture

Browser

↓

Go Web Server

↓

Sqlite

↓

Image File

Build

Database:

Artwork

id
title
artist
file_path
created_at

Features:

Ignore For Now

Do not add:

Deliverable

A working artwork page:

localhost/artwork/1

showing an image and metadata.


Phase 2 — Introduce Object Storage

Goal

Stop treating images as ordinary files.

Move artwork assets into S3-compatible storage.

Possible solutions:

New Architecture

Image

↓

Object Storage

↓

Database stores reference

↓

Browser loads image

Database Change

Before:

file_path

After:

storage_key

Example:

originals/a8f92.jpg

Deliverable

Artwork images are managed through object storage.


Phase 3 — Split the Backend

Goal

Introduce service separation.

Architecture

Browser

↓

Go Web Server

↓

gRPC

↓

C++ Artwork Service

Responsibilities

Go Service

Handles:

C++ Service

Handles:

Deliverable

The browser communicates with Go, and Go communicates with C++ through gRPC.


Phase 4 — Introduce RabbitMQ

Goal

Move heavy operations into background workers.

Architecture

Artwork Event

↓

RabbitMQ

↓

Worker

First Worker

Create Metadata Worker.

Responsibilities:

Deliverable

Background processing works asynchronously.


Phase 5 — Image Processing Pipeline

Goal

Optimize image delivery.

Create Image Processing Worker.

Responsibilities:

Example:

Original Image

↓

Image Worker

↓

thumbnail.webp
preview.webp

Deliverable

The application serves optimized images instead of huge originals.


Phase 6 — Build the Museum Interface

Goal

Create the actual browsing experience.

Frontend Stack

Features

Gallery Design

Use infinite scrolling.

The user sees:

24 artworks

↓

Scroll

↓

Load next 24 artworks

↓

Continue

Implementation:

Deliverable

The application feels like a digital museum.


Phase 7 — Search System

Goal

Make the archive discoverable.

Step 1

Use Sqlite search.

Support:

Step 2

Add Elasticsearch.

Architecture:

Sqlite

↓

Search Indexer Worker

↓

Elasticsearch

Features:

Deliverable

Users can quickly find artwork in the archive.


Phase 8 — Visual Intelligence

Goal

Add advanced discovery features.

This phase is optional.


Embedding Service

Purpose:

Understand visual similarity.

Pipeline:

Artwork Image

↓

Embedding Model

↓

Vector Representation

↓

Vector Database

Possible features:


AI Classification

Optional fallback.

Example:

Reverse Search Failed

↓

AI Classifier

↓

Estimated Style

AI should enhance the system, not become a requirement.


Phase 9 — Production Hardening

Goal

Turn the project into a reliable system.

Add:

Reliability

Security

Observability

Deployment

Prepare:


Final Architecture

Long-term vision:

                         Browser

                            |

                       Go Web Server

                            |

                           gRPC

                            |

                    Artwork Service

              +-------------+-------------+
              |                           |
              v                           v

        Sqlite                Object Storage

              |

          RabbitMQ

              |

      +-------+---------+
      |                 |
      v                 v

Metadata Worker   Image Worker


              |

        Search Indexer

              |

        Elasticsearch


              |

       Embedding Pipeline

              |

        Vector Database

Milestone Philosophy

Do not measure progress by services created.

Measure progress by capabilities unlocked.

The milestones:

  1. One artwork displayed.

  2. Artwork stored correctly.

  3. Backend separated.

  4. Background processing works.

  5. Images optimized.

  6. Museum interface exists.

  7. Search works.

  8. Intelligent discovery added.

  9. Production quality achieved.


Final Goal

Backroundo becomes a private digital museum:

A system designed not just to display images, but to preserve, organize, and explore a growing digital archive.