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.
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.
shared as a convenience folder would erode boundaries.components, hooks, and services:
rejected because feature ownership becomes unclear as the product grows.