lesingo

ADR-0001: Feature-first Clean Architecture

Context

SayLens combines high-frequency camera data, an Android native detector, English-learning rules, speech, and interactive React Native UI. Organizing the repository only by technical type would make one user journey span unrelated top-level folders and make platform details easy to leak into business rules.

The project also needs to remain understandable as public technical evidence, without adding abstractions before they have a purpose.

Decision

Use a feature-first Clean Architecture. The initial learning feature contains four explicit layers: domain, application, infrastructure, and presentation.

Dependencies point inward. The app directory is the composition root, and the Android detector remains a separate local native module.

Create deeper folders only alongside real implementations. Do not create generic base classes, repository wrappers, barrel exports, or a dependency injection framework during the planning phase.

Consequences

Positive

Negative and risks

Alternatives considered

Validation