- Installation and Usage Instructions
- Project Overview
- Project Goals
- Significance of the Project
- Code Structure
- Functionality and Test Results
- Discussion and Conclusions
1. Ensure you have Python 3.11.6 installed. You can download Python 3.11.6 from the official Python website: Python Downloads page
git clone git@github.com:Deep4GB/CMPSC472_FinalProject.git
cd CMPSC472_FinalProjectOpen the Command Prompt or Terminal and navigate to the project directory using the cd command.
-
Install
virtualenv(if not installed) :pip install virtualenv
-
Activate
virtualenv:virtualenv venv
- On Windows:
- Activate the virtual environment
venv\Scripts\activate
- Activate the virtual environment
- On macOS and Linux:
- Activate the virtual environment
source venv/bin/activate
- Activate the virtual environment
- To deactivate the virtual environment:
deactivate
pip install -r requirements.txtpython app.py- Navigate to the "General Reminders" section.
- Enter the reminder details: reminder text, date, and time in 24-hour format.
- Click "Set Reminder" to add the reminder.
- In the list of general reminders, click the "Delete" button next to the reminder you want to remove.
- Go to the "Medication Reminders" section.
- Enter medication details: name, dose, date, and select reminder times.
- Click "Add Medication Reminder" to add the medication and set reminders.
- In the list of medication reminders, click the "Delete" button next to the medication you want to remove.
- Visit the "Appointment Reminders" section.
- Enter appointment details: text, date, and time in 24-hour format.
- Click "Set Appointment Reminder" to add the appointment.
- In the list of appointment reminders, click the "Delete" button next to the appointment you want to remove.
- Go to the "Health Tracking" section.
- Enter health metrics: date, blood pressure, heart rate, and an optional additional metric.
- Click "Add Health Metrics" to record the health data.
- Use the "Search by Date" input to find health metrics for a specific date.
- Click "Search" to display metrics for the selected date.
- In the list of health metrics, click the "Delete" button next to the record you want to remove.
- Click on "Check Your Health Metrics!!" to access the Health Metrics page and refresh the data.
- The time format for reminders is in 24-hour (military) format. Ensure to input the time accordingly; otherwise, the program won't accept the input.
- To stop the application, press Ctrl+C in the terminal where the Flask app is running.
This project aims to develop a software application designed to assist the elderly in managing their health and daily tasks efficiently. The application serves as a reminder system for medication, appointments, and other crucial tasks. Additionally, it includes a health tracking feature allowing users to input and monitor vital health metrics such as blood pressure and heart rate.
This Flask project incorporates several Operating System (OS) concepts:
-
Threads: Utilized for asynchronous tasks, such as scheduling reminders and checking health metrics, to prevent blocking the main application.
-
File Handling: Reading and writing JSON files to store and retrieve reminders, medications, appointments, and health metrics.
-
Synchronization: Implementing locks (
threading.Lock) to manage access to shared resources (e.g., reminders and health metrics) to avoid data corruption when multiple threads access them concurrently. -
Process Control: Flask handles multiple HTTP requests and responses as separate processes to manage the web application's functionalities.
-
Timers and Polling: Employing time-based functions (
time.sleep()) for scheduling reminders and continuously checking the current time against scheduled reminder times. -
Inter-Process Communication (IPC): Using HTTP methods like POST, GET, and DELETE for communication between the client (browser) and the server (Flask application) to perform actions like adding reminders, deleting records, and retrieving health metrics.
These concepts work together to facilitate the functioning of the application, manage data, handle user requests, and ensure concurrent operations without conflicts or data loss.
-
Enhance Daily Task Management:
- Objective: Develop a user-friendly interface to enable elderly individuals to easily add, view, and manage daily reminders for tasks, appointments, health metrics, and medication schedules.
- Rationale: Empowering users to organize their daily activities fosters a sense of independence and reduces stress associated with memory lapses.
-
Facilitate Health Data Tracking:
- Objective: Implement a system for tracking and recording health metrics, including blood pressure and heart rate, allowing users to monitor their health over time.
- Rationale: Providing a tool for health data tracking contributes to proactive health management and encourages individuals to stay informed about their well-being.
-
Ensure User-Friendly Interface:
- Objective: Design a graphical user interface (GUI) that is intuitive, accessible, and tailored to the needs of the elderly population.
- Rationale: An easy-to-use interface ensures that the project is inclusive, accommodating users with varying levels of technological familiarity.
-
Implement Persistent Data Storage:
- Objective: Develop mechanisms for persistent storage of reminders and health data, allowing users to access historical information.
- Rationale: Persistent storage ensures that users can review past information, aiding in continuity of care and promoting long-term health tracking.
-
Support Caregiver Collaboration:
- Objective: Provide features that allow caregivers to remotely view and manage reminders, fostering collaboration and support for elderly individuals.
- Rationale: Inclusion of caregiver features ensures a holistic approach to elderly care, involving family members or support networks in the well-being of the user.
-
Promote Mental Health Awareness:
- Objective: Implement features that encourage users and caregivers to stay aware of mental health through health data trends and proactive reminders.
- Rationale: By promoting mental health awareness, the project contributes to a holistic approach to well-being, considering both physical and mental health aspects.
-
Bridge Generational Digital Divide:
- Objective: Introduce technology in a manner that is accessible to older individuals, bridging the digital divide and ensuring inclusivity.
- Rationale: Making technology accessible fosters social connection, reduces isolation, and encourages the elderly to engage with modern tools for their benefit.
-
Create a Collaborative Health Ecosystem:
- Objective: Establish a platform that encourages collaboration among users, caregivers, and healthcare professionals, creating a supportive health ecosystem.
- Rationale: Collaboration ensures a comprehensive approach to health management, involving multiple stakeholders for the benefit of the elderly individual.
-
Improved Quality of Life:
- The project addresses the specific needs of the elderly by providing a user-friendly interface for managing reminders and health data.
- By assisting in the organization of daily tasks and health-related information, the project contributes to an improved quality of life for the elderly.
-
Enhanced Independence:
- Empowering the elderly to manage their reminders and health metrics fosters a sense of independence.
- The ability to add, view, and delete reminders or track health metrics autonomously promotes self-sufficiency.
-
Reduced Anxiety and Stress:
- The project helps in minimizing the anxiety and stress associated with memory lapses or missed appointments.
- Reminders serve as proactive prompts, alleviating concerns about forgetting essential tasks or medications.
-
Positive Impact on Mental Health:
- Providing a centralized platform for health data tracking allows individuals and their caregivers to monitor trends over time.
- This feature aids in maintaining mental health awareness, fostering a proactive approach to well-being.
-
Facilitation of Caregiver Support:
- The project supports caregivers in ensuring the well-being of their elderly loved ones.
- Caregivers can remotely view and manage reminders, offering a collaborative and supportive approach to elderly care.
-
Integration of Technology and Social Connection:
- The project introduces technology in a user-friendly manner, bridging the digital divide for older individuals.
- It incorporates features that encourage social connections, such as shared health data or collaborative reminders.
app.py:
- Implements a Flask web application to manage reminders and health metrics.
- Defines routes for different functionalities (add, delete, display reminders, health tracker).
- Uses JSON files to store reminders and health metrics.
index.html:
- This structured HTML file is main home page from where user will chose where to redirect.
- The use of Tailwind CSS contributes to a visually appealing, animations and responsive design.
- The integrated JavaScript includes importing icons and loading.
reminder.html:
- This structured HTML file ensures a clear organization of the user interface components, including forms for adding reminders, displaying existing reminders, and facilitating user interaction.
- The use of Tailwind CSS contributes to a visually appealing and responsive design.
- The integrated JavaScript enhances the user experience by allowing the deletion of reminders without the need for page refresh.
health.html:
- This structured HTML file is made for health metrics page of the app.
- It has container for health tracking with a reminder card, health tracking form for adding metrics, search feature for filtering metrics by date, list displaying existing health metrics, and javascript functions for searching, displaying, and deleting health records.
Note:
- Data Storage:
- Reminders are stored as JSON files (
general_reminders.json,medications.json,appointments.json) in app.py and reminder.html. - Health Metrics are stored as JSON file as well
health_data.jsonvia app.py and health.html.
- Reminders are stored as JSON files (
Communication:
-
The
app.pyscript uses Flask to create a web interface and the logic is implemented in there. -
The
index.htmlfile is the main(home) page of the web application. It contains the HTML code for the web interface. It is frontend of the program. -
The
reminder.htmlfile is the reminder page of the web application. It contains the HTML code for the web interface. It is frontend of the program. -
The
health.htmlfile is the health metrics page of the web application. It contains the HTML code for the web interface. It is frontend of the program.
This outline provides an overview of the code structure, highlighting key functions, data storage, and the interaction between different components.
- Functionality:
- Users can add reminders for tasks and appointments.
- Reminders are displayed in an organized manner.
- Users can delete reminders.
- Test Results:
- Functionality:
- Users can input and track health metrics (blood pressure, heart rate).
- Health data is displayed clearly.
- Historical health data can be accessed.
- Test Results:
- Functionality:
- Web app is designed to be intuitive and accessible.
- Clear navigation for all functionalities.
- Test Results:
- Functionality:
- Technology introduced in an accessible manner.
- User-friendly design for older individuals.
- Test Results:
- Accessibility: Users of varying technological familiarity successfully engaged with the system.
- Inclusivity: Project successfully bridged the digital divide.
During the development process, the team encountered a few challenges and limitations, including:
- Integration complexities while synchronizing reminders with different time zones.
- Ensuring a seamless user experience across various devices and screen sizes.
The project benefited significantly from the learnings acquired during the course:
- Implemented robust algorithms for reminder notifications based on scheduling principles learned in class.
- Employed secure authentication methods and data encryption techniques covered in course modules.
- Implemented OS concepts such as threads, file handling, and synchronization to ensure concurrent operations without data loss.
For future iterations, the following enhancements or features could be considered:
- Incorporating AI-based predictive analysis for health trends based on input health metrics.
- Implementing a more intuitive and customizable user interface to cater to individual preferences.





