Make discipline unavoidable. RiseRite enforces healthy morning and productivity habits by verifying real-world actions using on-device computer vision.
riserite/
├── mobile/ # React Native/Expo mobile app
├── api/ # Backend API (FastAPI)
│ └── fastapi/
├── infra/ # AWS infrastructure setup
├── ml/ # ML/CV models and experiments
└── docs/ # Documentation
- Wake Module: CV-verified alarm that requires push-ups before silencing
- Alarm Scheduling: Set your wake-up time
- Push-up Detection: On-device computer vision to count and verify push-ups
- Motivational Audio: Audio transitions from alarm to motivational track
- Session Logging: Sessions are logged to DynamoDB and local SQLite
- Node.js 18+
- Python 3.9+
- AWS Account (for backend)
- Expo CLI:
npm install -g expo-cli
-
Navigate to mobile directory:
cd mobile -
Install dependencies:
npm install
-
Start Expo:
npm start
-
Build development client (required for native modules like MediaPipe):
Option A: EAS Build (Recommended - Works on Windows for iOS)
# Install EAS CLI globally npm install -g eas-cli # Login to Expo eas login # Build iOS development client eas build --platform ios --profile development # Or build Android eas build --platform android --profile development
Option B: Local Build (Requires macOS for iOS)
npx expo prebuild npx expo run:android # or run:ios (macOS only)
-
Configure AWS credentials (see
infra/aws-setup.md) -
Create DynamoDB table:
aws dynamodb create-table \ --table-name WakeSessions \ --attribute-definitions AttributeName=userId,AttributeType=S AttributeName=date,AttributeType=S \ --key-schema AttributeName=userId,KeyType=HASH AttributeName=date,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST
-
Navigate to API directory:
cd api/fastapi -
Install dependencies:
pip install -r requirements.txt
-
Set environment variables:
export AWS_ACCESS_KEY_ID=your_key export AWS_SECRET_ACCESS_KEY=your_secret export AWS_REGION=us-east-1
-
Run server:
python main.py
- Run linting:
npm run lint - Format code:
npm run format
- Mobile: Expo with React Native, TypeScript, Zustand for state
- CV: MediaPipe Pose Detection (primary) + TensorFlow Lite (fallback)
- Backend: FastAPI with AWS DynamoDB
- Storage: Local SQLite + DynamoDB sync
- Build: EAS Build for cloud-based iOS/Android builds
-
Install EAS CLI:
npm install -g eas-cli
-
Login to Expo:
cd mobile eas login(Create account at https://expo.dev if needed)
-
Build for iOS:
eas build --platform ios --profile development
-
Install on Device:
- EAS provides a download link after build completes
- Install via TestFlight or direct download
- Or use
eas build:run --platform iosto install directly
See docs/EAS_BUILD_QUICKSTART.md for detailed instructions.
- Brushing verification
- Move module (workouts)
- Focus module (deep work tracking)
- Web dashboard
- Advanced analytics
MIT