- auth: register/login/refresh/logout w/ JWT+Argon2, protected mutations - domain: User, RefreshSession, auth ports, Unauthorized/Forbidden errors - presentation: context/state/factory/errors/extractors/openapi modules - routes behind /api, SPA served from root w/ fallback - OpenAPI Scalar at /docs - frontend ssr:false, single-binary Dockerfile
20 lines
665 B
Rust
20 lines
665 B
Rust
pub mod errors;
|
|
pub mod models;
|
|
pub mod ports;
|
|
pub mod services;
|
|
pub mod value_objects;
|
|
|
|
pub use errors::DomainError;
|
|
pub use models::{
|
|
ChordPosition, GeneratedToken, LyricLine, RefreshSession, Section, SectionKind, Song, SongMeta,
|
|
SongSummary, StoredSong, User, song_preview_chords,
|
|
};
|
|
pub use ports::{
|
|
AuthService, FetchError, ParseError, PasswordHasher, RefreshSessionRepository,
|
|
SongRepositoryPort, SongSearchPort, TabFetcherPort, TabParserPort, TabSource, UserRepository,
|
|
};
|
|
pub use services::{ChordTransposer, TransposeError};
|
|
pub use value_objects::{
|
|
Chord, Email, Note, Password, PasswordHash, SortField, SortOrder, UserId, Username,
|
|
};
|