{"id":24818916,"url":"https://github.com/mohammedmoataz/mobicare","last_synced_at":"2025-10-13T20:30:48.085Z","repository":{"id":178352621,"uuid":"658818024","full_name":"MohammedMoataz/MobiCare","owner":"MohammedMoataz","description":"MobiCare is a mobile application, It facilitates the methods of consultation and follow-up between doctors and their patients. It includes all required medical data about the patient, the patient is allowed to check them whenever he wants and also he can give access to his doctor to get and upload his medical records.","archived":false,"fork":false,"pushed_at":"2024-08-18T02:25:30.000Z","size":63282,"stargazers_count":6,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T16:26:16.607Z","etag":null,"topics":["agile-methodologies","authentication","blockchain","express-js","firebase","firebase-firestore","flutter","graduation-project","healthcare-application","mysql-database","node-js","nosql-data-storage","restful-api","smart-contracts"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/playlist?list=PLDvEHN3yfSA4InPmaudgLrFT239pGdWQy","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MohammedMoataz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-26T14:50:48.000Z","updated_at":"2024-10-06T03:31:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"a185196f-2366-437e-b173-263fc77cc06c","html_url":"https://github.com/MohammedMoataz/MobiCare","commit_stats":null,"previous_names":["mohammedmoataz/mobicare"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/MohammedMoataz/MobiCare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedMoataz%2FMobiCare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedMoataz%2FMobiCare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedMoataz%2FMobiCare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedMoataz%2FMobiCare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MohammedMoataz","download_url":"https://codeload.github.com/MohammedMoataz/MobiCare/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammedMoataz%2FMobiCare/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016921,"owners_count":26085908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agile-methodologies","authentication","blockchain","express-js","firebase","firebase-firestore","flutter","graduation-project","healthcare-application","mysql-database","node-js","nosql-data-storage","restful-api","smart-contracts"],"created_at":"2025-01-30T17:55:22.519Z","updated_at":"2025-10-13T20:30:44.398Z","avatar_url":"https://github.com/MohammedMoataz.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MobiCare\n\n# ![logo](https://github.com/MohammedMoataz/MobiCare/assets/81831838/2e8b1962-d912-4a38-b01d-2265144bbf8b \"MobiCare logo\") MobiCare\n\n#### MobiCare healthcare system uses smart contracts to handle procedure records and stores medical records in BlockChain.\n\nMobiCare is a mobile application, It facilitates the methods of consultation and follow-up between doctors and their patients.\nIt includes all required data about the patient including prescriptions, medical reports, radiology images, diagnoses, treatment plans, allergies, laboratory results, etc…, the patient is allowed to check them whenever he wants and also he can give access to his doctor to get and upload his medical records.\nThe system also provides the patient with an alarm for medication appointments, where he is reminded of the date of each medication that he has entered.\nThe application also allows doctors to upload videos that help spread awareness for users throughout the application and also allows the patient to like and write comments on these videos.\n\n---\n\n# MobiCare System Architecture\n\n## Generic System Architecture\n![MobiCare System Architecture-Generic](https://github.com/MohammedMoataz/MobiCare/assets/81831838/a3db56b1-fced-4c63-9260-585cac7c147a)\n\nAs we see, MobiCare has many components and uses many technologies to store its data.\nSo, we can explain MobiCare architecture in four main components/technologies:\n- Mobile Application.\n- Relational Database.\n- Document Data Store.\n- BlockChain.\n\n\n## Mobile Architecture\n\u003cimg src=\"https://github.com/MohammedMoataz/MobiCare/assets/81831838/dd5e8ead-9ef9-4bcb-a1f4-b3b66562ecca\" alt=\"Mobile Architecture\" height=\"500px\" /\u003e\n\nMVVM (Model-View-ViewModel)\nMVVM is useful to move business logic from view to ViewModel and Model. ViewModel is the mediator between View and Model which carry all user events and return back the result.\nThe key benefits of using MVVM are\nBusiness logic is separate from UI.\nThe view is independent from the ViewModel class and only reads the state from ViewModel\nCode will be easy to maintain and update in terms of logic \u0026 UI\nEasy to Write the test cases for the project\n\n\n## Server-Side Architecture\n\u003cimg src=\"https://github.com/MohammedMoataz/MobiCare/assets/81831838/d5b304b8-68be-4484-9d0c-1bddfd505125\" alt=\"Server-Side Architecture\" height=\"500px\" /\u003e\n\nWe worked with MVC architecture (Model, View, and Controller) by replacing the view part with REST APIs.\nAlso, the server-side provides us with an authentication system that verifies the permission of each role (patient, doctor, and admin).\n- Model is the data part.\n- View is the REST APIs part.\n- Controller is the request-response handler.\n\n\n## Document Data Store\n\u003cimg src=\"https://github.com/MohammedMoataz/MobiCare/assets/81831838/2ffc7a81-8fd1-4d80-b783-61da7e462e30\" alt=\"Document Data Store\" height=\"500px\" /\u003e\n\nWe used the Firestore feature in the Firebase - which is (BaaS) - as a document data store and authentication system.\nFirebase Firestore provides many features:\n- application layers\n- unidirectional data flow\n- mutable and immutable state\n- stream-based architecture\n\nIt facilitates dealing with data in several ways:\nAdding new features becomes easier because you can build upon the foundation that you already have.\nThe codebase becomes easier to understand, and you're likely to spot some recurring patterns and conventions as you read the code.\nComponents have clear responsibilities and don't do too many things. This happens by design if your architecture is highly composable.\nEntire classes of problems go away (more on this later).\nYou can have different kinds of components, by defining separate application layers for different areas of concern (UI, logic, services)\n\n\n## BlockChain Environment\n\u003cimg src=\"https://github.com/MohammedMoataz/MobiCare/assets/81831838/04b35763-d209-40bf-b92f-f2068246668b\" alt=\"BlockChain Environment\" height=\"500px\" /\u003e\n\nTo connect to the blockchain network we used:\n#### In the local environment:\n- Truffle: Building the smart contracts. compile and deploy our smart contracts. Dealing with our smart contracts.\n- Ganache: Local blockchain network. Deploying our smart contract. Providing test accounts.\n\n#### Providers to deploy on blockchain network:\n- Infura: Providing test Ethereum to deal with the blockchain network. Providing rpcURL and wsURL to our blockchain project.\n- MetaMask: Private Wallet to deal with blockchain activities. Connected to Flutter to deal with the blockchain network.\n\n#### Blockchain Network:\n- Sepolia Test Network: Deployed our smart contract on. Our blockchain network deals with our smart contract.\n- Ethereum: The main network and the main cryptocurrency which our smart contract deals with. Any transaction created in the Sepolia test network must pay gas fees with Ethereum cryptocurrency.\n- IPFS (Interplanetary File System): which we use to store our sensitive data - medical records - and respond with cid (content identifier), and then we store this cid in the blockchain network with the patient’s wallet address to access it when he wants.\n- Web3.Storage: like Infura, it helps us to deal with IPFS to store and access our files in the IPFS Distributed network. It's a bridge between us and IPFS.\n\n---\n\n# Demo\n\n#### Doctor Perview:\nhttps://github.com/MohammedMoataz/MobiCare/assets/81831838/75271e59-3424-410a-a6a0-91c100ba98e5\n\n#### Patient Perview:\nhttps://github.com/MohammedMoataz/MobiCare/assets/81831838/16985996-7dbb-407d-b765-7e3b71ca74dd\n\n![mobicare](https://github.com/MohammedMoataz/MobiCare/assets/81831838/a51d48f3-5457-4eeb-91c1-d0af2d5f4dc2)\n\n#### MobiCare Collection APIs:\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/catch-code/workspace/mobicare) \nNote: Don't forget to run the server\n\n## For more information about the system, implementation, and technologies:\n\n - [Check The Documentation](https://docs.google.com/document/d/1nsXOrfUfKaulsYXMVjJG-JX4o5VT4zXMmBrDNxSBChc/edit?usp=sharing)\n - [Check The Presentation](https://docs.google.com/presentation/d/1rFsaqCy1QIhrT6Yzgdk3_Cq70DdL3QZuRzHdD5ECEkc/edit?usp=sharing)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammedmoataz%2Fmobicare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohammedmoataz%2Fmobicare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammedmoataz%2Fmobicare/lists"}