Sproutopia
Team
Group 9
- E/19/008 Adhikari R.A.J.C. email
- E/19/009 Adikari A.M.K.M. email
- E/19/063 Dassanayake D.M.G.S. email
- E/19/074 Dharmarathne B.A.M.I.E. email
Group 16
- E/19/087 Dissanayaka M.A.S.R. email
- E/19/260 Neranji W.K.G.A.G. email
- E/19/264 Nishantha R.P.T. email
- E/19/465 Dilshan R.M.S. email
Table of Contents
- Introduction
- Problem
- Proposed Solution
- Features And Functionalities
- Intended Users
- Tech-Stack
- High-Level Architecture
- User Interface
Introduction
Welcome to Sproutopia, a software development project focused on creating a comprehensive baby development tracking system. Sproutopia aims to provide a user-friendly and feature-rich platform that enables parents and caregivers to monitor and track the growth, milestones, and well-being of their little ones. By leveraging the power of technology, Sproutopia aims to simplify the process of tracking and understanding a baby’s development journey, empowering parents with valuable insights and personalized guidance. With an intuitive interface, data visualization, and an extensive range of tracking capabilities, Sproutopia strives to be the go-to software solution for parents seeking a holistic approach to monitoring their baby’s progress. Join us on this exciting journey as we build Sproutopia and unlock new possibilities in baby development tracking. Together, let’s embark on an incredible adventure of nurturing and supporting the growth of our little sprouts in the digital age.
Problem:
Tracking a baby’s development can be challenging and time-consuming for parents and caregivers. It often involves manually recording and organizing various data points, such as growth parameters, health information, and developmental milestones. Additionally, accessing personalized recommendations and resources for supporting a baby’s development can be difficult.
Proposed Solution:
- Sproutopia offers a solution to these challenges by leveraging technology to simplify the process of tracking and understanding a baby's development journey. The platform provides an intuitive interface and a wide range of features and functionalities to cater to the needs of parents and caregivers.
- With Sproutopia, users can easily capture and monitor essential growth parameters like height, weight, and head circumference. They can track health-related information such as vaccinations, allergies, and medical history, all in one place. Visual representations and growth charts are available to help parents visualize their baby's progress over time.
- In addition, Sproutopia offers appointment and reminder management features, allowing users to schedule and track doctor's appointments, check-ups, and important events. Reminders and notifications are sent to help parents stay organized and manage their baby's healthcare needs effectively.
- The primary users of Sproutopia are parents, caregivers, healthcare professionals, educators, and researchers. The platform aims to create a supportive community where users can collaborate, share knowledge, and support each other in their baby's development journey.
By providing a comprehensive suite of services, including growth tracking, health tracking, developmental assessments, and appointment management, Sproutopia empowers parents and caregivers with valuable insights, personalized recommendations, and a convenient way to record and cherish their child’s developmental journey.
</ul>
Features And Functionalities
Basic Features
- Register babies in the application with babies’ details
- Height and Weight Tracker
- Vaccination Scheduling
- Notifications Service
- Connect Parents with Doctors and Midwifes
Additional Features
- Authentication and Security
- Appoinment Management
- Admin Panel
Intended Users
The Sproutopia baby development tracking system is designed to cater to the following primary users:
- Parents: Parents are the main target users of Sproutopia. They can utilize the platform to track and monitor their baby's growth, milestones, and health-related information. Sproutopia aims to provide parents with valuable insights, personalized recommendations, and a convenient way to record and cherish their child's developmental journey.
- Caregivers: Caregivers, such as grandparents, nannies, or daycare providers, can also benefit from Sproutopia. They can use the system to stay informed about the baby's growth, milestones, feeding and sleeping patterns, and health-related data. This allows for better coordination and communication among caregivers, ensuring consistent care and tracking.
- Healthcare Professionals: Sproutopia may serve as a valuable tool for healthcare professionals, including paediatricians and nurses. It provides them with access to comprehensive data on a baby's development, allowing for informed discussions during medical appointments and aiding in the assessment of a child's progress.
- Educators and Researchers: Sproutopia's aggregated and anonymized data can contribute to educational and research purposes in the field of child development. Researchers and educators can gain insights from the collective data to better understand developmental patterns and contribute to the advancement of knowledge in this domain.
Sproutopia aims to provide a user-friendly interface accessible to users with varying levels of technological expertise. It strives to create a supportive community for parents and caregivers, fostering collaboration, knowledge sharing, and support among users.
Tech-Stack
In our web application, we utilize the following technologies:
- React: We use React, a powerful JavaScript library, to create the user interface of our application. It allows us to build interactive and responsive components.
- Spring Boot: Our backend is built using the Spring Boot framework. It provides a robust and efficient platform for developing Java-based web applications and microservices.
- MySQL: We utilize MySQL, a popular relational database management system, to store and manage our application’s data. It offers a reliable and scalable solution for persistent data storage.
- Swagger: We leverage Swagger, a comprehensive tooling ecosystem for designing, building, documenting, and consuming RESTful APIs. It allows us to create clear and interactive documentation for our APIs.
- JWT (JSON Web Token): To handle authentication and authorization in our application, we employ JSON Web Tokens. JWTs provide a secure method for transmitting data between parties and are commonly used for authentication purposes.
- JUnit 5: We adopt JUnit 5, a widely used unit testing framework for Java applications, to ensure the quality and correctness of our backend code. It enables us to write and execute tests to verify the expected behavior of our application’s components.
High-Level Architecture
Our high-level architecture diagram is designed with careful consideration to ensure a robust and secure system. Let’s break down each component step by step:
- Frontend : The frontend component serves as the user-facing interface of our system. It focuses on delivering a seamless and intuitive experience for our users. It includes various elements such as user interfaces, forms, interactive components, and visual representations. The frontend is responsible for presenting data, capturing user input, and providing an engaging and user-friendly interface.
- Security Layer : Prioritizing user safety, we have implemented a robust security layer. This layer ensures the protection of sensitive data and user interactions. It includes authentication mechanisms, authorization controls, and encryption techniques to safeguard user information from unauthorized access or malicious activities. By incorporating security measures, we enhance the overall integrity and trustworthiness of our system.
- Backend: The backend comprises three main components that work together to process user requests, execute business logic, and manage data. - API: The API (Application Programming Interface) acts as a gateway between the frontend and backend components. It handles incoming requests from the frontend and delivers appropriate responses. The API defines the available endpoints, request formats, and response structures. It serves as the primary communication channel, allowing the frontend to interact with the backend functionalities. - Services: The services component encapsulates complex business logic and core functionalities of our system. It handles various tasks, such as processing user input, performing calculations, validating data, and orchestrating different operations. Services ensure the smooth execution of business rules and facilitate the overall functioning of the system. - Data Access: The data access layer enables seamless interactions with the database. It handles tasks related to data retrieval, storage, and modification. This component ensures efficient communication between the backend and the database, allowing the system to access and manipulate data as needed. By abstracting the underlying data storage mechanism, the data access layer promotes modularity and flexibility within the system.
- Database: The database component securely stores and manages all the data required by our system. It serves as a persistent storage solution, ensuring the durability and reliability of our data. The database is responsible for organizing and structuring data in a manner that facilitates efficient retrieval and manipulation. By employing appropriate database management systems, we ensure data integrity, scalability, and resilience.
User Interface
Home Page
SignUp
the entry point for new users who want to create an account and access the platform’s features and services.
Login
Parent Dashboard
- Tabs for Navigation: The dashboard includes tabs for easy navigation between different sections. The tabs allow parents to switch between the Height Tracker, Weight Tracker, Calendar, and Baby Details sections to view and track their baby's growth and appointments.
- Height Tracker: This section presents a graph that visualizes the growth of the baby's height over time. It provides insights into the baby's growth patterns and helps parents monitor their height development.
- Weight Tracker: In this section, parents can view a graph that illustrates the baby's weight progression over time. The weight tracker graph enables parents to track their baby's weight gain and ensure healthy growth.
- Calendar: The calendar section displays appointments and important events related to the baby's healthcare. It allows parents to view scheduled appointments, check-ups, and other significant dates. The calendar can help parents stay organized and manage their baby's healthcare needs effectively.
- Make an Appointment: This feature allows parents to schedule appointments with healthcare professionals directly from the dashboard. By clicking on the "Make an Appointment" button
Doctor Dashboard
- Calendar: The dashboard includes a calendar component that displays the doctor's appointments. The appointments are fetched from an API using the axios library and stored in the state variable appointmentsSet. The calendar component is rendered with the appointment data, and each appointment can be clicked to view more details.
- Baby Table: The dashboard displays a table of baby patients, fetched from an API using the axios library and stored in the state variable selectedBabyTableData. Each row in the table represents a baby patient and includes information such as baby ID, baby name, parent name, gender, allocated midwife, and appointment status. The appointment status is determined by checking if there is a pending appointment for the baby. If an appointment is pending, a button is displayed to indicate the status, and clicking on the button opens the appointment details.
- Baby Details Card: When a row in the baby table is clicked, a modal card component called DoctorBabyDetailsCard is displayed. It shows detailed information about the selected baby, including vaccination details. The DoctorBabyDetailsCard component receives the selected baby data as props and provides a callback function to update the table when changes are made.
- Appointment Details Card: When an appointment button is clicked in the baby table or on the calendar, a modal card component called DoctorAppointmentDetailsCard is displayed. It shows detailed information about the selected appointment, including the parent's name, baby's name, scheduled date and time, and venue. The DoctorAppointmentDetailsCard component provides buttons to accept the appointment or suggest a different date. Accepting an appointment sends a POST request to an API to update the appointment status.