diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..66097bb --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,45 @@ +# Project Guidelines + +## Code Style +- Keep components as functional React components and use hooks-based state. +- Follow existing naming and structure in `src/screens` and `src/components`: + - Screen files: `*Screen.js` + - Shared UI pieces: `src/components/*.js` +- Keep styling centralized in `src/styles.js` via `createStyles()` and use theme-driven inline color overrides in screens/components. +- Reuse `getTheme(darkMode, pinkMode)` from `src/theme.js` for color values; do not hardcode alternate palettes in individual screens. + +## Architecture +- Root orchestration lives in `App.js`: + - App-level state includes current screen, focus mode, theme toggles, and timer/countdown state. + - Screen switching is controlled by the `screen` state (`home`, `timeuntil`, `timer`). +- Screen responsibilities: + - `HomeScreen`: mode selection and top controls. + - `TimeUntilScreen`: target clock-time countdown flow. + - `TimerScreen`: duration countdown flow. + - `FocusScreen`: minimal fullscreen countdown UI. +- Shared presentational components: + - `TopControls`: dark/pink/fullscreen/focus controls. + - `CountdownRow`: reusable HH:MM:SS display. + +## Build And Run +- Install dependencies: `npm install` +- Start dev server: `npm start` +- Run on Android: `npm run android` +- Run on iOS: `npm run ios` +- Run on web: `npm run web` +- EAS builds use `eas.json` profiles (`development`, `preview`, `production`). + +## Conventions +- Keep timer/countdown behavior in `App.js` unless intentionally refactoring architecture. +- Preserve current time behavior: + - `now` updates every second with `setInterval`. + - Time-until target is based on local device time and rolls to next day when target time has passed. +- Maintain platform guards: + - Web-only fullscreen uses `document.fullscreenElement` APIs. + - Android hardware back behavior is handled in `App.js` and should keep focus/screen fallback behavior. +- For countdown display, continue using `CountdownRow` and 2-digit padded units for consistency. + +## Pitfalls +- This project has no test scripts configured; do not claim tests were run unless you add and run them. +- Be careful with web-only globals (`document`) and keep `Platform.OS` guards. +- Avoid introducing timezone assumptions without explicit product requirements; current logic is local-time based. \ No newline at end of file