This website requires JavaScript.
c251a5c41f
perf: concurrent worker with claim/execute split + graceful shutdown
master
Gabriel Kaszewski
2026-06-01 02:14:44 +02:00
0077caa743
feat: safe deletion, album/asset delete, trash, README update
Gabriel Kaszewski
2026-06-01 01:57:53 +02:00
957737ac9b
feat: frontend MVP — auth, timeline, upload, albums, admin, image viewer
Gabriel Kaszewski
2026-06-01 01:35:43 +02:00
49f77a78b9
refactor: split routes.rs into per-context modules
Gabriel Kaszewski
2026-05-31 23:13:07 +02:00
6140ecd3ba
refactor: split worker into bootstrap, event_loop, sweep modules
Gabriel Kaszewski
2026-05-31 23:09:21 +02:00
7b5bb66b37
feat: frontend-ready backend — pagination, auto-derivatives, list endpoints, bulk ops, OpenAPI
Gabriel Kaszewski
2026-05-31 23:06:25 +02:00
bcaf49cc81
perf: scale fixes for 1M+ photo libraries
Gabriel Kaszewski
2026-05-31 22:40:25 +02:00
d879fd6437
fix: sync .env.example with actual config
Gabriel Kaszewski
2026-05-31 22:28:36 +02:00
168f2a6a27
docs: update Dockerfile and README
Gabriel Kaszewski
2026-05-31 22:27:55 +02:00
c6f82090d2
feat: auth hardening + codebase quality sweep
Gabriel Kaszewski
2026-05-31 22:26:02 +02:00
84fb410316
fe init
Gabriel Kaszewski
2026-05-31 21:32:28 +02:00
95916cedde
feat: directory scanner plugin — walk library paths, auto-register assets
Gabriel Kaszewski
2026-05-31 21:18:23 +02:00
ef64e86439
feat: serve derivative files via GET /assets/{id}/derivatives/{profile}
Gabriel Kaszewski
2026-05-31 21:10:58 +02:00
f85c0cb246
feat: real XMP sidecar adapter, replaces LogSidecarWriter stubs
Gabriel Kaszewski
2026-05-31 21:05:46 +02:00
d379f3d3c8
refactor: code smell fixes — tests, events, naming
Gabriel Kaszewski
2026-05-31 21:00:50 +02:00
e11a1a828b
refactor: use workspace deps for all internal crates, no relative paths
Gabriel Kaszewski
2026-05-31 20:48:09 +02:00
35d5baf7be
feat: thumbnail generator plugin with configurable size/format
Gabriel Kaszewski
2026-05-31 20:44:55 +02:00
45669ec848
feat: real EXIF extraction via adapters-exif crate
Gabriel Kaszewski
2026-05-31 20:28:50 +02:00
d1c7243f5b
feat: seed default plugins/pipelines, auto-enqueue jobs on asset ingest
Gabriel Kaszewski
2026-05-31 20:12:42 +02:00
b5cda3afeb
feat: add VisibilityFilteredAssetRepository decorator for automatic access control on asset queries
Gabriel Kaszewski
2026-05-31 19:06:49 +02:00
0b2237860e
refactor: introduce IngestTransaction port to reduce IngestAssetHandler from 7 to 4 ports
Gabriel Kaszewski
2026-05-31 18:44:51 +02:00
aa09aec66b
feat: event store — persist domain events to Postgres event_log table via composite publisher
Gabriel Kaszewski
2026-05-31 18:36:10 +02:00
d022cb9068
feat: event-driven job dispatch via NATS subscription with 60s fallback sweep
Gabriel Kaszewski
2026-05-31 18:31:53 +02:00
5a4eb1e4f8
refactor: split bootstrap factory into per-context service builders
Gabriel Kaszewski
2026-05-31 18:28:57 +02:00
c16c9d4581
refactor: extract pg_repo macro and MapDomainError trait to reduce postgres adapter boilerplate
Gabriel Kaszewski
2026-05-31 18:24:16 +02:00
2fe0a4c245
dockerfile
Gabriel Kaszewski
2026-05-31 17:51:39 +02:00
838ed9a3f8
feat: wire NATS event publisher into bootstrap + worker
Gabriel Kaszewski
2026-05-31 11:53:51 +02:00
0e9911ebfc
feat: event infrastructure — payload, transport, NATS adapter
Gabriel Kaszewski
2026-05-31 11:50:16 +02:00
dacfc3d453
feat: worker plugin system — domain ports, pipeline executor, built-in plugins
Gabriel Kaszewski
2026-05-31 11:35:05 +02:00
6c88ac344c
refactor: extract inline tests to separate files in auth + storage adapters
Gabriel Kaszewski
2026-05-31 11:16:18 +02:00
aff772f6d7
style: fmt postgres lib.rs
Gabriel Kaszewski
2026-05-31 11:12:18 +02:00
e082387f6e
refactor: group postgres adapters by bounded context
Gabriel Kaszewski
2026-05-31 11:11:46 +02:00
a6b86c23d8
feat: wire remaining handlers — tag, quota, register asset, sidecar, processing
Gabriel Kaszewski
2026-05-31 11:04:22 +02:00
19be8c2adf
feat: add sidecar + processing migrations and postgres adapters
Gabriel Kaszewski
2026-05-31 11:04:13 +02:00
3399e25441
feat: add sharing endpoints — share, link, revoke, public access
Gabriel Kaszewski
2026-05-31 10:50:28 +02:00
2d9dd2c2d0
refactor: clean up presentation layer — AppState grouping, multipart extractor, thin handlers
Gabriel Kaszewski
2026-05-31 06:14:19 +02:00
34b231a8f6
refactor: move business logic out of presentation — ReadAssetFile, checksum, auth checks, MetadataValue conversions
Gabriel Kaszewski
2026-05-31 06:10:07 +02:00
0f003a3bd6
feat: add file serving endpoint GET /assets/:id/file
Gabriel Kaszewski
2026-05-31 05:59:19 +02:00
3a18fd1d3f
fix: axum 0.8 route syntax, smoke test verified
Gabriel Kaszewski
2026-05-31 05:55:47 +02:00
9aba393fde
feat: vertical slice — migrations, postgres adapters, presentation handlers, bootstrap wiring
Gabriel Kaszewski
2026-05-31 05:52:42 +02:00
201eff717d
feat: add presentation layer + bootstrap wiring for vertical slice
Gabriel Kaszewski
2026-05-31 05:51:09 +02:00
8c1a0e4519
feat: add postgres migrations and repository adapters for vertical slice
Gabriel Kaszewski
2026-05-31 05:43:21 +02:00
4e2fc99065
docs: add proper README and MIT license
Gabriel Kaszewski
2026-05-31 05:32:54 +02:00
c2ebca0da0
style: cargo fmt --all
Gabriel Kaszewski
2026-05-31 05:31:42 +02:00
4b31a0f74b
app: add sidecar sync commands (export, detect, import, resolve, full export/import)
Gabriel Kaszewski
2026-05-31 05:29:03 +02:00
d1394ce7bb
app: add organization + sharing commands/queries
Gabriel Kaszewski
2026-05-31 05:17:51 +02:00
536bf3463a
app: add catalog commands/queries (RegisterAsset, UpdateMetadata, GetTimeline, GetAsset)
Gabriel Kaszewski
2026-05-31 05:13:47 +02:00
4549d746c3
app: add storage commands/queries + missing in-memory test repos
Gabriel Kaszewski
2026-05-31 05:11:02 +02:00
fa36bb8c0e
refactor: restructure application to CQRS, update api-types + presentation
Gabriel Kaszewski
2026-05-31 05:00:34 +02:00
d62d8157a8
refactor: move template use cases into identity module, clean up application structure
Gabriel Kaszewski
2026-05-31 04:49:55 +02:00
de93373b43
refactor: restructure domain crate by bounded context
Gabriel Kaszewski
2026-05-31 04:44:48 +02:00
2b62d1ec81
fix: resolve clippy warnings in share_link, invite_code, asset_stack
Gabriel Kaszewski
2026-05-31 04:27:03 +02:00
51fa62fdef
app: add core use cases (RegisterUser, CreateAlbum) with TDD
Gabriel Kaszewski
2026-05-31 04:25:47 +02:00
294626db72
app: add in-memory test fakes for all critical ports
Gabriel Kaszewski
2026-05-31 04:25:40 +02:00
b67e595280
domain: add Processing entities and ports (Job, JobBatch, Plugin, Pipeline)
Gabriel Kaszewski
2026-05-31 03:35:41 +02:00
ee79be0351
domain: add Sidecar Sync entities and ports (SidecarRecord, SidecarConfig, SidecarWriterPort)
Gabriel Kaszewski
2026-05-31 03:34:04 +02:00
ba53e0fa70
domain: add Sharing entities and ports (ShareScope, ShareTarget, ShareLink, InviteCode, VisibilityFilter)
Gabriel Kaszewski
2026-05-31 03:33:00 +02:00
1d3060fa12
domain: add Organization entities and ports (Album, Tag, Collection, FilterCriteria)
Gabriel Kaszewski
2026-05-31 03:31:33 +02:00
ccb61b72d7
domain: add Media Catalog ports and MetadataResolver service
Gabriel Kaszewski
2026-05-31 03:27:48 +02:00
147206d8a5
domain: add Media Catalog entities (Asset, Metadata, Stack, Derivative, Duplicate)
Gabriel Kaszewski
2026-05-31 03:27:41 +02:00
ed6eb0c28a
domain: add Storage ports (BYOS, Quota, LibraryPath) and QuotaChecker service
Gabriel Kaszewski
2026-05-31 03:23:38 +02:00
3c5c4ed9b1
domain: add Storage & Sources entities (StorageVolume, LibraryPath, IngestSession, Quota)
Gabriel Kaszewski
2026-05-31 03:23:34 +02:00
04811ff436
domain: add PermissionChecker service with additive role evaluation
Gabriel Kaszewski
2026-05-31 03:20:28 +02:00
cebb4cdaf1
domain: add Identity & Access ports (UserRepo, RoleRepo, GroupRepo, EventPublisher)
Gabriel Kaszewski
2026-05-31 03:20:22 +02:00
656da7e945
domain: add Identity & Access entities (User, Role, Permission, Group)
Gabriel Kaszewski
2026-05-31 03:20:18 +02:00
aa432e6594
domain: add domain errors, events, and services module scaffold
Gabriel Kaszewski
2026-05-31 03:16:40 +02:00
3571c94bec
domain: add cross-cutting value objects (SystemId, DateTimeStamp, Checksum, StructuredData)
Gabriel Kaszewski
2026-05-31 03:16:28 +02:00
f9cb142c3b
init: scaffold from k-template with postgres + worker
Gabriel Kaszewski
2026-05-31 03:08:38 +02:00