# Shared App Types

## Purpose

UI-facing product types live in `frontend/src/shared/types/app.ts`.

## Contents

`frontend/src/shared/types/app.ts` contains cross-module product types such as:

- `UserRole`
- `CampusId`
- `CampusInfo`
- `StaffProfile`
- `ModuleId`
- `Module`
- `ZoneColor`
- cross-module static catalog item types used by the current UI

Backend DTO contracts remain in dedicated files under `frontend/src/shared/types/`, for example `auth.ts`, `frame.ts`, `campusAttendance.ts`, `policyDocuments.ts`, and `audioFiles.ts`.

## Rules

- New shared UI/product types should go in `frontend/src/shared/types/app.ts` only when they are genuinely cross-module.
- Backend request/response DTOs should stay in feature-specific shared type files.
- Feature-local view model types should stay in the relevant `frontend/src/business/<module>/types.ts` or component `types.ts` file.
