Diasync is an AI-driven self management application for Diabetics.
Report Bug
·
Request Feature
- 🏥 About the Project
- 🏥 Getting Started
- 🏥 Features and Functionality
- 🏥 Concept Process
- 💉 Ideation
- 💉 Wireframes
- 🏥 Development Process
- 🏥 Deployment
- 🏥 Final Outcome
- 💉 Video-Demo
- 💉 Mockups
- 🏥 Conclusion
- 🏥 License
- 🏥 Contact
- 🏥 Acknowledgements
Diasync is a new and AI-driven self-management web application created with NEXT.JS and Django frameworks to create an exciting and cutting-edge application. This aims at educating and catering a diverse group of Diabetics in order to simplify and ease their management in order to live a long and healthy life
To get a copied file of this repository, follow the steps below to get it installed on your local machine.
Ensure that you have the latest version of NPM installed on your machine. The GitHub Desktop program will also be required.
Here are a couple of ways to clone this repo:
-
GitHub Desktop
Enterhttps://github.com/LeandervanAarde/diasync.gitinto the URL field and press theClonebutton. -
Clone Repository
Run the following in the command-line to clone the project:git clone https://github.com/LeandervanAarde/diasync.git
Open `Software` and select `File | Open...` from the menu. Select cloned directory and press `Open` button -
Install Dependencies
Run the following in the command-line to install all the required dependencies:npm install / npm i
-
Contact the Developer for API keys that are required or create an OPENAI account for API access.
-
Follow the instructions on Server to clone the server, contact the Developer for access to the Database or create a Database and .env.local file.
-
Ensure that you have Postgres and PgAdmin installed on your machine.
-
Ensure that pip3 and python3 are installed on your local machine.
-
You can now run the front end using the:
npm run dev
command.
Create a new account on Diasync by sharing essential personal details and uploading your blood sugar readings from your Contour glucose monitor. This enables our AI to perform a thorough analysis of your data.
Access your account securely by logging in with your email and password. Rest assured, all passwords are encrypted to safeguard your privacy. Your login not only provides you with exclusive access to your blood glucose readings but also ensures that your data remains confidential and secure
Diasync's Dashboard offers users a comprehensive overview of their blood sugar data. It includes intuitive data visualization tools and predictive insights into potential future complications, all powered by the OpenAI API. Stay informed and take control of your health with our user-friendly dashboard.
Get a basic overview of how many tests you have on the platform and information such as an estimated HBA1C.
Explore a detailed breakdown of your blood glucose levels on the Readings page, also known as the Diary view. Easily identify the frequency of high, low, and stable blood sugar readings for a more comprehensive understanding of your health. You can also conveniently filter data for the current month, providing you with up-to-date insights into your blood sugar management."
After registering, feel free to upload additional data at your convenience whenever you have new readings that need evaluation. You can trust that our system automatically manages your data, removing older values with the assistance of advanced tools like Pandas and Django. This ensures that your information remains up-to-date and relevant for analysis.
Utilising your data, OpenAI conducts a comprehensive analysis of your blood sugar, offering insights into your control and stability compared to the previous month, all catered to you. Additionally, OpenAI provides dietary recommendations and suggests informative articles to empower you in better blood sugar management.
Once your data has been thoroughly analyzed and you seek further information, feel free to ask OpenAI any questions you have in mind. OpenAI is well-versed in your blood sugar patterns and will provide personalized responses to address your specific needs.
The Conceptual Process is the set of actions, activities and research that was done when starting this project.
In the process of problem identification, I initially conducted research to pinpoint a specific issue within my chosen field. Once I identified the problem, I proceeded to conduct additional research to ensure that I had accurately selected the primary problem and not merely an aspect of it. Lastly, researching an AI that would be suitable for multiple use cases such as data analysation and NLP capabilities.
The Development Process is the technical implementations and functionality done in the frontend and backend of the application.
If you would like information about the backend implementation, you can go view the Server Repo
In the front-end development process:
-
Component Breakdown: Each page underwent a meticulous examination to identify elements that could be divided into reusable components for present and future implementation.
-
Logic and Reusability: After identifying components, their logic was implemented and further segmented into reusable functions. Specific variables were stored to enable global accessibility, eliminating the need for redundant code.
-
File Uploads: A crucial aspect of the front end was enabling data transfer to the backend, especially for file uploads. This challenge was conquered using the React-Dropzone Dependency. The file content was read and converted into a URL, stored in a state, and then sent to the backend after encryption as base64 data, with provisions for decryption on the backend.
-
API Calls: All API calls were organized as functions within a single file. This approach streamlined the process of locating data-related functions and ensured flexibility for future code modifications.
-
Type Consistency: TypeScript was implemented in the project to maintain uniform variable types, declared at the outset of each variable for consistency and reliability.
-
Data Organization: Data was logically grouped by day, although it's now handled on the front end. Future implementation plans aim to incorporate data manipulation on the backend, enhancing efficiency and data management.
-
API Calls: All API calls, as previously mentioned, are centralized in a dedicated file and can be invoked from anywhere in the project. This organization is facilitated by Axios, which minimizes the need for widespread Axios imports, making future dependency changes and maintenance more straightforward.
-
Validation: The login and register components incorporate input validation to ensure that data is correctly parsed and meets specific requirements. For instance, there is a regex pattern for email validation, guaranteeing that email inputs are valid. Additionally, registration values must adhere to predefined structures for the process to be completed.
-
Loaders: Due to performance limitations with Aiven's free-tier database in conjunction with Django, data retrieval times can be notably slow. To address this concern, a loader has been implemented to provide users with reassurance that data is being fetched and loaded, alleviating potential frustration. Future iterations will aim to optimize this issue.
-
Context: To streamline code and minimize the need for frequent token calls and session storage of sensitive data, context management has been established. Upon login, these contexts are configured, granting access to global variables. This approach not only simplifies data handling but also reduces the number of calls, conserves tokens used with the OpenAI API, and enhances data transfer throughout the project as needed.
- This is a project that I've been wanting to do for a while, something that I felt has the ability to make a real impact.
- The project is something that I can use on a daily basis, as a type 1 Diabetic, I have gotten a lot of insights on my own data throughout the entire development process.
- Learning more about Django, while I do enjoy Django, it's not something I see myself using for large-scale projects in the future. It is a backend that I would use for quick implementation due to the simplicity of its nature.
- Using typescript was great, coming from C# and MAUI, it felt a lot more structured than Javascript and I felt I had more confidence throughout the project.
- Learning how to upload data was really cool.
- Data upload was probably my biggest challenge, with some inconsistencies still bein there.
- AI integration was a challenge due to its incosistent responses, OpenAI is not considered an AI for this kind of application, however, it did give me the versatility that I needed. Adapting to that was a challenge. However, it still gives extremely valuable insight.
- Syntax adjustment between Python and TypeScript.
- Next and Django are both new technologies that I have not used in the past, so learning these as I went along was a challenge.
- Refinement of the application's UI
- Data upload refinement
- Performance updates for loading time decreases.
- Building an AI specifically for this would be really cool.
Diasync's front end was deployed using Vercel, considering that Next is made and maintained by Vercel. This process is made extremely easy through their "one-click import" system, linking your GitHub account to the platform and deployment is done.
User testing took place at the end of the project to ensure that the project was working as expected, if you would like to see a summary of the problem and research that lead to the project and the testing results, you can find the pdf Here
See the [open issues](https://github.com/LeandervanAarde/diasync/issues) for a list of proposed features (and known issues).
- Leander van Aarde - LeanderVanAarde
Distributed under the MIT License. See LICENSE for more information.\
-
Leander van Aarde - 200211@virtualwindow.co.za
-
Project Link - https://github.com/LeandervanAarde/diasync
-
Project Link - https://github.com/LeandervanAarde/diasyncserver




-2.png)
.png)
-1.png)








