BugBridge is a collaborative platform for reporting software bugs, submitting solutions, and engaging in real-time coding sessions to debug issues efficiently, developed as part of CSCI 5308 - Advanced Topics in Software Development at Dalhousie University. It enables developers to work together, share insights, and resolve problems faster. This React-based frontend interfaces with our Spring Boot backend to provide a seamless user experience for bug tracking and resolution.
- User Authentication and Profile Management: Secure login, signup, and personalized profiles
- Bug Reporting System: Submit detailed bug reports with code snippets or file attachments
- Real-Time Collaboration: Engage in live coding sessions to debug issues together
- Solution Management: Submit, review, and implement bug fixes
- Advanced Search and Filters: Find bugs by status, priority, or assignee
- Code Editor Integration: Built-in Monaco editor to run code while editing
- Responsive Design: Fully optimized for both desktop and mobile devices
- Email Notifications: Receive account verification and password reset emails.
- Framework: React 18
- Routing: React Router DOM v7
- Styling: TailwindCSS
- Icons: Lucide React, React Icons
- HTTP Client: Axios
- Backend: Java, Spring Boot
- Authentication: JWT
- Database & Storage: MySql, Firebase
- Node.js: Version 18 or above
- Java JDK: Version 17
- npm/yarn/bun: For package management
- MySQL: Used for database management and storage.
- @monaco-editor/react: "^4.6.0"
- axios: "^1.7.9"
- cra-template: "1.2.0"
- firebase: "^11.4.0"
- js-beautify: "^1.15.3"
- jwt-decode: "^4.0.0"
- lucide-react: "^0.474.0"
- react: "^18.3.1"
- react-dom: "^18.3.1"
- react-icons: "^5.4.0"
- react-markdown: "^9.0.3"
- react-router-dom: "^7.1.5"
- react-scripts: "5.0.1"
- web-vitals: "^4.2.4"
- postcss: "^8.5.1"
- tailwindcss: "^3.4.17"
- Spring Boot: 3.3.0
- Spring Boot Starter Data JPA: For database interactions.
- Spring Boot Starter Web: For building web applications.
- MySQL Connector/J: Runtime dependency for MySQL database.
- Lombok: For reducing boilerplate code.
- Spring Boot Starter Mail: For email functionality.
- Spring Boot Starter Thymeleaf: For rendering HTML templates with Thymeleaf.
- Spring Boot Starter Security: For securing the application.
- Java JWT: 4.3.0 (Token-based authentication).
- Spring Security Test: For testing security layers.
- MapStruct: 1.5.5.Final (For code generation for bean mapping).
- MapStruct Processor: For generating the mapper implementation code.
- Spring Boot Starter Test: For unit and integration testing.
- Spring Security Test: For security-specific testing.
- Clone the repository:
git clone https://git.cs.dal.ca/courses/2025-winter/csci-5308/group08 cd bugboard/frontend
-
Navigate to the backend directory:
cd backend -
Create a
.envfile with your environment variables:SERVER_PORT=your_application_port PROD_DB_PASSWORD=your_mysql_password PROD_DB_URL=your_mysql_db_connection_url PROD_DB_USER=your_mysql_username -
Run the backend server:
./mvnw spring-boot:run
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm i
-
Create a
.envfile with required environment variables:REACT_APP_API_BASE_URL=http://localhost:8082 REACT_APP_FIREBASE_API_KEY=your_firebase_api_key REACT_APP_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain REACT_APP_FIREBASE_PROJECT_ID=your_firebase_project_id REACT_APP_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id REACT_APP_FIREBASE_APP_ID=your_firebase_app_id -
Start the development server:
npm start
group08/
├── frontend/ # React frontend application
├── backend/ # Spring Boot backend application
├── .gitlab-ci.yml # Docker Compose setup
└── README.md # Project documentationIn this project, we have diligently adhered to the SOLID principles to create a robust and maintainable architecture, while also prioritizing high cohesion and low coupling. For instance, the RunService system serves as a key example of these principles in action. Each component follows the Single Responsibility Principle by having a distinct purpose—for instance, RunService implementations like JavaRunService or JavaScriptRunService are solely responsible for executing code in their respective languages. Our design is open for extension but closed for modification, as demonstrated by the RunServiceFactory, which enables support for new languages without altering existing code. The Liskov Substitution Principle is upheld since any RunService implementation can be swapped interchangeably without affecting functionality. The RunService interface is concise and purpose-driven, aligning with the Interface Segregation Principle, ensuring clients only depend on relevant methods. Additionally, the Dependency Inversion Principle is evident as high-level components, such as the factory, rely on the RunService abstraction rather than concrete implementations. Beyond SOLID, our design achieves high cohesion and low coupling between them, facilitated by interface-based interactions.
Link: https://drive.google.com/drive/folders/1Z0E8NlweVXJuQ0adcdsxUYNsmdW24JFJ?usp=drive_link
| Service | Test Commit | Implementation Commit |
|---|---|---|
| SubmitService | 0538c2408140959412e3245ec3dbcc227d474bea : #43 TEST submission service | 6121ec3d4a0d76673779ddab17ed75878d19adb1 : #43 service implementation to save submissions |
| SubmitService | fed901f7caf3e4b2b6d79ec67b201238c2c457cd : #43 TEST for fetching submissions | 23ef567786c004f5d24bf3af8b2bbd9a7eaa9dd5 : #43 and #45 submissions tab and fetch submissions |
| SubmitService | bc4041a5d39c2346919e493aa887ed6ebcfff31b : #44 TEST approval test | 79b5b194cef32a0b0d7490e2b258b9a7e04f382a : #44 approval and notification implementation |
| NotificationService | 5785df8c01c3f386d9b30926617e95fcd4d702f8 : #44 TEST Notifications | 79b5b194cef32a0b0d7490e2b258b9a7e04f382a : #44 approval and notification implementation |
| SubmitService | b0a962ed0d78608071d53ed61aaed4165c3dfde1 : #43 TEST approved submissions | 4b08e8168508b33bad900f06112a23f7b2ffdc82 : #43 solutions implementation |
| UserService | 528ec9d969cc11ab3696914d4f760b4e14183137 : #14 TESTING update users | 821aaa4aa91f0e7c5d3ddf6fe3118cdd2fc675c6 : #14 update username, email and password |
| BugSuggestionService | c26b810decb7fc9ca6d64767b94f02aed39beb40 : #18 TEST StackOverflow Suggestions API | b7f7c7e5120462ddebac1c9fce364c82ef653cec : #18 service implemented |
| SubmitService | 6170dcc5040619bda00be94dbf2898eba3da7b20 : #46 TEST for rejections and submission by creator | c82bced5f961a16f9f007eeba6d245115b7b2fbb : #46 rejection and fetch by creator |
| Module | Line Coverage |
|---|---|
| BugService | 100% |
| BugSuggestionService | 84% |
| CommentService | 100% |
| DraftService | 100% |
| FileStorageService | 83% |
| JavaRunService | 100% |
| JavaScriptRunService | 100% |
| NotificationService | 100% |
| PasswordResetService | 84% |
| PythonRunService | 100% |
| RegistrationService | 100% |
| RunService | 100% |
| RunServiceFactory | 100% |
| SessionService | 100% |
| SubmitService | 98% |
| UserService | 89% |
- Sign up or log in to your account
- Create a new bug report with detailed description, code snippets, and screenshots
- Track the status of reported bugs
- Communicate with developers working on the solution
- Browse assigned bugs or search for open issues
- Engage in real-time debugging sessions
- Submit solutions with code changes
- Review and test proposed fixes from other developers
- Utilise Stack Overflow suggestions for each bug
- Monitor bug resolution progress
- Assign bugs to team members
- Prioritize issues based on severity
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Ritvik Wuyyuru
- Disha Patel
- Dharma Kevadiya
- Mency Christian
This project is licensed under the MIT License. See the LICENSE file for details.
- Special thanks to Dalhousie University
- CSCI5308 Course Staff
- Special thanks to all contributors who have helped shape this project
- Inspired by the needs of client teams everywhere to streamline bug tracking and resolution