
GAIT Project is a full‑stack web application combining a modern React/Vite frontend with a robust Spring Boot backend. This project demonstrates a modular, containerized architecture with integrated services such as PostgreSQL, Blazegraph, and a Python‑based NLP microservice.
The GAIT is an innovative web‑based platform that streamlines how users interact with APIs through natural language. By translating everyday language into structured queries, GAIT eliminates the need for manual query writing, enabling users of all technical levels to access and manipulate data with ease.
At its core, WADe adopts a modern, service‑oriented architecture that seamlessly integrates multiple components:
- User Interface (UI): Built with React, Vite, and Material UI, the UI offers a responsive, intuitive experience with features like dynamic theming, internationalization, and a chat‑inspired interaction model.
- Processing Layer: Leveraging advanced natural language processing (NLP) techniques, this layer transforms user prompts into API requests, ensuring that even complex queries are handled accurately.
- API Integration Layer: The backend, developed in Spring Boot, connects to essential services such as PostgreSQL for relational data, Blazegraph for graph data, and a dedicated Python‑based NLP microservice for enhanced language understanding.
The primary goal of the WADe Project is to democratize data access by allowing users to interact with sophisticated APIs using simple, natural language. This not only reduces the learning curve but also accelerates data-driven decision making across various domains.
Database
DevOps
- User Authentication: Secure login functionality using encrypted credentials and session management.
- Responsive Design: Optimized for mobile, tablet, and desktop for a seamless user experience.
- Natural Language Processing: Converts plain text queries into structured API requests.
- Real-Time Query Processing: Instant feedback and dynamic updates as users interact with the system.
- Multilingual Support: Built-in internationalization with i18next, enabling multiple language options.
- Dynamic Theming: Toggle between light and dark modes to suit user preferences.
- Conversation History: Maintains a log of past queries and responses for easy reference.
- Interactive Sidebar Navigation: Intuitive sidebar to quickly access and manage previous interactions.
- Containerized Deployment: Fully Dockerized setup for consistent, scalable deployment across environments.
- Robust API Integration & Intelligent Caching: Seamlessly connects to backend services (Spring Boot, PostgreSQL, Blazegraph, and NLP microservices) with an intelligent caching mechanism. Each prompt request and its response are stored in an RDF database (Blazegraph), so if a user sends the same request again, the response is retrieved instantly from the cache.
Color | Hex |
---|---|
Primary Color | #221C35 |
Secondary Color | #3A2B5F |
Primary Color | #7928CA |
Secondary Color | #a62bc5 |
Accent Color | #FF0080 |
Text Color | #221C35 |
To run this project, you will need to add a few .env files. The first one should be added into Backend/Java MicroService folder:
# Database credentials
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=GaitTST
# GitHub Token
GITHUB_TOKEN='YOUR_GITHUB_TOKEN'
# OpenAI Token
OPENAI_API_KEY='YOUR_OPENAI_TOKEN'
# JWT Secret
JWT_SECRET=CHANGE_THIS_TO_A_LONG_RANDOM_SECRET_STRING_ABC123
The second one should be added into Frontend folder:
VITE_API_PROTOCOL=http
VITE_API_HOSTNAME=127.0.0.1
VITE_API_PORT=8080
Frontend use Node.js v22.13.1 together with npm v10.9.2
>>> node --version
>>> v22.13.1
>>>
>>> npm --version
>>> 10.9.2
For Java MicroService you have to install the dependencies from pom.xml file and have Java SDK 20 installed on your machine.
For Python MicroService you have to install the desired dependencies from requirements.txt and have at least Python v3.8 installed on your machine.
>>> pip install -r ./requirements.txt
Clone the project
>>> git clone https://github.com/TudFilip/WADe-Project.git
Go to each project directory:
>>> cd Frontend
>>> cd Backend/Java MicroService
>>> cd Backend/Python MicroService
Install dependencies for each one. Be sure to have a valid OpenAI key and GitHub token and place them in the .env files as mentioned above.
Since this project is dockerized, in order to start it you need to have docker installed locally, together with Docker Desktop application. You can check your version of docker with this:
>>> docker --version
>>> docker-compose --version
If everything is set, go to the root of Backend/Java MicroService and run:
>>> docker-componse up --build -d
After everything is set, in the Docker Desktop you should see, in Containers tab, 5 new created containers.
This section provides a step-by-step guide on how to use the GAIT platform to interact with GraphQL APIs using natural language. Whether you're a developer, analyst, or enthusiast, GAIT makes it easy to fetch data from APIs like GitHub and more without writing complex GraphQL queries.
-
Log In or Create New Account:
- If you're a new user, go to the Create New Account page to create an account.
- Existing users can log in using their credentials on the Login page.
-
Send a Prompt:
- Once logged in, you enter Home page.
- Enter your prompt in plain text.
- Click Send to process your prompt.
-
View Results:
- The system will process your prompt, generate a GraphQL query, and fetch the results from the relevant API.
- Results will be displayed in a JSON format under your prompt message.
-
Check Your Old Prompts And Answers:
- You can see your old queries and results on the left sidebar.
- Access your saved queries and history by clicking on one of it.
- You can see old results or even redo a prompt if you are curious.
Here are some example queries you can try:
- GitHub: "Which are the most starred repos of user Microsoft?"
- Countries API: "What is the capital of Yemen?"
- Define Core Features
- Tech Stack Decisions
- Design System Architecture
- Create Database Schema
- Define API Specifications
- UI/UX Design
- Develop Backend Services
- Develop Frontend Application
- Integration Testing
- Set Up Deployment Pipeline
- Multiple Languages Support
- Deploy Application
- Documentation
- Unit Testing
- Monitor Performance
- Bug Fixes and Updates
- Deliver the Project On Time
- Pass Current Semester
-
It gives good answers to user's prompts?
- Probably not, but at least we tried our best.
-
Will it support multiple Public GraphQL APIs in the future?
- We don't know. Everything is unpredictable.
Distributed under MIT License. See LICENSE for more information.
Bălteanu Andrei - andreibalteanu@gmail.com
Filip Tudor-Mihail - filiptudormihail@gmail.com
Project Link: https://github.com/TudFilip/WADe-Project
Resources and libraries we have used in our project.