2.9 KiB
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:
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:
npx expo start
Then choose one of the Expo options:
- Press
ato open the app in an Android emulator. - Scan the QR code with Expo Go on a physical device.
- Press
wto 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:
npm test
Run Expo linting:
npm run lint
Run TypeScript checking:
npx tsc --noEmit
These commands are the expected local checks before delivery.
Project Structure
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:
- Add the required Supabase environment variables.
- Run
npm install. - Run
npm test,npm run lint, andnpx tsc --noEmit. - Start the app with
npx expo startand pressingato 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.