How nastaso/cloudcertprep works
CloudCertPrep is an Astro static site with hydrated React islands for AWS certification preparation. Learners choose a certification, practice by domain or take a timed mock exam, review results, and—if signed in—save progress and view history; the README also describes community statistics and adaptive spaced repetition. Bundled question data supports guest practice without Supabase. The graph combines sampled call/reference evidence with explicitly documented README flows; unsampled page implementations are represented only at their listed paths.
Main entry points: _DomainPractice.tsx Domain practice · useAuth.ts Authentication state · _MockExam.tsx Timed mock exam · questions.ts Question loader
Components 20
Practice and exams
- Domain practice
src/pages/_DomainPractice.tsx - Timed mock exam
src/pages/_MockExam.tsx - Question review
src/components/QuestionReviewCard.tsx - Answer inputs
src/components/MatchingInput.tsx - Exam scoring
src/lib/scoring.ts
Identity and persistence
- Authentication state
src/hooks/useAuth.ts - Supabase client
src/lib/supabase.ts - Pending attempts
src/lib/pendingAttempt.ts - Supabase Auth and database
Question content
- Certification registry
src/data/certifications.ts - Question loader
src/data/questions.ts - Domain question banks
src/data
Progress and insights
- Exam history
src/pages/_History.tsx - Certification dashboard
src/components/CertDashboardIsland.tsx - Community statistics
src/pages/_Stats.tsx
Shared application services
- Analytics events
src/lib/analytics.ts - Client error logging
src/lib/logger.ts - SEO metadata
src/hooks/useSEO.ts - Shared button styles
src/lib/buttonStyles.ts
Other components
- Learner
Connections 24
- Learner → Domain practice: practices by domain
- Learner → Timed mock exam: takes timed exam
- Domain practice → Question loader: loads questions
src/data/questions.ts - Timed mock exam → Question loader: loads question bank
src/data/questions.ts - Question loader → Domain question banks: loads domain JSON
src/data/questions.ts - Certification registry → Question loader: defines certification domains
src/data/certifications.ts - Timed mock exam → Exam scoring: scores attempts
src/pages/_MockExam.tsx - Domain practice → Question review: reviews answers
src/pages/_DomainPractice.tsx - Question review → Answer inputs: renders answer controls
src/components/QuestionReviewCard.tsx - Learner → Authentication state: signs in optionally
- Authentication state → Supabase client: gets client
src/hooks/useAuth.ts - Authentication state → Pending attempts: flushes pending attempt
src/hooks/useAuth.ts - Pending attempts → Supabase client: persists attempts
src/lib/pendingAttempt.ts - Supabase client → Supabase Auth and database: authenticates and queries
- Exam history → Supabase Auth and database: reads saved history
- Certification dashboard → Supabase Auth and database: reads progress
- Community statistics → Supabase Auth and database: reads aggregate statistics
- Certification dashboard → Authentication state: checks signed-in user
src/components/CertDashboardIsland.tsx - Authentication state → Analytics events: tracks sign-in
src/hooks/useAuth.ts - Client error logging → Analytics events: reports client errors
src/lib/logger.ts - Exam history → Question review: renders question review
src/pages/_History.tsx - Domain practice → SEO metadata: updates page metadata
src/pages/_DomainPractice.tsx - Timed mock exam → SEO metadata: updates page metadata
src/pages/_MockExam.tsx - Domain practice → Shared button styles: uses shared styles
src/pages/_DomainPractice.tsx