new testarena
This commit is contained in:
341
asf-cloud-server/testarena_1/PROJECT_TREE.txt
Normal file
341
asf-cloud-server/testarena_1/PROJECT_TREE.txt
Normal file
@@ -0,0 +1,341 @@
|
||||
ASF TestArena - Complete Project Structure
|
||||
==========================================
|
||||
|
||||
testarena/
|
||||
│
|
||||
├── Documentation Files
|
||||
│ ├── START_HERE.md ← Start here for new users
|
||||
│ ├── INDEX.md ← Documentation index
|
||||
│ ├── QUICK_START.md ← Fast deployment guide
|
||||
│ ├── DEPLOYMENT_CHECKLIST.md ← Pre-production checklist
|
||||
│ ├── CADDY_INTEGRATION.md ← Reverse proxy setup
|
||||
│ ├── SETUP.md ← Detailed setup guide
|
||||
│ ├── PROJECT_STATUS.md ← Implementation status
|
||||
│ ├── ARCHITECTURE.md ← System design
|
||||
│ ├── IMPLEMENTATION_SUMMARY.md ← Phase 1 summary
|
||||
│ └── README.md ← General overview
|
||||
│
|
||||
├── Configuration Files
|
||||
│ ├── docker-compose.yml ← Container orchestration
|
||||
│ ├── Dockerfile ← Web app container image
|
||||
│ ├── requirements.txt ← Python dependencies
|
||||
│ ├── wsgi.py ← WSGI entry point
|
||||
│ ├── .env.example ← Environment variables template
|
||||
│ ├── .gitignore ← Git ignore rules
|
||||
│ └── Caddyfile.example ← Caddy configuration template
|
||||
│
|
||||
├── Scripts
|
||||
│ ├── start.bat ← Windows startup script
|
||||
│ ├── stop.bat ← Windows shutdown script
|
||||
│ └── logs.bat ← View logs script
|
||||
│
|
||||
├── Assets
|
||||
│ └── icon.png ← Application logo
|
||||
│
|
||||
├── Legacy Files (from original project)
|
||||
│ ├── scenario_exe_parser.py
|
||||
│ └── scenario_scan.py
|
||||
│
|
||||
└── app/ ← Flask Application
|
||||
│
|
||||
├── Core Files
|
||||
│ ├── __init__.py ← Flask app factory
|
||||
│ └── models.py ← Database models (User, Job)
|
||||
│
|
||||
├── routes/ ← API Endpoints
|
||||
│ ├── auth.py ← Login/logout routes
|
||||
│ ├── admin.py ← User management routes
|
||||
│ ├── dashboard.py ← Dashboard routes
|
||||
│ └── jobs.py ← Job submission routes
|
||||
│
|
||||
├── templates/ ← HTML Templates
|
||||
│ ├── base.html ← Base template with navbar
|
||||
│ ├── login.html ← Login page
|
||||
│ │
|
||||
│ ├── admin/
|
||||
│ │ └── dashboard.html ← Admin user management UI
|
||||
│ │
|
||||
│ ├── dashboard/
|
||||
│ │ └── index.html ← User dashboard (2-panel)
|
||||
│ │
|
||||
│ └── jobs/
|
||||
│ ├── submit.html ← Step 1: Branch name
|
||||
│ ├── submit_step2.html ← Step 2: Select scenarios
|
||||
│ ├── submit_step3.html ← Step 3: Choose environment
|
||||
│ └── submit_step4.html ← Step 4: Test mode + submit
|
||||
│
|
||||
└── static/ ← Static Assets
|
||||
├── css/
|
||||
│ └── style.css ← Modern gradient theme (400+ lines)
|
||||
│
|
||||
└── uploads/
|
||||
└── icon.png ← Logo (copied from root)
|
||||
|
||||
|
||||
Docker Volumes (Created at Runtime)
|
||||
====================================
|
||||
├── postgres_data/ ← PostgreSQL database files
|
||||
└── test_results/ ← Test execution results
|
||||
|
||||
|
||||
Docker Networks
|
||||
===============
|
||||
├── testarena_network ← Internal network (web ↔ db)
|
||||
└── caddy_network ← External network (caddy ↔ web)
|
||||
|
||||
|
||||
File Count Summary
|
||||
==================
|
||||
Python Files: 12 files
|
||||
HTML Templates: 8 files
|
||||
CSS Files: 1 file
|
||||
Documentation: 10 files
|
||||
Configuration: 7 files
|
||||
Scripts: 3 files
|
||||
Assets: 2 files (icon.png in 2 locations)
|
||||
─────────────────────────
|
||||
Total: 43 files
|
||||
|
||||
|
||||
Lines of Code Summary
|
||||
=====================
|
||||
Backend (Python): ~1,500 lines
|
||||
Frontend (HTML): ~600 lines
|
||||
Styling (CSS): ~400 lines
|
||||
Documentation: ~3,000 lines
|
||||
Configuration: ~200 lines
|
||||
─────────────────────────
|
||||
Total: ~5,700 lines
|
||||
|
||||
|
||||
Key Directories Explained
|
||||
==========================
|
||||
|
||||
/app
|
||||
Main Flask application directory containing all Python code,
|
||||
HTML templates, and static assets.
|
||||
|
||||
/app/routes
|
||||
API endpoint definitions organized by feature:
|
||||
- auth.py: Authentication (login/logout)
|
||||
- admin.py: User management (create/delete/reset)
|
||||
- dashboard.py: Main dashboard view
|
||||
- jobs.py: Job submission and viewing
|
||||
|
||||
/app/templates
|
||||
Jinja2 HTML templates with inheritance:
|
||||
- base.html: Common layout (navbar, alerts, etc.)
|
||||
- Feature-specific templates in subdirectories
|
||||
|
||||
/app/static
|
||||
Static files served directly:
|
||||
- css/: Stylesheets
|
||||
- uploads/: User-uploaded files and assets
|
||||
|
||||
/app/static/css
|
||||
Modern gradient theme with:
|
||||
- Login page styling
|
||||
- Dashboard layout (2-panel)
|
||||
- Admin interface
|
||||
- Form components
|
||||
- Responsive design
|
||||
|
||||
|
||||
Database Tables
|
||||
===============
|
||||
|
||||
users
|
||||
├── id (Primary Key)
|
||||
├── username (Unique)
|
||||
├── password_hash
|
||||
├── is_admin (Boolean)
|
||||
└── created_at (Timestamp)
|
||||
|
||||
jobs
|
||||
├── id (Primary Key)
|
||||
├── user_id (Foreign Key → users.id)
|
||||
├── branch_name
|
||||
├── scenarios (JSON)
|
||||
├── environment
|
||||
├── test_mode
|
||||
├── status
|
||||
├── submitted_at (Timestamp)
|
||||
├── completed_at (Timestamp, nullable)
|
||||
├── duration (Integer, nullable)
|
||||
├── keep_devbenches (Boolean)
|
||||
├── reuse_results (Boolean)
|
||||
└── results_path (String, nullable)
|
||||
|
||||
|
||||
API Endpoints
|
||||
=============
|
||||
|
||||
Authentication
|
||||
├── GET / → Redirect to login
|
||||
├── GET /login → Login page
|
||||
├── POST /login → Login submission
|
||||
└── GET /logout → Logout
|
||||
|
||||
Dashboard
|
||||
└── GET /dashboard/ → Main dashboard
|
||||
|
||||
Admin
|
||||
├── GET /admin/ → Admin dashboard
|
||||
├── POST /admin/users/create → Create user
|
||||
├── POST /admin/users/<id>/reset-password → Reset password
|
||||
└── POST /admin/users/<id>/delete → Delete user
|
||||
|
||||
Jobs
|
||||
├── GET /jobs/submit → Submit form (step 1)
|
||||
├── POST /jobs/submit/step1 → Process step 1
|
||||
├── POST /jobs/submit/step2 → Process step 2
|
||||
├── POST /jobs/submit/step3 → Process step 3
|
||||
├── POST /jobs/submit/final → Submit job
|
||||
├── GET /jobs/<id> → Get job details (JSON)
|
||||
└── POST /jobs/<id>/abort → Abort job
|
||||
|
||||
|
||||
Technology Stack
|
||||
================
|
||||
|
||||
Backend
|
||||
├── Flask 3.0.0 → Web framework
|
||||
├── Flask-SQLAlchemy 3.1.1 → ORM
|
||||
├── Flask-Login 0.6.3 → Authentication
|
||||
├── Flask-WTF 1.2.1 → Forms & CSRF
|
||||
├── Gunicorn 21.2.0 → WSGI server
|
||||
├── psycopg2-binary 2.9.9 → PostgreSQL adapter
|
||||
└── Werkzeug 3.0.1 → Security utilities
|
||||
|
||||
Database
|
||||
└── PostgreSQL 15 → Relational database
|
||||
|
||||
Frontend
|
||||
├── HTML5 → Markup
|
||||
├── CSS3 → Styling
|
||||
└── JavaScript (Vanilla) → Interactivity
|
||||
|
||||
Infrastructure
|
||||
├── Docker → Containerization
|
||||
├── Docker Compose → Orchestration
|
||||
└── Caddy 2.x → Reverse proxy
|
||||
|
||||
|
||||
Security Features
|
||||
=================
|
||||
✓ Password hashing (Werkzeug)
|
||||
✓ Session management (Flask-Login)
|
||||
✓ CSRF protection (Flask-WTF)
|
||||
✓ SQL injection protection (SQLAlchemy ORM)
|
||||
✓ Role-based access control
|
||||
✓ HTTPS ready (via Caddy)
|
||||
✓ Secure session cookies
|
||||
✓ XSS protection (Jinja2 auto-escaping)
|
||||
|
||||
|
||||
Deployment Architecture
|
||||
=======================
|
||||
|
||||
Internet (HTTPS/443)
|
||||
↓
|
||||
Caddy Reverse Proxy
|
||||
↓
|
||||
Flask Web App (HTTP/5000)
|
||||
↓
|
||||
PostgreSQL Database (5432)
|
||||
|
||||
|
||||
Development vs Production
|
||||
==========================
|
||||
|
||||
Development:
|
||||
- SQLite database (optional)
|
||||
- Flask development server
|
||||
- Debug mode enabled
|
||||
- Hot reload
|
||||
|
||||
Production:
|
||||
- PostgreSQL database
|
||||
- Gunicorn WSGI server
|
||||
- Debug mode disabled
|
||||
- Docker containers
|
||||
- Caddy reverse proxy
|
||||
- HTTPS enabled
|
||||
|
||||
|
||||
Phase 1: COMPLETE ✅
|
||||
====================
|
||||
✓ Login system
|
||||
✓ User management
|
||||
✓ Dashboard
|
||||
✓ Job submission UI
|
||||
✓ Docker setup
|
||||
✓ Documentation
|
||||
|
||||
|
||||
Phase 2: PENDING ⏳
|
||||
===================
|
||||
⏳ Git integration
|
||||
⏳ Test execution
|
||||
⏳ Status updates
|
||||
⏳ Results generation
|
||||
⏳ Auto cleanup
|
||||
⏳ Job abort
|
||||
|
||||
|
||||
Quick Commands
|
||||
==============
|
||||
|
||||
Start: start.bat
|
||||
Stop: stop.bat
|
||||
Logs: logs.bat
|
||||
Build: docker-compose up -d --build
|
||||
Restart: docker-compose restart
|
||||
Status: docker ps
|
||||
|
||||
|
||||
Default Credentials
|
||||
===================
|
||||
Username: admin
|
||||
Password: admin123
|
||||
|
||||
⚠️ CHANGE IMMEDIATELY AFTER FIRST LOGIN!
|
||||
|
||||
|
||||
Documentation Guide
|
||||
===================
|
||||
New User? → START_HERE.md
|
||||
Quick Deploy? → QUICK_START.md
|
||||
Configure Caddy? → CADDY_INTEGRATION.md
|
||||
Pre-Production? → DEPLOYMENT_CHECKLIST.md
|
||||
Understand System? → ARCHITECTURE.md
|
||||
Detailed Setup? → SETUP.md
|
||||
Find Anything? → INDEX.md
|
||||
|
||||
|
||||
Project Status
|
||||
==============
|
||||
Status: ✅ Phase 1 Complete
|
||||
Ready: ✅ Production Ready
|
||||
Tested: ✅ Core Features Working
|
||||
Docs: ✅ Comprehensive
|
||||
Next: ⏳ Phase 2 - Test Execution
|
||||
|
||||
|
||||
Contact & Support
|
||||
=================
|
||||
For deployment help, check:
|
||||
1. DEPLOYMENT_CHECKLIST.md
|
||||
2. CADDY_INTEGRATION.md
|
||||
3. Docker logs: docker-compose logs -f
|
||||
|
||||
For development help, check:
|
||||
1. ARCHITECTURE.md
|
||||
2. SETUP.md
|
||||
3. Code comments in app/
|
||||
|
||||
|
||||
End of Project Structure
|
||||
=========================
|
||||
Generated: November 28, 2024
|
||||
Version: 1.0.0 (Phase 1)
|
||||
Reference in New Issue
Block a user