A fun vocabulary training app for kids, built with Flutter and AWS backend infrastructure.
Train with Joe helps kids learn vocabulary through fun interactive exercises and games. The app provides:
- Backend: AWS CDK infrastructure with Cognito, DynamoDB, AppSync GraphQL API, Lambda, Bedrock AI, and CloudFront
- Frontend: Flutter cross-platform app (web, iOS, Android) with Amplify integration
- Landing Pages: Angular 20+ standalone pages for marketing and user profiles
.
├── backend/ # AWS CDK infrastructure and Lambda functions
│ ├── lib/ # CDK stack definitions
│ ├── src/ # Application code (resolvers, services, repositories)
│ └── test/ # Backend tests
├── frontend/ # Flutter web/mobile application
├── join_page/ # Angular landing page for registration
├── competitors_page/ # Angular competitors comparison page
├── profile_cards/ # Angular shareable profile cards
├── scripts/ # Deployment and utility scripts
└── documentation/ # Architecture docs and guides
- TypeScript/Node.js 18+
- AWS CDK for infrastructure as code
- AWS AppSync (GraphQL API)
- AWS Lambda (serverless compute)
- Amazon DynamoDB (database)
- AWS Cognito (authentication)
- Amazon Bedrock (AI content enhancement)
- Stripe (payments)
- Flutter 3.8+ / Dart 3.0+
- Amplify Flutter for AWS integration
- Provider/flutter_bloc for state management
- go_router for navigation
- Vitest with coverage (backend)
- Flutter test framework (frontend)
- ESLint v9+ with flat config
- Prettier for formatting
- Husky for git hooks
- Node.js 18+
- AWS CLI configured
- Flutter 3.8+ (for frontend development)
- AWS CDK CLI:
npm install -g aws-cdk
# Install dependencies
npm install
# Bootstrap CDK (first time only)
cdk bootstrap
# Build AppSync functions
npm run build:appsyncFunctions
# Run tests
npm test
# Deploy to AWS
npm run deploynpm run build:appsyncFunctions # Build AppSync resolver functions
npm test # Run tests with coverage
npm run test:fast # Quick tests without coverage
npm run lint # Check code style
npm run lint:fix # Fix linting issues
npm run synth # Synthesize CDK stacks
npm run deploy # Deploy to AWS
npm run destroy # Remove all AWS resources
npm run bt # Lint fix + quick testcd frontend/src
flutter pub get # Install dependencies
flutter run -d chrome # Run in browser
flutter test # Run tests
flutter build web --release # Production build- User authentication (email/password via Cognito)
- GraphQL API for data operations
- User profile management
- Vocabulary games and daily word challenges
- Progress tracking and achievements
- Subscription management (Stripe, App Store, Play Store)
- AI content enhancement (Amazon Bedrock)
- Multi-platform support (web, iOS, Android)
- Serverless architecture
- Auto-scaling DynamoDB tables
- CloudFront CDN for global distribution
- Infrastructure as code with AWS CDK
- Multi-environment support (sandbox, beta, production)
Environment-specific configuration is managed through:
cdk.json- CDK context and settings- AWS SSM Parameter Store - Secrets and API keys
- Environment variables - Runtime configuration
The app includes comprehensive testing infrastructure:
- Unit tests for backend services and repositories
- Property-based tests using fast-check
- Integration tests for API endpoints
- Widget tests for Flutter UI components
- CDK stack synthesis tests
Run tests:
npm test # All tests with coverage
npm run test:unit # Unit tests only
npm run test:fast # Quick validationDeploy to AWS:
# Deploy all stacks
npm run deploy
# Deploy specific environment
cdk deploy --all --context environment=sandbox
# Destroy all resources
npm run destroy- Architecture documentation in
/documentation - API documentation generated from GraphQL schema
- Inline code comments for complex logic
See CONTRIBUTING.md for development setup, coding standards, and pull request guidelines.
Code ownership is defined in CODEOWNERS.
The project uses GitHub Actions for continuous integration and deployment:
- Push to
main→ tests + deploy to sandbox - Manual promotion to beta (staging validation)
- Manual promotion to production (requires approval)
See .github/README.md for full workflow documentation.
MIT
For issues and questions, check the /documentation directory or open an issue in the repository.