A modern educational platform built with Angular and Flask, featuring interactive coding labs, widget-based learning modules, and gamification elements. Prismo provides an engaging environment for learning programming concepts with real-time code execution and feedback.
- Interactive Coding Labs - Hands-on coding exercises with real-time feedback
- Widget System - Modular, reusable educational components
- Module Generator - AI-powered learning module creation
- Code Execution Engine - Support for Python, JavaScript, Java, and more
- Gamification - Achievement system to track learning progress
- Analytics Dashboard - Track learning metrics and progress
- OAuth Integration - Secure authentication with AWS Cognito
- Server-Side Rendering - Optimized performance with Angular SSR
- Modern UI - Built with Tailwind CSS and Angular CDK
- Node.js (v18 or higher)
- Python (3.14 or higher)
- Angular CLI (20.3.5)
- AWS Account (for Cognito and DynamoDB)
- uv (Python package manager)
-
Install dependencies:
npm install
-
Configure environment: Create environment files in
src/environments/:environment.ts(development)environment.prod.ts(production)
-
Start development server:
npm start # or ng serve -
Access the application: Navigate to
http://localhost:4200/
-
Navigate to backend directory:
cd backend -
Install Python dependencies:
uv sync
-
Configure AWS services:
- Set up AWS Cognito User Pool
- Configure DynamoDB tables
- Set environment variables
See
backend/OAUTH_SETUP.mdfor detailed AWS configuration. -
Initialize database tables:
python setup_tables.py
-
Start the backend server:
python main.py
The API will be available at
http://localhost:5000
prismo/
โโโ src/ # Angular frontend
โ โโโ app/ # Application modules
โ โ โโโ auth/ # Authentication components
โ โ โโโ dashboard/ # Dashboard views
โ โ โโโ labs/ # Coding labs
โ โ โโโ widget-lab/ # Widget laboratory
โ โ โโโ components/ # Reusable components
โ โโโ components/ # UI components
โ โ โโโ ui/ # Base UI components
โ โ โโโ labs/ # Lab-specific components
โ โ โโโ widgets/ # Widget components
โ โ โโโ modules/ # Module components
โ โโโ services/ # Angular services
โ โโโ guards/ # Route guards
โ โโโ interceptors/ # HTTP interceptors
โ โโโ types/ # TypeScript type definitions
โโโ backend/ # Flask backend
โ โโโ app/ # Application core
โ โ โโโ routes.py # API routes
โ โ โโโ auth_routes.py # Authentication endpoints
โ โ โโโ learning_routes.py # Learning module endpoints
โ โ โโโ module_generator_routes.py # AI module generation
โ โ โโโ gamification_routes.py # Achievement system
โ โ โโโ analytics_routes.py # Analytics endpoints
โ โ โโโ models.py # Data models
โ โ โโโ orm.py # DynamoDB ORM
โ โ โโโ ace_engine.py # Code execution engine
โ โโโ config.py # Configuration
โ โโโ main.py # Application entry point
โโโ public/ # Static assets
โโโ angular.json # Angular configuration
npm start- Start development servernpm run build- Build for productionnpm run watch- Build in watch modenpm test- Run unit testsnpm run serve:ssr:prismo- Serve SSR build
python main.py- Start Flask serverpython setup_tables.py- Initialize DynamoDB tablespython test_code_execution.py- Test code execution enginepython test_java_execution.py- Test Java supportpython test_module_generator.py- Test module generation
export const environment = {
production: false,
apiUrl: 'http://localhost:5000',
cognitoUserPoolId: 'your-user-pool-id',
cognitoClientId: 'your-client-id',
awsRegion: 'us-east-1'
};Create a .env file in the backend/ directory:
AWS_REGION=us-east-1
COGNITO_USER_POOL_ID=your-user-pool-id
COGNITO_CLIENT_ID=your-client-id
DYNAMODB_TABLE_PREFIX=prismo
FLASK_ENV=developmentng testcd backend
python -m pytestng build --configuration productionBuild artifacts will be stored in the dist/ directory.
The Flask application can be deployed using various methods:
- AWS Elastic Beanstalk
- Docker containers
- Traditional WSGI servers (Gunicorn, uWSGI)
- Angular 20 - Modern web framework
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- CodeMirror - Code editor component
- KaTeX - Math rendering
- Marked - Markdown parsing
- GSAP - Animation library
- Flask - Python web framework
- AWS Cognito - Authentication service
- DynamoDB - NoSQL database
- boto3 - AWS SDK for Python
- JWT - Token-based authentication
- Anthropic Claude API - AI-powered features
Interactive coding exercises with multiple programming language support. Each lab includes:
- Problem description with rendered markdown
- Code editor with syntax highlighting
- Test cases for validation
- Real-time feedback
Reusable learning components that can be embedded in various contexts:
- Interactive demonstrations
- Visual explanations
- Practice exercises
- Mini-projects
AI-powered tool to create custom learning modules:
- Natural language input
- Automatic content generation
- Structured curriculum creation
- Customizable difficulty levels
Track learning progress with detailed metrics:
- Time spent on labs
- Completion rates
- Skill progression
- Achievement tracking
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private and proprietary.
For questions or issues, please open an issue in the repository.
Built with โค๏ธ for education