A secure, multi-user web-based Python IDE designed for educational institutions Built with Vue3 + Python3.10 + Tornado6.1 + SQLite Supporting 60+ concurrent students with isolated workspaces
PythonIDE-Clean is a comprehensive web-based Python development environment specifically designed for educational use in colleges and universities. It provides a secure, isolated coding environment where students can write, execute, and submit Python assignments while professors can manage course materials and grade submissions.
- Multi-file code editor with syntax highlighting and auto-completion
- Real-time Python code execution with output streaming
- File management system - Create, read, update, delete files and folders
- Multiple file type support:
- Python files (.py) with syntax highlighting
- Markdown files (.md) with live preview
- CSV files with built-in viewer
- Media files (images, PDFs) with preview support
- Advanced editor features:
- Find and replace functionality
- Code tabs for multiple file editing
- Keyboard shortcuts
- Customizable settings
- Word wrap toggle
- User authentication system with secure session management
- Role-based access control (Students and Professors)
- Isolated user workspaces - Each student has their own directory
- File permission system preventing unauthorized access
- Resource-limited code execution (CPU, memory, timeout limits)
- SQLite database for user management and file metadata
- Assignment submission system with unique submission IDs
- Professor dashboard for viewing all student work
- Grading interface for professors
- Lecture notes distribution (read-only for students)
- Organized directory structure:
/projects/ide/ βββ Local/ # Student personal workspaces β βββ sa9082/ # Individual student directory β βββ jd1234/ # Another student's directory βββ Lecture Notes/ # Professor uploads, student read-only βββ Assignments/ # Assignment materials and submissions βββ Tests/ # Test materials and submissions
- Split-pane interface with resizable panels
- Project tree navigation with VSCode-style icons
- Interactive console with REPL support
- Unified console for output management
- Top menu with common actions
- Dialogs for file operations, uploads, and settings
- Frontend: Vue 3, Vuex, CodeMirror, Element Plus UI
- Backend: Python 3.10, Tornado WebSocket Server
- Database: SQLite for user management and metadata
- Authentication: bcrypt password hashing, session-based auth
- File Storage: Local filesystem with permission validation
- Capacity: Supports 60+ concurrent users
- Performance: <500ms response time for file operations
- Security: Directory-based isolation, resource limits
- Reliability: Transaction-based file operations, automatic cleanup
- Node.js 16.13.2+
- npm 8.1.2+
- Python 3.10+
- SQLite 3
# Clone the repository git clone <repository-url> cd PythonIDE-Clean # Install frontend dependencies npm install # Install backend dependencies cd server pip install -r requirements.txt cd ..
# Initialize database schema cd server sqlite3 ide.db < migrations/001_initial_schema.sql # Create initial users python migrations/create_users.py # Set up directory structure python migrations/setup_directories.py cd ..
# Terminal 1: Start backend server cd server python server.py --port 10086 # Terminal 2: Start frontend development server npm run serve # Access the application # Frontend: http://localhost:8080 # Backend: http://localhost:10086
# Build frontend for production npm run build # The built files will be in the dist/ directory # Backend will automatically serve these files # Run production server cd server python server.py --port 10086 # Access at: http://localhost:10086
- Professor: username:
professor, password:ChangeMeASAP2024! - Students: username:
{student_id}, password:{student_id}2024
| Role | Permissions |
|---|---|
| Student | β’ Full access to personal workspace (Local/{username}/)β’ Read-only access to Lecture Notes β’ Submit assignments in designated folders β’ Execute Python code with resource limits |
| Professor | β’ Full access to all directories β’ Upload lecture materials β’ View all student submissions β’ Grade assignments with feedback |
PythonIDE-Clean/
βββ src/ # Frontend source code
β βββ components/ # Vue components
β β βββ element/
β β βββ pages/ide/ # IDE components
β βββ store/ # Vuex state management
β βββ assets/ # Icons, styles, themes
βββ server/ # Backend source code
β βββ auth/ # Authentication system
β βββ command/ # Command processors
β βββ handlers/ # WebSocket handlers
β βββ migrations/ # Database migrations
β βββ projects/ide/ # User file storage
βββ dist/ # Production build output
βββ public/ # Static assets
- Authentication: Session-based with bcrypt password hashing
- Authorization: Role-based access control (RBAC)
- File Isolation: Directory-based permissions
- Path Validation: Prevents directory traversal attacks
- Resource Limits:
- Execution timeout: 30 seconds
- Memory limit: 128MB per execution
- File size limit: 10MB
- WebSocket Security: Authenticated connections only
| Metric | Target | Current |
|---|---|---|
| Concurrent Users | 60+ | β Supported |
| File Operation Response | <500ms | β Achieved |
| Code Execution Timeout | 30s max | β Enforced |
| Memory per Execution | 128MB | β Limited |
| WebSocket Connections | 100+ | β Stable |
# Run unit tests python -m pytest tests/ # Run load test (60 concurrent users) python tests/load_test.py --users 60 # Test authentication flow python tests/test_auth.py # Test file permissions python tests/test_permissions.py
Detailed migration plan available in MIGRATION_PLAN.md. Key phases:
- Phase 1: Database & Authentication setup
- Phase 2: File system migration
- Phase 3: Backend updates for multi-user
- Phase 4: Frontend authentication integration
- Phase 5: Testing & validation
- Phase 6: Production deployment
# Server configuration IDE_PORT=10086 IDE_HOST=0.0.0.0 IDE_ENV=production # Database DATABASE_PATH=/server/ide.db # Security SESSION_TIMEOUT=86400 MAX_FILE_SIZE=10485760 MAX_EXECUTION_TIME=30
# Check server status curl http://localhost:10086/health # View active sessions sqlite3 server/ide.db "SELECT * FROM sessions WHERE expires_at > datetime('now');" # Monitor WebSocket connections python server/monitor.py
# Backup database and files tar -czf backup_$(date +%Y%m%d).tar.gz server/projects/ide/ server/ide.db # Restore from backup tar -xzf backup_20240101.tar.gz
CLAUDE.md- Detailed project context and requirementsMIGRATION_PLAN.md- Step-by-step migration guideP5JS_EDITOR_COMPLETE_ANALYSIS.md- Reference architecture analysis
This project is designed for educational use at colleges. For bug reports or feature requests, please contact the development team.
This project is proprietary software for educational institutions. All rights reserved.
Project Lead: Sachin Adlakha
Target Deployment: College Internal Server
User Base: 60+ students, 2+ professors
Course: Introductory Python Programming