Turn words found in real reading into a personal vocabulary library, graded AI stories, and a spaced-review routine.
简体中文 · Development · Architecture · Production · App Store checklist
CiJing has four focused top-level areas. Home brings the daily plan, accumulated progress, persistent reading history, and real learning entry points together in one glance.
The top-level navigation stays simple, while each reading opens a focused sequence: choose target words, read with optional translations, practise retrieval, shadow sentence by sentence, and review progress.
- Captures words and source context from a Chrome Manifest V3 extension.
- Keeps a private, user-scoped word library with notes and learning states.
- Generates coherent bilingual readings from weak, due, and new words.
- Persists every generated reading to
reading_sessions, so history survives relaunches and sign-ins. - Schedules review with strength, ease factor, interval, lapse, and due-date signals.
- Provides system pronunciation, shadowing, and short reading-based exercises.
- Protects all user data with Supabase Row Level Security.
.
├── client/ # SwiftUI iOS app
├── extension/ # Chrome extension for contextual lookup and saving
├── supabase/ # PostgreSQL migrations, RLS, RPCs, and Edge Functions
├── server/ # Trusted Flask boundary and health checks
├── scripts/ # Configuration, audit, and smoke-test utilities
├── docs/ # Development, architecture, production, and store assets
└── website/ # Privacy policy and support pages for public hosting
The iOS app and extension talk to Supabase Auth and PostgREST. Authenticated Edge Functions call the configured OpenRouter model for dictionary explanations and graded readings. Server-only and AI provider keys are never embedded in client bundles.
Requirements: macOS, Xcode 16 or newer, Node.js 20+, Docker Desktop, and Chrome.
cp .env.example .env
# Fill the environment values in .env
make config
./scripts/supabase.sh start
./scripts/supabase.sh db reset
make functionsOpen client/CiJing.xcodeproj, select the CiJing scheme and an iOS 17+ simulator, then run. Load extension/ as an unpacked extension from chrome://extensions.
make config-check
make extension-test
make server-test
make ios-buildWith Supabase running, make smoke verifies the cross-client API flow. Production environments can use make production-audit and make production-smoke after deployment.
Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening a contribution. Report vulnerabilities privately by following SECURITY.md, not through a public issue.
This project is available under the MIT License.








