Final push before system formatting
This commit is contained in:
105
AppDev/ikt205_2026_18_study_sprint/source/README.md
Normal file
105
AppDev/ikt205_2026_18_study_sprint/source/README.md
Normal 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.
|
||||
Reference in New Issue
Block a user