Meta: Shared types, schemas, constants, and utilities. Single source of truth for data structures across the entire platform.
| Attribute | Value |
|---|---|
| Monorepo | submodules/onecoach-shared |
| Purpose | Types, Zod schemas, constants, shared logic |
| Used By | Backend, Frontend, Mobile |
submodules/onecoach-shared/
├── packages/
│ ├── types/ # @onecoach/types - TypeScript definitions
│ ├── schemas/ # @onecoach/schemas - Zod validation
│ ├── constants/ # @onecoach/constants - App constants
│ ├── contracts/ # @onecoach/contracts - API contracts
│ ├── lib-shared/ # @onecoach/lib-shared - Utilities
│ └── lib-theme/ # @onecoach/lib-theme - Theme state
All shared TypeScript definitions:
src/index.ts- Core typessrc/prisma-helpers.ts- Prisma-related types
Zod validation schemas:
src/exercise.schema.tssrc/food.schema.tssrc/workout.schema.tssrc/nutrition.schema.ts
Caution
Never reinvent schemas. Import from @onecoach/schemas.
Centralized constants:
supported-locales- i18n configurationsubscription-prices- IAP dataconfig- General app config
API contracts and service interfaces for consistent inter-service communication.
Utility belt:
id-generator- Unique ID creationstorage.service- Storage helpersdate-utils- Date manipulation (date-fns)utils/validation- Common validatorsutils/formatters- Data formatters
Theme management:
- Zustand store for theme state
- React ThemeProvider
// Types
import { UserProfile, Workout } from '@onecoach/types';
// Schemas
import { workoutSchema, nutritionPlanSchema } from '@onecoach/schemas';
// Constants
import { SUPPORTED_LOCALES } from '@onecoach/constants';
// Utilities
import { generateId, formatDate } from '@onecoach/lib-shared';- Check
packages/types/src/index.ts - For DB models, check Prisma-related files
Always use @onecoach/schemas:
import { workoutSchema } from '@onecoach/schemas';
const result = workoutSchema.safeParse(data);
if (!result.success) {
// Handle validation error
}Before writing a helper:
- Check
packages/lib-shared/- it likely exists - If new, add to appropriate module in
lib-shared
| Action | Location |
|---|---|
| Add type | packages/types/ |
| Add schema | packages/schemas/ |
| Add constant | packages/constants/ |
| Add utility | packages/lib-shared/ |
| Add API contract | packages/contracts/ |