PhotoFlow Documentation Help

Modules Overview

Backend Services

The PhotoFlow backend consists of multiple microservices, each responsible for a specific domain.

Core Services

Service

Description

Key Features

Photoflow Service

Core album workflow management

State machine, photo sync, feedback

Storage Service

Cloud provider integration

Google Drive sync, file management

Identity Service

Authentication & authorization

OAuth2, JWT tokens, policies

Organization Service

Multi-tenant organization management

Org CRUD, member management

Supporting Services

Service

Description

Provider Service

External provider configurations

Sender Service

Email/SMS notification delivery

AppGateway

API Gateway, routing, middleware

BuildingBlocks

Shared libraries used across all services:

Library

Purpose

Key Components

BuildingBlocks.Authentication

Auth infrastructure

Policies, JWT handling

BuildingBlocks.Cloud

Cloud providers

Google, AWS adapters

BuildingBlocks.SignalR

Real-time communication

Hub, notification service

BuildingBlocks.StateMachine

Workflow engine

State machine definitions

BuildingBlocks.Caching

Distributed caching

Redis integration

BuildingBlocks.Persistence

Data access

EF Core, repositories

BuildingBlocks.Exception

Error handling

Custom exceptions

BuildingBlocks.Messaging

Event bus

Internal events

Frontend Applications

Application

Technology

Purpose

pfl01y25-fe-web

Angular 19

Admin portal for photographers

photoflow

Angular 19

Public marketing website

Service Dependencies

BuildingBlocks

Core Services

Gateway

Frontend

pfl01y25-fe-web

photoflow

AppGateway

Photoflow

Storage

Identity

Organization

Authentication

Cloud

SignalR

StateMachine

Caching

Module Communication

Event-Driven Architecture

Services communicate through internal events:

Photoflow Service Storage Service │ │ │ ─────FullSyncStorageEvent────────▶ │ │ │ │ ◀────StorageFolderSyncProgress──── │ │ │ │ ◀────StorageFolderSyncCompleted─── │ │ │

REST API Calls

Some operations require synchronous REST calls:

Photoflow ──GET /api/storage/folders/{id}/photos──▶ Storage

Database per Service

Each service owns its database schema within the shared PostgreSQL instance:

Service

Schema/Tables

Photoflow

Albums, AlbumTags, PhotoProcs, PhotoComments

Storage

Folders, Files, AuditLogs

Identity

Users, Tokens, RefreshTokens

Organization

Organizations, Members, Invitations

Last modified: 25 February 2026