feat: frontend MVP — auth, timeline, upload, albums, admin, image viewer
Backend: - user roles (DB + JWT + first-user-is-admin) - volume-aware file resolver (multi-volume asset serving) - directory scanner uses volume URI directly - date-summary endpoint (capture date from EXIF) - timeline ordered by capture date - list endpoints: volumes, plugins, pipelines, library paths - delete endpoints: volumes, library paths - configurable upload body limit (MAX_UPLOAD_BYTES) Frontend: - auth: login/register, token refresh, role-based admin gate - timeline: date-grouped grid, infinite scroll, date scrubber - image viewer: fullscreen zoom/pan/pinch, metadata sidebar - upload: drag-drop, sequential upload, progress tracking - albums: create, add/remove photos, asset picker dialog - admin: storage (import library), jobs (pagination, error details), plugins (list + toggle), pipelines, sidecars, duplicates - multi-select mode with add-to-album action - TanStack Query for all data fetching
This commit is contained in:
@@ -3,9 +3,10 @@ use std::sync::Arc;
|
||||
use application::{
|
||||
catalog::{
|
||||
CreateStackHandler, DeleteAssetHandler, DeleteStackHandler, DetectLivePhotosHandler,
|
||||
GetAssetHandler, GetStackHandler, GetTimelineHandler, ListDuplicatesHandler,
|
||||
ListStacksHandler, ReadAssetFileHandler, ReadDerivativeHandler, RegisterAssetHandler,
|
||||
ResolveDuplicateHandler, SearchAssetsHandler, UpdateMetadataHandler,
|
||||
GetAssetHandler, GetDateSummaryHandler, GetStackHandler, GetTimelineHandler,
|
||||
ListDuplicatesHandler, ListStacksHandler, ReadAssetFileHandler, ReadDerivativeHandler,
|
||||
RegisterAssetHandler, ResolveDuplicateHandler, SearchAssetsHandler,
|
||||
UpdateMetadataHandler,
|
||||
},
|
||||
identity::{
|
||||
GetProfileHandler, LoginUserHandler, LogoutHandler, RefreshTokenHandler,
|
||||
@@ -17,7 +18,8 @@ use application::{
|
||||
},
|
||||
processing::{
|
||||
CompleteJobHandler, ConfigurePipelineHandler, EnqueueJobHandler, FailJobHandler,
|
||||
ListJobsHandler, ManagePluginHandler, ReportBatchProgressHandler, StartJobHandler,
|
||||
ListJobsHandler, ListPipelinesHandler, ListPluginsHandler, ManagePluginHandler,
|
||||
ReportBatchProgressHandler, StartJobHandler,
|
||||
},
|
||||
sharing::{
|
||||
AccessSharedResourceHandler, GenerateShareLinkHandler, RevokeShareHandler,
|
||||
@@ -28,7 +30,9 @@ use application::{
|
||||
ImportSidecarHandler, ResolveConflictHandler,
|
||||
},
|
||||
storage::{
|
||||
CheckQuotaHandler, IngestAssetHandler, RegisterLibraryPathHandler, RegisterVolumeHandler,
|
||||
CheckQuotaHandler, DeleteLibraryPathHandler, DeleteVolumeHandler, IngestAssetHandler,
|
||||
ListAllLibraryPathsHandler, ListIngestPathsHandler, ListVolumesHandler,
|
||||
RegisterLibraryPathHandler, RegisterVolumeHandler,
|
||||
},
|
||||
};
|
||||
use domain::ports::{RefreshTokenRepository, TokenIssuer};
|
||||
@@ -48,6 +52,7 @@ pub struct CatalogHandlers {
|
||||
pub ingest_asset: Arc<IngestAssetHandler>,
|
||||
pub get_asset: Arc<GetAssetHandler>,
|
||||
pub get_timeline: Arc<GetTimelineHandler>,
|
||||
pub get_date_summary: Arc<GetDateSummaryHandler>,
|
||||
pub update_metadata: Arc<UpdateMetadataHandler>,
|
||||
pub read_asset_file: Arc<ReadAssetFileHandler>,
|
||||
pub read_derivative: Arc<ReadDerivativeHandler>,
|
||||
@@ -76,7 +81,12 @@ pub struct OrganizationHandlers {
|
||||
#[derive(Clone)]
|
||||
pub struct StorageHandlers {
|
||||
pub register_volume: Arc<RegisterVolumeHandler>,
|
||||
pub delete_volume: Arc<DeleteVolumeHandler>,
|
||||
pub list_volumes: Arc<ListVolumesHandler>,
|
||||
pub register_library_path: Arc<RegisterLibraryPathHandler>,
|
||||
pub list_ingest_paths: Arc<ListIngestPathsHandler>,
|
||||
pub list_all_library_paths: Arc<ListAllLibraryPathsHandler>,
|
||||
pub delete_library_path: Arc<DeleteLibraryPathHandler>,
|
||||
pub check_quota: Arc<CheckQuotaHandler>,
|
||||
}
|
||||
|
||||
@@ -107,7 +117,9 @@ pub struct ProcessingHandlers {
|
||||
pub list_jobs: Arc<ListJobsHandler>,
|
||||
pub batch_progress: Arc<ReportBatchProgressHandler>,
|
||||
pub manage_plugin: Arc<ManagePluginHandler>,
|
||||
pub list_plugins: Arc<ListPluginsHandler>,
|
||||
pub configure_pipeline: Arc<ConfigurePipelineHandler>,
|
||||
pub list_pipelines: Arc<ListPipelinesHandler>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
||||
Reference in New Issue
Block a user