กลับหน้า Coding

Project

Gallery App

ระบบเว็บแกลเลอรีที่สามารถถ่ายรูปภาพจากกล้อง แล้วแต่งภาพใน Adobe Lightroom อัตโนมัติและ Export อัปโหลดขึ้นเว็บได้ทันที พร้อมระบบให้ลูกค้าสามารถเข้ามาเลือกและดาวน์โหลดภาพถ่ายได้เอง

Gallery App
เลื่อนลง
Gallery App — application
01

application

สำหรับการเชื่อมต่อกล้องและระบบอัปโหลดอัตโนมัติ โดยใช้ Flutter ทำเป็นแอปมือถือ รับรอง Android และ iOS ในการเชื่อมต่อกับกล้องใช้ USB Host เพื่อให้กล้องเห็นเป็น PC mode และสามารถดึงไฟล์ RAW จากกล้องได้โดยตรง และอัปโหลดไปยังระบบหลังบ้านด้วย REST API

Gallery App — การเเต่งภาพอัตโนมัติ
เเละอัปโหลดขึ้นเว็บ
02

การเเต่งภาพอัตโนมัติ เเละอัปโหลดขึ้นเว็บ

การแต่งภาพด้วย Lightroom plugin รับรูปภาพที่ได้จากการอัปโหลดเข้ากับระบบอัปโหลดอัตโนมัติ พอแต่งภาพเสร็จ รูปจะขึ้นเว็บทันทีโดยเป็นระบบอัตโนมัติ

Gallery App — ระบบค้นหารูปภาพด้วยใบหน้า
03

ระบบค้นหารูปภาพด้วยใบหน้า

ระบบนี้มีการค้นหารูปภาพด้วยใบหน้า โดยใช้เทคโนโลยีโมเดล InsightFace ArcFace ในการค้นหาภาพที่มีใบหน้าคล้ายกัน

Gallery App — web gallery
04

web gallery

เว็บแกลเลอรีที่สามารถให้ลูกค้าเข้ามาเลือกและดาวน์โหลดภาพถ่ายได้เอง โดยใช้ Next.js ในการพัฒนาเว็บแกลเลอรีนี้ และมีระบบจัดการจัดเก็บรูปภาพด้วย MinIO และสามารถดาวน์โหลดรูปภาพ JPEG ที่ใช้งานง่าย

Flow

Flow การทำงาน

Flow การทำงานของ Gallery App

Architecture

สถาปัตยกรรมระบบ

แผนผังสถาปัตยกรรมของ Gallery App

Structure

โครงสร้างโปรเจกต์

galleryapp_v2/
├── backend/# Go — API server + background worker
├── web/# Next.js 16 — Web frontend
├── mobile/# Flutter — Android app
├── python_service/# Python FastAPI — Face recognition (InsightFace)
├── enhance/# Python FastAPI — Image enhancement (XMP presets)
├── lr-plugin/# Lua — Adobe Lightroom plugin
└── k8s/# Kubernetes manifests
mobile/

แอป Flutter (Android / iOS) เชื่อมต่อกล้องผ่าน USB Host

PTP over USBSony vendor extensionคิวอัปโหลดเบื้องหลัง
backend/

REST API ด้วย Go Fiber แยกโดเมนเป็น album / gallery / upload / preset

cmd: api, workerinternal: handler-service-repositorypkg: kafka, minio, postgres
backend/python_service/

เซอร์วิสค้นหารูปด้วยใบหน้า (face recognition)

FastAPIface embedding
enhance/

Worker แต่งภาพและเรนเดอร์ไฟล์ RAW อ่าน-เขียนผ่าน MinIO

PythonMinIO client
lr-plugin/

ปลั๊กอิน Lightroom (Lua) รับงานจากคิวและส่งภาพที่แต่งเสร็จกลับขึ้นเว็บ

BackgroundTaskCheckQueue
web/

เว็บแกลเลอรีฝั่งลูกค้าด้วย Next.js สำหรับเลือกและดาวน์โหลดภาพ

App RouterWebSocket realtimeface search
k8s/

Manifest สำหรับ deploy ทุกเซอร์วิสบน Kubernetes

deploymentsservicesconfigmaps
ดูโค้ดบน GitHub

Stack

Next.jsTypeScriptFlutterGo FiberKubernetesKafkaMinIOPostgreSQL