Memorecs — Reinventing Event Guest Books with QR-Powered Multimedia Capture

Memorecs — Reinventing Event Guest Books with QR-Powered Multimedia Capture

The Challenge

Traditional event guest books — whether paper or basic digital forms — fail to capture the emotion and authenticity of live moments. Event organizers (wedding planners, corporate hosts, marketing agencies) needed a way to:

  • Collect rich multimedia content (voice, video, photo, links) from guests without requiring app downloads or registration
  • Prevent abuse and duplicates at events with hundreds of concurrent users scanning the same QR code
  • Scale through a partner distribution channel without managing individual event setups
  • Support Arabic-speaking markets with full RTL bilingual interfaces

No existing solution combined all four content types, a distributor business model, real-time galleries, and fraud prevention into a single platform.


Our Approach

DEVE Design was engaged to architect and build the platform end-to-end — from system design through deployment. We took a deliberate, architecture-first approach:

  1. Clean Architecture for Long-Term Maintainability

    We structured the solution into six clearly separated layers — Domain, Data, Application, IoC, Presentation, and Admin — ensuring that business logic remains decoupled from infrastructure. This allowed us to evolve the database, swap cloud providers, or redesign the UI without touching core business rules.

  2. Read/Write Database Separation

    We implemented dual DbContexts (WriteDbContext and ReadDBContext) on PostgreSQL. The read context explicitly blocks write operations, enforcing data access discipline across the 75+ services and preventing accidental mutations during query operations.

  3. Distributor-Quota Business Model

    We designed a hierarchical quota system: Admin → Distributor → Client → Event. Each level has allocation tracking, request/approval workflows, and full audit trails with before/after balance snapshots. This enabled Memorecs to onboard reseller partners without custom integration work.

  4. Concurrency-Safe Submission Engine

    The biggest technical challenge was handling 200+ guests simultaneously scanning a single QR code at a live event. We implemented:

    • Optimistic concurrency with EF Core RowVersion on EventRecord and Submission entities
    • Session-based slot reservations with 10-minute TTL, preventing race conditions on submission limits
    • Background cleanup service running every 5 minutes to expire abandoned reservations
    • Device fingerprinting (SHA256 of IP + UserAgent + cookie) to block duplicate submissions without requiring user accounts
  5. Four-Channel Multimedia Capture

    We built dedicated submission flows for each content type:

    • Voice — Browser-based WebM recording with WaveSurfer.js waveform visualization
    • Video — Direct browser video capture using the MediaRecorder API
    • Image — Drag-and-drop upload with Dropzone.js and Imageflow optimization
    • Link — URL submission for Spotify, YouTube, and other media platforms
  6. All media is stored on AWS S3 with Imageflow providing on-the-fly resizing, format conversion, and hybrid caching (1GB limit, 7-day headers).

  7. Client Accept/Reject Workflow

    We designed a status lifecycle for event records (Pending → Accepted/Rejected → Active → Archived/Expired) that gives event organizers full control. Distributors create event requests, clients review details, and only accepted events go live. This prevents unwanted QR activations and gives clients confidence in the system.

  8. Bilingual RTL/LTR Localization

    Built for the MENA market, the platform supports Arabic and English with route-based culture detection. Every view, error message, and validation prompt switches seamlessly between RTL and LTR layouts.


Architecture Diagram

    ┌─────────────────────────────────────────────────────────┐
    │                    ADMIN PANEL (MVC)                    │
    │  Event CRUD · Distributor Mgmt · QR Generation · Reports│
    └───────────────┬─────────────────────────┬───────────────┘
                    │                         │
    ┌───────────────▼─────────────────────────▼───────────────┐
    │                   IoC LAYER                             │
    │  DI Registration · Middleware · Filters · Localization  │
    └───────────────┬─────────────────────────────────────────┘
                    │
    ┌───────────────▼─────────────────────────────────────────┐
    │                APPLICATION LAYER                        │
    │  75+ Services · ViewModels · AutoMapper · MediatR       │
    └───────────────┬─────────────────────────────────────────┘
                    │
    ┌───────────────▼─────────────────────────────────────────┐
    │                   DATA LAYER                            │
    │  WriteDbContext · ReadDBContext · Repositories · Specs  │
    └───────────────┬─────────────────────────────────────────┘
                    │
    ┌───────────────▼──────────┐  ┌───────────────────────────┐
    │     DOMAIN LAYER         │  │     EXTERNAL SERVICES     │
    │  Entities · Enums ·      │  │  AWS S3 · SNS · SES       │
    │  Interfaces              │  │  PostgreSQL · Imageflow   │
    └──────────────────────────┘  └───────────────────────────┘

    ┌─────────────────────────────────────────────────────────┐
    │               PRESENTATION (Public MVC)                 │
    │  Event Pages · Submission Flows · Gallery · Profile     │
    │  Bilingual (ar/en) · QR Scanning · Voice/Video/Image    │
    └─────────────────────────────────────────────────────────┘
    

Submission Flow

Guest Scans QR ──► Event Landing Page ──► Choose Type

    ┌─────────┬────────┬───────┤
    ▼         ▼        ▼       ▼
    Voice     Video    Image    Link
    │         │        │       │
    ▼         ▼        ▼       ▼
    Device Fingerprint Check (SHA256)
    │
    ┌────▼─────┐
    │ Duplicate?│──Yes──► Blocked
    └────┬──────┘
         No
         ▼
    Reserve Slot (10-min TTL)
         ▼
    Upload to AWS S3
         ▼
    Mark Complete ──► Gallery Updated
    

Key Results

  • 442 commits across 22 months of iterative development
  • 6-layer Clean Architecture ensuring long-term maintainability and scalability
  • 75+ services powering a comprehensive feature set
  • Real-time concurrency handling for 200+ simultaneous guests
  • Zero-friction guest experience — no app download, no registration, scan and submit
  • Full RTL/LTR bilingual support for Arabic and English markets
  • Distributor channel enabling B2B partnerships without custom integration
  • Fraud prevention through device fingerprinting without impacting user experience

Technologies Used

BackendASP.NET Core 7.0, C#, Entity Framework Core 7.0, MediatR, AutoMapper
DatabasePostgreSQL (Npgsql), Read/Write separation, Specification pattern
CloudAWS S3, AWS SNS, AWS SES, Imageflow (hybrid cache)
FrontendBootstrap 5, jQuery, WaveSurfer.js, Dropzone.js, SweetAlert2, lightGallery
AuthASP.NET Identity, JWT, OpenID Connect, reCAPTCHA
QR & MediaQRCoder, SkiaSharp, iText7, EPPlus, Imageflow
DevOpsGit, Hangfire (background jobs), hosted background services
PatternsClean Architecture, Repository, Specification, UnitOfWork, CQRS, Soft Delete