Final push before system formatting

This commit is contained in:
Chris Sanden
2026-05-31 14:05:22 +02:00
commit 5ece589fbe
178 changed files with 164198 additions and 0 deletions

View File

@@ -0,0 +1,105 @@
# Study Sprint
Study Sprint is a React Native mobile application built with Expo Router. The app helps students organize study work into subjects, assignments, tasks, and timed focus sessions. Users can create an account, structure their course work, start study sprints from individual tasks, take breaks between sessions, and follow progress from the dashboard.
The application uses Supabase for authentication and persistent data, while Expo/React Native handles the mobile client, navigation, notifications, and local session state.
## Main Features
- Email/password sign up and login with Supabase Auth.
- Subject, assignment, and task management.
- Task-based sprint timer with focus sessions and breaks.
- Dashboard for current progress, active sprint state, and upcoming work.
- Local persistence for active session state.
- Jest tests for route guarding and CRUD behavior around subjects, assignments, and tasks.
## Tech Stack
- Expo SDK 54
- React Native 0.81
- Expo Router
- TypeScript
- Supabase
- NativeWind / Tailwind CSS
- Jest with `jest-expo`
## Requirements
Install these before running the project locally:
- Node.js 20.19.4 or newer
- npm
- Android Studio with an Android emulator, or a physical Android device with USB debugging
- Expo CLI through `npx expo`
## Install Dependencies
From the project root:
```bash
npm install
```
The project uses `patch-package`, so `npm install` also applies the local patch in `patches/`.
## Run Locally With Expo
Start the Expo development server:
```bash
npx expo start
```
Then choose one of the Expo options:
- Press `a` to open the app in an Android emulator.
- Scan the QR code with Expo Go on a physical device.
- Press `w` to run the web version for quick UI checks.
The Android emulator should already be running before pressing `a`.
## Test and Quality Checks
Run the Jest test suite:
```bash
npm test
```
Run Expo linting:
```bash
npm run lint
```
Run TypeScript checking:
```bash
npx tsc --noEmit
```
These commands are the expected local checks before delivery.
## Project Structure
```text
app/ Expo Router screens and navigation layouts
components/ Shared UI components
constants/ Shared styling and theme constants
hooks/ Shared React hooks
lib/ Supabase client, session lifecycle, progress, storage, and utilities
__tests__/ Jest test files
assets/ App icons, splash assets, and images
patches/ patch-package fixes applied after install
```
## Delivery Notes
For local assessment, the recommended flow is:
1. Add the required Supabase environment variables.
2. Run `npm install`.
3. Run `npm test`, `npm run lint`, and `npx tsc --noEmit`.
4. Start the app with `npx expo start` and pressing `a` to open the app with your Android Emulator.
The app is configured as an Expo managed project with generated native folders ignored, so Android/iOS native folders do not need to be committed for normal Expo development.