Skip to content

uouake/dva-trainer-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

118 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DVA Trainer - AWS Developer Associate Certification Platform

Build Status Test Coverage License Angular NestJS PostgreSQL

Master AWS Developer Associate certification with interactive practice questions, gamified manga onboarding, and spaced repetition flashcards.

๐ŸŒ Live Demo: dva-trainer-web.onrender.com


๐Ÿ“ธ Overview

DVA Trainer is a comprehensive learning platform designed to help developers prepare for the AWS Developer Associate (DVA-C02) certification exam. Built with modern web technologies and cloud-native architecture principles.

Key Features

  • ๐Ÿ“š 557 Practice Questions - Covering all exam domains with detailed explanations
  • ๐ŸŽฎ Gamified Learning - Manga-style story onboarding (13 chapters across 2 seasons)
  • ๐Ÿƒ Spaced Repetition Flashcards - 30 flashcards with metaphors tied to the story
  • ๐Ÿ“ Exam Simulator - 65-question timed assessments (130 minutes)
  • ๐Ÿ“… Daily Training Routines - 5/10/15 question daily sessions
  • ๐Ÿ” Secure Authentication - GitHub OAuth 2.0 + JWT implementation
  • ๐Ÿ“ฑ Responsive Design - Works on desktop, tablet, and mobile
  • โ™ฟ Accessible - WCAG 2.1 AA compliant

Screenshots

Dashboard
User Dashboard with progress tracking
Questions
AWS's glossary
Flashcards
Manga-style onboarding story
Onboarding
Spaced repetition flashcards

๐Ÿ—๏ธ Architecture

Backend (NestJS + TypeScript)

src/
โ”œโ”€โ”€ auth/                 # OAuth2/JWT authentication
โ”œโ”€โ”€ questions/            # Question management & filtering
โ”œโ”€โ”€ flashcards/           # Spaced repetition system
โ”œโ”€โ”€ onboarding/           # Manga story content
โ”œโ”€โ”€ users/                # User management & progress
โ”œโ”€โ”€ exam-simulator/       # Timed exam sessions
โ”œโ”€โ”€ database/             # TypeORM entities & migrations
โ””โ”€โ”€ config/               # Environment configuration

Key Backend Features:

  • Authentication: OAuth2 with GitHub, JWT token management
  • Database: PostgreSQL with TypeORM
  • Testing: Jest with 86% code coverage
  • API: RESTful with OpenAPI/Swagger documentation
  • Security: Helmet, CORS, input validation

Frontend (Angular 17+ Standalone)

src/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ auth/             # Login & authentication flows
โ”‚   โ”œโ”€โ”€ dashboard/        # User progress & KPIs
โ”‚   โ”œโ”€โ”€ questions/        # Practice question interface
โ”‚   โ”œโ”€โ”€ flashcards/       # Flashcard learning system
โ”‚   โ”œโ”€โ”€ onboarding/       # Manga story experience
โ”‚   โ”œโ”€โ”€ exam-simulator/   # Full exam simulation
โ”‚   โ””โ”€โ”€ shared/           # Components, services, models
โ”œโ”€โ”€ assets/               # Images, manga illustrations
โ””โ”€โ”€ styles/               # SCSS variables & themes

Key Frontend Features:

  • Standalone Components - Modern Angular architecture
  • State Management - RxJS for reactive state
  • Theming - Dark/Light/Auto mode support
  • Performance - Lazy loading, code splitting
  • Testing - Karma & Jasmine unit tests

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL 14+
  • GitHub OAuth App credentials

Installation

# Clone the repository
git clone https://github.com/uouake/dva-trainer-web.git
cd dva-trainer-web

# Backend setup
cd backend
cp .env.example .env
# Edit .env with your database credentials and GitHub OAuth keys
npm install
npm run migration:run
npm run start:dev

# Frontend setup (new terminal)
cd ../frontend
npm install
ng serve

Environment Variables

Backend (.env):

DATABASE_URL=postgresql://user:password@localhost:5432/dva_trainer
JWT_SECRET=your-secret-key
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
PORT=3000

๐Ÿงช Testing

Backend Tests

cd backend
npm run test              # Unit tests
npm run test:coverage     # Coverage report
npm run test:e2e          # End-to-end tests

Frontend Tests

cd frontend
ng test                   # Unit tests with Karma
ng test --coverage        # Coverage report

๐Ÿ“Š Project Stats

  • Lines of Code: ~25,000
  • Test Coverage: 86% (backend)
  • API Endpoints: 40+
  • Database Tables: 15
  • Deployment: Render (Web Service + PostgreSQL)

๐Ÿ›ฃ๏ธ Roadmap

  • Core question database (557 questions)
  • OAuth2/JWT authentication
  • Exam simulator
  • Flashcards system
  • Manga onboarding (Seasons 1 & 2)
  • Production deployment
  • Seasons 3+ of onboarding story
  • Competition mode between users
  • Achievement badges system
  • Progress export functionality
  • Email reminder notifications

๐ŸŽ“ Lessons Learned

Technical

  • OAuth2 Implementation: Deep understanding of authorization code flow with GitHub
  • Database Design: Optimized schema for spaced repetition algorithms
  • CI/CD: Automated testing and deployment pipelines on Render
  • Performance: Lazy loading strategies for large question datasets

Architecture

  • Microservices readiness: Designed with future service extraction in mind
  • Multi-tenancy considerations: User isolation and data security patterns
  • Scalability: Stateless backend design for horizontal scaling

๐Ÿ›ก๏ธ Security

  • JWT tokens with secure httpOnly cookies
  • Input validation and sanitization
  • SQL injection protection via TypeORM
  • XSS protection with Angular's built-in sanitization
  • Rate limiting on authentication endpoints

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • AWS certification materials and practice questions
  • NestJS and Angular communities
  • Render for free hosting tier
  • All contributors and beta testers

Built with โค๏ธ by Uriel Ouake