A native iOS app for technical-interview prep with a swipe-to-study flashcard interface, an adaptive difficulty engine, and a serverless AWS backend.
Try it in your browser: ishraqb.github.io/AlgoRhythm
- iOS app (
ios/): Swift / SwiftUI. Swipe right to mark a card mastered, left to flag it for review; tap to flip for the solution, code, and time/space complexity. Haptics and an optional rapid-fire tick keep sessions focused. - Web app (
web/): React + TypeScript (Vite) port of the same swipe deck and adaptive engine, running fully client-side with progress saved in the browser. Deployed to GitHub Pages via the workflow in.github/workflows/. - Backend (
backend/): AWS CDK (TypeScript) defining Cognito (email/password auth), AppSync (GraphQL), DynamoDB, and Lambda resolvers. - Scripts (
scripts/): pull free, attribution-licensed content (MBPP, system-design-primer) and seed it into DynamoDB.
For step-by-step run and deploy instructions, see DEPLOYMENT.md.
SwiftUI app ──(Cognito email/password)──▶ Cognito User Pool
│
└──(GraphQL + Cognito token)──▶ AppSync ──▶ Lambda resolvers ──▶ DynamoDB
(PK User_ID / SK Topic_ID)
The app is offline-first: the bundled questions.json always works with no
network. Only user performance syncs to the cloud, and the server derives the
owner from the verified token, so users can only read/write their own data.
- Xcode 16+ (full app, not just Command Line Tools)
- Node.js 18+ and npm
- An AWS account with credentials configured (
aws configure)
If Xcode was just installed, finish its component setup once:
sudo xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOSopen ios/AlgoRhythm.xcodeprojPick an iPhone simulator and press Run. With no backend configured yet, the sign-in screen offers "Continue without an account" so you can try the deck locally. Progress stays on-device in that mode.
cd backend
npm install
npx cdk bootstrap # one-time per account/region
npx cdk deploy --outputs-file cdk-outputs.jsonThen generate the app config and seed content:
cd ../scripts
npm install
npm run ingest # downloads MBPP + system-design-primer cards
TABLE_NAME=AlgoRhythm npm run seed
npm run write-config # writes ios/AlgoRhythm/Resources/AppConfig.plistRebuild the app in Xcode and it will use real Cognito auth and cloud sync.
To tear everything down:
cd backend && npx cdk destroy- Original baseline cards are authored for AlgoRhythm.
- MBPP — CC-BY-4.0. system-design-primer (Donne Martin) — CC BY 4.0.
- Attribution is shown in-app on the Credits screen. No LeetCode scraping or copyrighted third-party problem text is used.
Designed to run at $0: free personal Apple ID sideloading and AWS free-tier services (Cognito, Lambda, AppSync, DynamoDB on-demand). No paid APIs.