Add EntityRepositoryPort and RepositoryFactory ports in application/ports/
so use cases depend on the abstraction instead of the infrastructure
EntityRepository concrete class. A concrete EntityRepositoryFactory is
injected at the composition root (LeifView tabs, registerCommands, Seeder).
Closes#2
- refactor all 20 use cases to use EntityRepository pattern
- integrate ActiveContestGuard into 6 query use cases
- add input validation layer with 14 validators
- create 3 domain services (Subject, StudySession, QuestionNotebook)
- optimize UI rendering with incremental tab updates
- transform all 9 entities from interfaces to rich classes
- add JSDoc to all use cases, services, entities, and UI components
- add comprehensive tests: 96 tests (up from 23, 317% increase)
all 96 tests passing