Full Stack Architecture

Custom Client Delivery &
Gallery Platform

A secure, high-performance solution to replace Google Drive. Built to give professional photography the presentation it deserves while maintaining strict data privacy.

Java BackendSpring BootReactMySQLJWT AuthTiered Storage

The Problem

As a photographer, I found that existing platforms failed in two critical areas: Presentation and Professionalism.

Instagram compresses images aggressively and dictates the aspect ratio. Google Drive, while functional, provides a sterile "file folder" experience that diminishes the emotional impact of a paid photoshoot.

I needed a solution that offered the visual fidelity of a gallery with the secure, bulk-transfer capabilities of a cloud drive.

  • Instagram's layout limits creative control.
  • Google Drive links feel impersonal for clients.
  • Third-party SaaS tools have monthly subscription fees.

Data Flow & Access Control

Public Visitor
Cache Hit
SSD (Thumbnails)
Client Login
JWT Verify
Spring Security
My Albums
Read Access Only
Admin (Me)
Admin Middleware
Full CMS Control

Tiered Storage Logic

To balance performance with cost, I implemented a split-storage strategy directly on the hardware level:

  • Hot Storage (SSD)Stores compressed thumbnails and cached assets for instant gallery loading.
  • Cold Storage (HDD)Houses massive RAW/Full-Res files. These drives only spin up when a client requests a "Download All" zip.

Relational Data Design

I chose MySQL because strict data integrity is required to map permissions correctly.

Client——— 1:N ———Albums
Albums——— N:N ———Photos
* Ensures clients can strictly ONLY access albums assigned to their UserID.

Core Backend Features

JWT Security

Stateless authentication using JSON Web Tokens. Admin routes are protected via middleware, ensuring only I can access the CMS dashboard.

Dynamic Zipping

When a client clicks "Download All," the Java backend streams the full-res files from the HDD, compresses them into a ZIP on the fly, and serves the stream to the browser.

Smart Caching

The public gallery (homepage) utilizes server-side caching. Since these portfolio highlights rarely change, they are served instantly from memory, bypassing DB queries.

Return to Portfolio