HypoThyroManage is a comprehensive mobile health management system designed for patients with hypothyroidism. It allows patients to track their symptoms, medication intake, and communicate with healthcare professionals in real-time. This project was developed as part of a graduation thesis and supported by the TÜBİTAK 2209-A program.
- Multi-Role Support: Patient, Doctor, and Admin roles.
- Symptom Reporting: Patients can report their symptoms weekly.
- Medication Tracking: Daily tracking with reminder notifications.
- Real-Time Chat: Encrypted, secure messaging between doctors and patients using WebSocket (Socket.IO).
- Notifications: Push notifications using Expo.
- Secure Infrastructure: HTTPS (SSL), Nginx reverse proxy, Docker-based architecture, fail2ban protection.
🖥️ Frontend
- ⚛️ React Native (Expo)
- 🔐 JWT Authentication
- 📡 Axios
🛠️ Backend
- 🟩 Node.js
- 🚀 Express.js
- 🗄️ MongoDB + Mongoose
- 🔗 Socket.IO
🔒 Security Enhancements
- MongoDB user with limited
readWriteNoDroprole - Docker containers run as non-root users
- Environment secrets handled via
.envfile - Healthchecks configured for both app and database containers
docker-bench-securityused for auditing Docker configuration
🚢 Infrastructure
- 🐳 Docker
- 🌐 Nginx
- 🔒 Let's Encrypt SSL
/frontend
- src/
- App.js
- package.json
- Dockerfile
/backend
- src/
- services/
- docker-compose.yml
- Dockerfile
- mongo-init/
✅ MongoDB initialization scripts are placed in
/backend/mongo-init/with roles and users loaded from environment.
@startuml
actor Patient
actor Doctor
entity "Mobile App" as App
entity "Backend API" as API
entity "MongoDB" as DB
Patient -> App : Login / Submit Symptoms / Chat
App -> API : API Requests (REST, WebSocket)
API -> DB : Data Operations (Save, Retrieve)
API -> App : Response / Push Notification
Doctor -> App : View Reports / Chat
@endumlCreate your .env file based on .env.example:
cp .env.example .envcd frontend
npm install
npm startcd backend
npm install
npm run devdocker-compose up --build- Healthchecks in
docker-compose.yml - Non-root users in Dockerfiles
- Environment-based MongoDB initialization
- Secrets loaded via
.env - Docker hardening verified via Docker Bench Security
- Amro Mousa Ismail Baseet
MIT License.