How ngoquangphuc29306/study-toeic works
EasyTOEIC is a personal TOEIC vocabulary and exam-practice application. Users authenticate, enter the protected app, manage vocabulary collections, and study through flashcards, quizzes, pronunciation, SRS, or synonym sessions; the app also exposes TOEIC test-taking, review, media, and learning tools. The README documents the vocabulary workflow and Supabase’s role; TOEIC modules are evident from the tree, but most of their internal wiring was not sampled, so those links are kept conservative.
Main entry points: page.tsx Protected App · server.ts Supabase · FlashcardMode.tsx Flashcard Modes · route.ts Dictionary Lookup API
Components 25
App and Auth
- Landing Page
app/page.tsx - Auth Pages
app/login/page.tsx - Auth Callback
app/auth/callback/route.ts - Protected App
app/app/page.tsx
Vocabulary Learning
- Dashboard
components/Dashboard.tsx - Vocabulary Manager
components/VocabManager.tsx - Flashcard Modes
components/FlashcardMode.tsx - Quiz Mode
components/QuizMode.tsx - Synonym Practice
features/synonym-practice/hooks/useSynonymPracticeSession.ts - Review Reminder
features/review-reminder/hooks/useReviewReminder.ts
TOEIC Practice
- Test Catalog
features/toeic-tests/components/ToeicTestCatalogPage.tsx - Attempt Workspace
features/toeic-tests/components/ToeicAttemptWorkspace.tsx - Attempt History
features/toeic-tests/components/ToeicAttemptHistoryPage.tsx - Learning Tools
features/toeic-tests/services/toeicLearningService.ts - Dictionary Lookup API
app/api/toeic-tools/lookup/route.ts - Dictionary Provider
features/toeic-tests/server/toeicDictionaryService.ts - Media Signing API
app/api/toeic-tests/[testId]/media/route.ts - Media Signing
features/toeic-tests/server/toeicMediaService.ts
Application Services
- Vocabulary Services
services/vocabularyService.ts - App Data Service
services/appDataService.ts
Persistence and Providers
- Study Session State
lib/session/storage.ts - Supabase
lib/supabase/server.ts - Browser Storage
- Rating RPC
Other components
- Learner
Connections 24
- Learner → Landing Page: opens
- Learner → Auth Pages: signs in
- Auth Pages → Auth Callback: completes auth
- Auth Callback → Supabase: exchanges code
- Learner → Protected App: enters
- Protected App → Dashboard: shows
- Protected App → Vocabulary Manager: shows
- Vocabulary Manager → Vocabulary Services: manages vocabulary
- Protected App → Flashcard Modes: starts study
- Protected App → Quiz Mode: starts quiz
- Protected App → Synonym Practice: starts practice
- Synonym Practice → Protected App: reports completion
- Protected App → Review Reminder: checks due reviews
- Review Reminder → Browser Storage: reads and writes snooze
- Flashcard Modes → Study Session State: persists session
- Flashcard Modes → Rating RPC: submits rating
- Rating RPC → Supabase: schedules atomically
- Protected App → Test Catalog: offers practice
- Test Catalog → Attempt Workspace: selects test
- Attempt Workspace → Attempt History: reviews attempts
- Dictionary Lookup API → Supabase: checks user
- Dictionary Lookup API → Dictionary Provider: looks up term
- Media Signing API → Supabase: checks user
- Media Signing API → Media Signing: signs paths