Skip to main content

Features and Requirements

Functional Requirements

Logging

The system must log user interactions to gather insights on how suggestions are used. Logged data includes:

  • Whether a code suggestion was accepted or rejected
  • How often code suggestions are given to a user
  • How long it takes for a user to accept or reject a suggestion from its generation

Code Suggestions

  • The system must provide context-aware code suggestions based on user code
  • The system must provide suggestions inline in the editor
  • The system must be able to generate correct and incorrect suggestions
  • The system must notify users when they accept an incorrect suggestion.

User Interaction

  • The system allows users to write code as usual within the IDE.
  • The system must allow users to manually mark a suggestion as correct or incorrect.

Limitations & Safeguards

The system should encourage thoughtful code acceptance by implementing safeguards:

  • Users may be temporarily locked out from suggestions after three incorrect acceptances.
  • A warning message should appear before locking a user out.
  • A cooldown period should be implemented before resuming suggestions.

Nonfunctional Requirements

Performance

  • The system must generate code suggestions within 5 seconds, comparable to GitHub Copilot.

Statistics & Insights

  • A portal/dashboard should allow users and administrators to access logged statistics, including:
    • User acceptance/rejection rates.
    • Average response time to suggestions.

Education & Learning

  • The system should promote critical reflection in programmers who are still learning

User Experience

  • The system should integrate seamlessly into the coding workflow without unnecessary interruptions.

Maintainability

  • The codebase should be modular and well-documented to allow easy feature additions and maintenance.