apps/web owns the web experience and production Worker. apps/mobile owns Expo navigation and native integration. Shared contracts and implementations live in the packages below. A package boundary does not automatically make a module safe for a browser: follow the client/server boundary.
| Package | Responsibility |
|---|---|
| api | Authorized operations and shared contracts |
| auth | Identity and request scope |
| db | Postgres schema and durable state |
| storage | Private file gateway |
| Transactional email delivery | |
| env | Validated environment contracts |
| flags | Feature registry and overrides |
| intl | Request-scoped language |
| errors | Stable error vocabulary |
| ui | Shared web primitives |
| config | Tooling configuration |
| project-setup-cli | Project identity and provisioning workflow |
| ads | Optional native advertising |
| app-update | Native update policy |
| purchases | Native purchase coordination |
| react-utils | Small shared React helpers |
| widgets | Optional native Todo widgets |