Skip to main content

Cross-Cutting Concerns

Cross-cutting concerns apply to multiple components of the system and ensure reliability, security, and maintainability.


Security

Security is enforced across all layers of the system.

The following mechanisms are implemented:

  • Role-Based Access Control (RBAC)
    Users are assigned roles (Student, Teacher, Admin), and permissions are enforced accordingly.

  • Authentication for Protected Endpoints
    All protected API routes require a valid authentication token.

  • Admin-Only Route Restrictions
    Administrative actions (e.g., deleting quizzes, deleting student data) are restricted via backend middleware checks.

  • Secure Communication (HTTPS)
    All client-server communication occurs over encrypted HTTPS connections.

  • Sandboxed Code Execution
    Student code is executed in an isolated environment with resource limits to prevent system compromise.


Logging

All meaningful system interactions are recorded to ensure traceability and analytics support.

The system logs:

  • Suggestion selections stored in the suggestion_events table
  • Code submissions stored in the submissions table
  • Administrative actions recorded in the event_logs table
  • System errors captured for debugging and monitoring

Logging ensures:

  • Accountability
  • Auditability
  • Performance analysis
  • Debugging support

Performance

System performance is optimized using the following strategies:

  • Indexed database queries for fast lookups
  • Asynchronous AI calls to prevent blocking
  • Asynchronous code runner execution
  • Separation of services to reduce coupling

Exception Handling

The system includes structured error handling at all architectural layers.

  • Backend API routes return standardized HTTP status codes (200, 400, 401, 403, 500).
  • Validation errors are handled before business logic execution.
  • AI service timeouts return graceful fallback responses.
  • Code Runner failures (compile errors, runtime errors, timeouts) are captured and returned safely.
  • All critical exceptions are logged in the event_logs table.

This ensures predictable system behavior and improved debugging capability.


Initialization and Reset

The system supports proper initialization and recovery mechanisms:

  • Backend services initialize database connections at startup.
  • Environment variables configure external dependencies.
  • Code Runner containers are initialized per execution and destroyed afterward.
  • Database migrations ensure schema consistency.
  • Application restart does not corrupt persistent data.

This guarantees stability across deployments and restarts.


Memory Management

Memory management is addressed through:

  • Resource-limited sandbox execution for Code Runner.
  • Timeout thresholds on AI and execution requests.
  • Automatic garbage collection provided by the runtime (Python / Node.js).
  • Avoidance of long-lived in-memory state on the backend.

This prevents resource exhaustion and denial-of-service risks.


Internationalization

The current system is designed in English.

Future internationalization can be supported by:

  • Externalizing UI strings.
  • Language-based configuration.
  • UTF-8 encoding support in database and API responses.

The architecture does not restrict future multi-language support.


Built-in Help

The system supports user guidance through:

  • Inline explanations for AI suggestions.
  • Dashboard feedback messages.
  • Validation error messages.
  • Contextual tooltips in the user interface.

Future versions may include:

  • Interactive tutorials.
  • Help documentation pages.
  • Onboarding walkthroughs.

Built-in Test Facilities

Testing support is incorporated at multiple layers:

  • Unit testing of backend services.
  • API endpoint testing.
  • Code Runner validation against predefined test cases.
  • Logging system for auditing behavior.
  • Automated frontend component testing.

These facilities ensure system reliability and regression prevention.