diff --git a/doc/proposals/2025/gsoc/application_udhay_adithya_dashbot.md b/doc/proposals/2025/gsoc/application_udhay_adithya_dashbot.md new file mode 100644 index 000000000..f6019ec38 --- /dev/null +++ b/doc/proposals/2025/gsoc/application_udhay_adithya_dashbot.md @@ -0,0 +1,399 @@ +### **ABOUT** + +* Name: Udhay Adithya J +* Email: [udhayxd@gmail.com](mailto:udhayxd@gmail.com) +* Discord: udhay_adithya +* Website: https://udhay-adithya.me +* Github: [Udhay-Adithya](https://github.com/Udhay-Adithya) +* LinkedIn: [udhay-adithya](https://www.linkedin.com/in/udhay-adithya/) +* Timezone: India Standard Time (IST), UTC+5:30 +* Location: Amravati, Andhra Pradesh, India. +* Resume : [Adithya Resume.pdf](https://github.com/Udhay-Adithya/Udhay-Adithya/releases/latest/download/Adithya.Resume.pdf) + +### **UNIVERSITY INFO** + +* University: [Vellore Institute of Technology](https://vitap.ac.in/), Andhra Pradesh +* Degree: Bachelor of Technology +* Major: Computer Science & Engineering +* Year: Sophomore, 2nd Year +* Expected Graduation: 2027 + +### Motivation & Past Experience + +### 1. Have you worked on or contributed to a FOSS project before? Can you attach repo links or relevant PRs? + +I haven't contributed to open-source projects before this, so API Dash marks my first practical experience with open-source contribution. So far, I have made a total of four PRs—three of which have been merged, while the other one is currently under review. Here are the relevant PRs: + +([#698](https://github.com/foss42/apidash/pull/698)): docs(codegen): add detailed instructions for ureq + +([#695](https://github.com/foss42/apidash/pull/695)): docs(codegen): add detailed instructions for reqwest + +([#671](https://github.com/foss42/apidash/pull/671)): feat: add onboarding screen (#651) + +([#674](https://github.com/foss42/apidash/pull/674)): fix: remove drawerEdgeDragWidth property + + +### 2. What is your one project/achievement that you are most proud of? Why? + +The project I am most proud of is **VIT-AP Companion**, a mobile application I built to help students at my university easily access their academic portal and other essential resources. This project holds special value to me because it was the first real-world application I developed, and I learned Flutter specifically to make this app. + +When I noticed that students at my university struggled with the non-mobile-friendly, web-based academic portal, I decided to take the initiative and create a solution. + +The app provided features like: +- Fast access to all features in the academic portal(Attendance, Timetable, Grades, Marks, Outing, Faculty Details and Exam Schedules) via a clean and simple mobile UI. +- Notifications and updates for upcoming classes and exams. +- Community page where students can engage with each other through posts. + +It was particularly fulfilling because it solved a direct pain point for students and helped improve their day-to-day academic experience. Not only did this project boost my technical skills, but it also strengthened my problem-solving and user-centric development mindset. It became the stepping stone for my journey into building impactful, real-world applications. + +**Github**: [vit_ap_student_app +](https://github.com/Udhay-Adithya/vit_ap_student_app/tree/testing) + +### 3. What kind of problems or challenges motivate you the most to solve them? +I am highly motivated by challenges that require practical, real-world problem-solving—especially when the solution can directly impact people. Tasks that demand attention to detail, optimization, or seamless user experience captivate me. I enjoy working on projects that not only push my technical limits but also have a tangible purpose and add value, rather than being purely theoretical. + + +### 4. Will you be working on GSoC full-time? In case not, what will you be studying or working on while working on the project? +I will not be working full-time initially, as I will also be attending university classes during the early stages of the GSoC timeline. However, my university's flexible course scheduling system will help me dedicate a substantial amount of time each week to the project alongside my coursework. + +Once my summer vacation begins(20-June-2025), I will be able to transition to working full-time on GSoC, fully committing to the project without any academic distractions. + + +### 6. Do you mind regularly syncing up with the project mentors? +Not at all! I highly value feedback and mentorship. I am more than willing to have regular sync-ups with project mentors. I am available across multiple communication platforms such as email, Discord, Slack, and LinkedIn, and I am comfortable joining calls or screen shares whenever needed to ensure smooth collaboration and continuous improvement. + + +### 7. What interests you the most about API Dash? +What excites me the most about API Dash is its aim to streamline the testing and visualization of APIs directly within the Dart ecosystem. As a Flutter and Dart enthusiast, contributing to a tool that helps developers improve their workflow and productivity resonates with me. I am particularly interested in how API Dash enhances the developer experience and promotes efficiency when working with APIs, which is crucial in modern app development. + + +### 8. Can you mention some areas where the project can be improved? + +DashBot's UI/UX can be significantly enhanced by implementing several modern features to improve user interaction and satisfaction. One key improvement is the introduction of a **Resizable and Draggable Chat Window**, allowing users to adjust the chat interface according to their preferences and screen space, creating a more personalized and efficient workspace. + +**Integrating Voice Input** can also change the way users interact with DashBot. By enabling voice commands, users can perform tasks hands-free, which is particularly beneficial in scenarios where typing is inconvenient or impossible. This feature not only adds convenience but also makes DashBot more accessible to users with disabilities, aligning with inclusive design principles and expanding its utility in diverse environments. + +Additionally, a **Security & Compliance Advisor** can enhance DashBot’s capabilities by providing: +- **Vulnerability Scanning:** Automatically identifying security risks such as missing authentication, exposed sensitive data, and other vulnerabilities. +- **Auto-Remediation:** Offering actionable suggestions to fix issues like CORS misconfigurations or insecure headers. + +### **PROJECT TITLE : DashBot** + +### **ABSTRACT:** + +This proposal seeks to develop DashBot - the AI assistant for API Dash which supercharges developer productivity by helping developers automate tedious tasks, follow best practices, interact & obtain contextual suggestions, all via natural-language input. DashBot will be designed in a modular and extensible manner and provide the following list of features: + +- Explain responses & identify any discrepancy +- Debug requests based on Status codes & Error messages +- Generate API documentation +- Understand API and generate tests +- Generate plots & visualizations for API responses along with ability to customize +- Generate API integration frontend code for frontend frameworks like React, Flutter, etc. + +For each of the tasks you are benchmark evaluations will also be done so that it is easier for end users to choose the right backend LLM. + +Upon successful completion of this project, we will have +a fully function DashBot integrated with API Dash [#621](https://github.com/foss42/apidash/issues/621) + +### **DETAILED DESCRIPTION** + +DashBot will be developed as a modular feature using an iterative approach, leveraging the `MVVM (Model-View-ViewModel)` architecture pattern with `Riverpod` for state management. This architecture ensures clean separation of concerns, efficient data flow, and seamless UI updates, enabling scalable and maintainable code. + +To support multiple LLM providers, DashBot will integrate with `Gemini`, `OpenAI`, `Anthropic`, and `Ollama`. This multi-provider support allows users to select their preferred LLM backend, whether cloud-based or local. An abstraction layer will be implemented to unify interactions with these providers, ensuring consistent API responses and reducing vendor lock-in. + +For core features like debugging API requests, generating documentation, and creating tests, advanced prompting techniques such as `Few-shot prompting` and `ReAct (Reasoning and Acting)` will be employed. Few-shot prompting will provide the LLM with contextual examples to refine responses, while ReAct will enable step-by-step reasoning and tool invocation, ensuring accurate and actionable outputs. + +API response visualizations will be built using the `fl_chart` library, which supports customizable line, bar, pie, scatter, and radar charts. This integration will allow users to interactively analyze API data and identify trends. + +**Benchmark evaluations** for each LLM provider will be conducted. Here are the key metrics that will be considered for benchmarking different models, + +- **Explain responses** + - Discrepancy Detection Rate: Does the LLM correctly identify discrepancies? + - Explainability Score: Are explanations understandable to developers? + - Edge Case Handling: Can it handle ambiguous or incomplete responses? + +- **Debug errors** + - Error Classification Accuracy: Does the LLM correctly identify the error source? + - Fix Implementation Rate: Are fixes actionable and contextually appropriate? + - Ambiguity Handling Test: Can it categorize errors (e.g., syntax vs. logic)? + +- **Generate Documentation** + - Coverage Score: Does the documentation cover all endpoints, parameters, and responses? + - Readability Assessment: Is the documentation clear and well-structured? + - Standard Compliance Check: Does it adhere to standards? + +- **Generate Tests** + - Test Coverage Report: Percentage of API endpoints and edge cases covered + - Test Execution Success Rate: Do tests pass/fail correctly when run? + - Adaptability Test: Are tests structured for easy updates? + +- **Generate Visualizations** + - Data Fidelity Check: Does the plot correctly represent the data? + - Aesthetic Scoring: Is the visualization clear and professional? + - Customization Flexibility Test: Can users tweak parameters? + +- **Generate Frontend Code** + - Code Execution Test: Does the code compile and function as expected? + - Best Practice Adherence: Does it follow best practices? + - Maintainability Score: Is the code clean and maintainable? + +### **Implementing other essential features:** + +Adding Support for various API Authentication Methods such as, +- **Basic authentication:** Sending a verified username and password with API request +- **API Auth:** Basic authentication [#610](https://github.com/foss42/apidash/issues/610) +- **API key:** Sending a key-value pair to the API either in the request headers or query parameters Add API Auth: API key [#611](https://github.com/foss42/apidash/issues/611) +- **Bearer token:** Authenticate using an access key, such as a JSON Web Token (JWT) Add API Auth: Bearer token [#612](https://github.com/foss42/apidash/issues/612) +- **JWT Bearer:** Generate JWT bearer tokens to authorize requests Add API Auth: JWT Bearer [#613](https://github.com/foss42/apidash/issues/613) +- **Digest Auth:** Client must send two requests. First request sent to the server receives a nonce value, which is then used to produce a one-time-use hash key to authenticate the request Add API Auth: Digest Auth [#614](https://github.com/foss42/apidash/issues/614) +- **OAuth 1.0** Add API Auth: OAuth 1.0 [#615](https://github.com/foss42/apidash/issues/615) +- **OAuth 2.0:** Implement OAuth 2.0 authentication [#481](https://github.com/foss42/apidash/issues/481) + +Required dependencies, + +- [anthropic_sdk_dart](https://pub.dev/packages/anthropic_sdk_dart) +- [googleai_dart](https://pub.dev/packages/googleai_dart/versions) +- [openai_dart](https://pub.dev/packages/openai_dart) +- [ollama_dart](https://pub.dev/packages/ollama_dart) +- [flutter_riverpod](https://pub.dev/packages/flutter_riverpod) +- [fl_charts](https://pub.dev/packages/fl_chart) +- [riverpod_annotation](https://pub.dev/packages/riverpod_annotation) +- [riverpod_lint](https://pub.dev/packages/riverpod_lint) +- [riverpod_generator](https://pub.dev/packages/riverpod_generator) +- [custom_lint](https://pub.dev/packages/custom_lint) +- [oauth1](https://pub.dev/packages/oauth1) +- [oauth2](https://pub.dev/packages/oauth2) + +## **FOLDER STRUCTURE** +``` +lib/ +│── features/ +│ ├── feature_1/ +│ │ ├── repository/ # Data layer for feature_1 +│ │ │ ├── feature_1_repository.dart +│ │ ├── viewmodel/ # Business logic for feature_1 +│ │ │ ├── feature_1_viewmodel.dart +│ │ ├── view/ # UI layer for feature_1 +│ │ │ ├── pages/ # Reusable widgets for this feature +│ │ │ │ ├── feature_1_screen.dart +│ │ │ ├── widgets/ # Reusable widgets for this feature +``` + +## **USAGE** + +DashBot can be accessed from the home screen of API Dash using a floating action button at the bottom right corner. + + + + + +