Transform how students engage with course content. Reflectable bridges the gap between passive learning and active reflection by integrating directly with university VLE systems.
University VLEs (like Moodle) are designed for content delivery, not student engagement. Course materials pile up, important lectures get buried, and there's no way to organize content in a way that makes sense for how you actually study.
Reflectable connects to your university's Moodle and lets you:
- Organize your way — Restructure courses, promote important sections, and drag-to-reorder content
- Reflect on what you learn — Attach notes, links, and files directly to lectures and resources
- Collaborate with classmates — Share your course layouts via invite codes; crowdsource the best organization
- Study offline — Cached content works without internet using smart stale-while-revalidate patterns
Auto-authenticates with university SSO, fetches all your courses, and keeps sessions alive in the background — no more constant re-logins.
One consistent interface for courses, lectures, and custom groupings. Promote any Moodle section to root-level for instant access.
Share your course organization with an 8-character invite code. Community-ranked content bubbles up the best resources.
Add context-aware notes with markdown, file attachments (images, PDFs, audio), and share with friends or keep private.
Connect with classmates, see their public reflections, and build a study network.
| Layer | Technology |
|---|---|
| Framework | React Native + Expo SDK 54 |
| Navigation | Expo Router (file-based) |
| Backend | AWS Amplify (Cognito, AppSync, S3) |
| State | React Context + custom hooks |
| Platforms | iOS (primary), Android, Web |
# Install dependencies
npm install
# Start development server
npx expo start
# Run on iOS
npx expo start --ios- Background relogin — WebView-based silent reauthentication when sessions expire
- HTML parsing over AJAX — Solves iOS cookie isolation issues with Moodle
- Simple ranking — Single
averageRank(0-1) updated by any user reorder - Offline-first — All Moodle data cached with intelligent invalidation
Create a .env file with:
EXPO_PUBLIC_REVENUECAT_IOS=your_key
EXPO_PUBLIC_REVENUECAT_ANDROID=your_key
app/ # Expo Router screens
├── (auth)/ # Authentication flows
├── (tabs)/ # Main tab navigation (Courses, Lectures, Reflect, Friends, Profile)
└── vle/ # VLE login WebView
components/ # Reusable UI components
contexts/ # Auth, VLE, Layout, Network providers
services/ # Moodle API, caching, ranking, reflections
MIT