Tran Manh Tuan

Beacon-based Content Delivery Platform

This was a freelance project I worked on from 2023 to 2024. My primary responsibility was building, extending and maintaining the backend and APIs, together with deployment and operational support for the related cloud services.

Scale signal: the hourly statistics pipeline recorded 761,921 device connections in a single hour at peak. Each connection entered the campaign-selection path, where beacon context, delivery schedules and targeting conditions determined the relevant advertising content.

The system problem

The platform served multiple businesses from one system. Its administration console managed accounts, users and permissions; integrated applications; facilities, beacons and tags; offers, advertisements and notifications; and campaign schedules, frequency controls and target audiences.

For end users, a mobile SDK detected a BLE/iBeacon signal and called the API. The backend authenticated the application context, found active campaigns, applied delivery rules, returned the relevant content and captured events for operational monitoring and analytics.

Primary responsibilities and contributions

  • Developed and maintained the PHP administration backend and the real-time Java + Play Framework APIs.
  • Extended multi-tenant administration across accounts, access control, applications, beacons, content and campaigns.
  • Maintained campaign-matching logic for delivery windows, device platforms, frequency controls and audience targeting.
  • Troubleshot across the admin, API, MySQL, cache and runtime layers while keeping changes safe and compatible with active SDK and API consumers.
  • Supported a load-balanced cloud runtime, managed databases, Memcached and an analytics data pipeline into BigQuery.

System architecture

Beacon content platform — system architectureOperations staff use a PHP administration backend that stores accounts, applications and campaigns in MySQL. Mobile apps detect BLE or iBeacon signals and call a Java Play API, which authenticates the request and hands it to campaign matching on schedule, frequency and targeting rules. Matching uses Memcached for hot lookups and MySQL for campaign data, returns content to the app, and sends delivery events into an event and statistics pipeline that feeds BigQuery reporting. All server components run in a load-balanced cloud runtime. The observed peak was 761,921 device connections in one hour.

Load-balanced cloud runtime

content

Operations team
campaign and content management

Mobile app + SDK
BLE/iBeacon detection

PHP admin backend
multi-tenant operations

Java + Play API
authentication and request handling

Campaign matching
schedule · frequency · targeting

Memcached
hot lookup data

MySQL / managed DB
accounts · apps · campaigns

Event + statistics pipeline
delivery · clicks · devices

BigQuery / reporting
operational analytics

Peak observed load
761,921 device connections / hour

Diagram fitted to its frame

Public reconstruction of the platform at component level. It shows the backend and data responsibilities without exposing internal hosts, repositories or proprietary implementation details.

Advertisement delivery flow

Beacon advertisement delivery flowA mobile SDK detects a beacon, builds an API request with app, device and beacon context, authenticates the tenant and application, resolves the active campaigns for that beacon or location, applies delivery rules for time window, platform, frequency and target, selects an offer, advertisement or notification, returns it for the app to render, records delivery and interaction events, and aggregates them into hourly statistics. The observed peak was 761,921 device connections in one hour.

1. Detect proximity
SDK receives a BLE/iBeacon signal

2. Build API request
app, device and beacon context

3. Authenticate context
resolve tenant and application

4. Resolve candidates
active campaigns for the beacon/location

5. Apply delivery rules
window · platform · frequency · target

6. Select content
offer, advertisement or notification

7. Return response
the app renders the content

8. Record outcome
delivery and interaction events

9. Aggregate statistics
hourly reporting and analytics

Observed peak
761,921 device connections in one hour

Diagram fitted to its frame

The request path separates real-time campaign selection from downstream event aggregation, keeping the mobile response focused while preserving data for operations and reporting.

Administration and operations flow

Beacon platform administration and operations flowThe operations team administers the system and its tenants, manages accounts with role-based permissions, configures SDK and API integration for each application, maintains locations, tags and the beacon inventory, prepares offers, advertisements and notifications, sets up campaigns with targets, schedules and frequency, publishes and operates them, and finally monitors events, hourly statistics and exports.

Operations team
system and tenant administration

Accounts + RBAC
users, roles and permissions

Applications
SDK/API integration settings

Locations + beacons
facilities, tags and beacon inventory

Content catalogue
offers, ads and notifications

Campaign setup
targets, schedule and frequency

Publish + operate
status control and delivery

Monitor + analyse
events, hourly stats and exports

Diagram fitted to its frame

The admin console is an operational control plane: it connects tenant governance, physical beacon inventory, campaign configuration and post-delivery monitoring in one workflow.

These diagrams are public-safe reconstructions from the technical documentation and administration interface at component level. They omit internal URLs, credentials, proprietary source code and raw production data.

Image 1 of 8