Project Tasks

Based on the Requirements Specifications document.

The project was divided into 5 separate sprints, each with its focus described below:

ID Task Priority Related Requirements Status Sprint (click)
Github
I1 Build Configuration
- Initialize SBT project with Scala 3.6.4
- Configure assembly plugin for JAR creation
- Set up test environment with ScalaTest
- Configure code coverage & documentation
HIGHEST IR1, IR4, NFR1 S1
I2 Code Quality Tools
- Set up Scalafmt with formatting rules
- Implement Wartremover for code analysis
- Configure Scalafix and semantic DB
- Set up Trunk and Gemini bot
HIGH IR1, NFR2 S1
I3 Git Workflow
- Implement git hooks system
- Set up semantic release system
MEDIUM NFR1, NFR2 S1
I4 Project Infrastructure
- Set up logging infrastructure
- Configure CI/CD pipeline
- Define high-level architecture
HIGHEST IR4, NFR1, NFR2 S1
I5 Core Domain Model
- Design repository data model
- Design initial API contracts
- Generate API documentation
HIGH IR1, IR4, FR2.1 S1, S5
I6 Basic Git Operations
- Implement repository loading
- Extract repository metadata
- Create error handling
HIGH FR1.1, FR2.1, NFR3 S1
Foundation
F1 Layered Architecture Implementation
- Implement modules from architecture diagram
- Apply design patterns from lectures (dependency injection, layered architecture, strategy, factory, etc)
HIGHEST IR4, IR1 S2
F2 Repository Input and Processing
- Accept/validate Git repository URLs
- Fetch repository contents
- Support file type filtering
HIGHEST FR1.1, FR2.1, NFR3, BR1, NFR1 S2
F3 Code Indexing System
- Process code into searchable representations
- Generate/store code embeddings
- Integrate with Langchain4J for vector storage
HIGHEST FR2.2, FR2.3, IR2, IR3, BR2, NFR1 S2
Core Value
C1 Natural Language Code Search
- Enable semantic search across codebase
- Support language/extension filtering
- Display relevant results with context
HIGH FR1.2, FR1.4, FR1.3, FR1.5, BR1, NFR2 S3
C2 Code Understanding Chat Interface
- Provide chat interface for code questions
- Retrieve relevant code context for queries
- Generate context-aware responses
HIGH FR1.6, FR1.5, FR2.4, BR2, NFR2 S3
Additional
E1 User Interface Implementation
- Create intuitive frontend for all functionality
- Support Scala.js and Python (Gradio) interfaces
- Ensure responsive and accessible design
MEDIUM NFR2, IR1, NFR3 S3
E2 Performance Optimization
- Optimize repository lookup speed
- Implement caching/reuse of embeddings
- Ensure responsive search/chat experience
MEDIUM NFR1, FR2.2, FR2.3, NFR2 S4
E3 Security Implementation
- Sanitize user inputs
- Secure Restful API
- Secure data storage
MEDIUM NFR3, FR2.3 S4
E4 Testing and Quality Assurance
- Implement comprehensive testing strategy
- Define quality metrics (see requirements document)
MEDIUM IR1, NFR1, NFR2 S4, S5
E5 Visualization and Analysis
- Visualize code embeddings for quality analysis
- Provide metrics on search effectiveness
- Generate insights for documentation
MEDIUM IR5, FR1.2, BR2 S5
E6 Documentation and Reporting
- Create user documentation
- Generate project report
- Document architecture and design decisions
MEDIUM NFR2, IR4 S5

Traceability Matrix

The following table shows evidence for the requirements in the Requirements Specifications document.

Requirement Design element Implementation Evidence Done
BR1: Search Productivity Project-wide BusinessRequirementsSuite.scala
SUS Questionnaire
Embedding Diagrams
BR2: Improve Code Understanding Project-wide createTextEmbeddingModel
createCodeEmbeddingModel
Python/Scala Frontend
SUS Questionnaire
Embedding Diagrams
FR1.1: Repository URL Input Interface GithubWrapperService.scala UserFunctionalRequirementsSuite
FR1.2: Code Search Using Markdown QdrantEmbeddingStore.scala
GithubWrapperService.scala
UserFunctionalRequirementsSuite
FR1.3: Search Results Display System Scala frontend
Python frontend
SUS Questionnaire
FR1.4: Code Search using Code QdrantEmbeddingStore.scala
GithubWrapperService.scala
UserFunctionalRequirementsSuite ✓ (see related FR1.2)
FR1.5: Code Context Visualization Scala frontend
Python frontend
RepositoryWithLanguages
GithubWrapperService
UserFunctionalRequirementsSuite
SUS Questionnaire
FR1.6: Model with Past Chat History Pipeline.scala
RAGComponentFactory.scala
UserFunctionalRequirementsSuite
FR2.1: Repository Cloning GithubWrapperService.scala
FetchingService.scala
SystemFunctionalRequirementsSuite
FR2.2: Vector Database Generation IngestorService.scala
CacheService.scala
QdrantEmbeddingStore.scala
SystemFunctionalRequirementsSuite
FR2.3: Vector Database Implementation QdrantEmbeddingStore.scala
GithubWrapperService.scala
UserFunctionalRequirementsSuite
FR2.4: LLM Integration for Code QueryRoutingStrategy.scala
QueryFilterService.scala
ChatService.scala
SystemFunctionalRequirementsSuite
NFR1: Performance Optimization ChatService.scala
CacheService.scala
IngestorService.scala
GithubWrapperService.scala
NonFunctionalRequirementsSuite
NFR2: System Usability Optimization GithubWrapperService.scala
Scala frontend
Python frontend
NonFunctionalRequirementsSuite
SUS Questionnaire
NFR3: User Interface Security Scala frontend
Python frontend
NonFunctionalRequirementsSuite
NFR4: Embedding Visualization IngestorService.scala Final Report
IR1: Scala Implementation (declarative programming) Project-wide Adherence to the Gemini style guide
IR2: Qdrant Vector Database IngestorService.scala
ComponentFactory.scala
application.conf
IR3: Ollama Integration QueryRoutingStrategy.scala
QueryFilterService.scala
ChatService.scala
application.conf
IR4: Layered Architecture Project-wide ArchUnit tests

Test Results

The acceptance tests are not executable using the traditional CI/CD pipeline, so below are the results ran locally.

Fig. 1: Sample run of the unit tests, including the acceptance tests