- Completed mobile-first platform strategy research - React Native selected for iOS and Android mobile apps - React selected for web companion app - 70-80% code sharing between mobile and web - Excellent health sensor integration (HealthKit, Health Connect) - QR scanning, encryption, and background sync support - Created comprehensive frontend research documentation - Updated README with platform strategy - Updated tech stack decisions Key advantages: - Single language (TypeScript) reduces development cost - 70-80% code sharing between mobile and web - Excellent health sensor integration - Great chart visualization for web companion - Faster time to market Next: State management research (Redux vs Zustand)
90 lines
2.7 KiB
Markdown
90 lines
2.7 KiB
Markdown
# Normogen
|
|
|
|
## Overview
|
|
|
|
Normogen is a privacy-focused health data tracking and management platform. The name comes from Mapudungun, relating to Balanced Life.
|
|
|
|
## Vision
|
|
|
|
To record as many variables related to health as possible, store them in a secure, private manner, to be used by you, not by corporations. From medication reminders to pattern analysis, Normogen puts you in control of your health data.
|
|
|
|
## Technology Stack
|
|
|
|
### Backend
|
|
- **Framework**: Axum 0.7.x
|
|
- **Runtime**: Tokio 1.x
|
|
- **Middleware**: Tower, Tower-HTTP
|
|
- **Database**: MongoDB (with zero-knowledge encryption)
|
|
- **Language**: Rust
|
|
|
|
### Mobile (iOS + Android)
|
|
- **Framework**: React Native 0.73+
|
|
- **Language**: TypeScript
|
|
- **Health Sensors**: react-native-health, react-native-google-fit
|
|
- **Encryption**: react-native-quick-crypto
|
|
|
|
### Web
|
|
- **Framework**: React 18+
|
|
- **Language**: TypeScript
|
|
- **Charts**: Recharts
|
|
|
|
### Deployment
|
|
- Docker on Linux
|
|
|
|
## Platform Strategy
|
|
|
|
**Primary: Mobile Apps** - Daily health tracking, sensor integration, QR scanning, push notifications
|
|
|
|
**Secondary: Web Browser** - Extensive reporting, visualization, profile management
|
|
|
|
## Key Features
|
|
|
|
- Zero-knowledge encryption
|
|
- Multi-person profiles
|
|
- Family structure management
|
|
- Secure sharing with expiring links
|
|
- Mobile apps with health sensor integration
|
|
- Web interface for complex visualizations
|
|
|
|
## Security Model
|
|
|
|
- Client-side encryption: Data encrypted before leaving device
|
|
- Zero-knowledge: Server stores only encrypted data
|
|
- Proton-style encryption: AES-256-GCM with PBKDF2 key derivation
|
|
- Shareable links: Self-contained decryption keys in URLs
|
|
- Privacy-first: No data selling, subscription-based revenue
|
|
|
|
## Documentation
|
|
|
|
- [Introduction](./introduction.md) - Project vision and detailed feature specification
|
|
- [Encryption Implementation Guide](./encryption.md) - Zero-knowledge encryption architecture
|
|
- [Research](./thoughts/research/) - Technical research and planning documents
|
|
|
|
## Development Status
|
|
|
|
Phase: Planning/Documentation
|
|
|
|
### Completed
|
|
- Project vision and requirements
|
|
- Security architecture design
|
|
- Encryption implementation guide
|
|
- Git repository initialization
|
|
- **Rust framework selection: Axum**
|
|
- **Mobile/Web framework selection: React Native + React**
|
|
|
|
### Next Steps
|
|
- State management research (Redux vs Zustand)
|
|
- Authentication system design (JWT with recovery phrases)
|
|
- Database schema design
|
|
- Create proof-of-concept with Axum
|
|
- Implement basic CRUD API
|
|
- Build mobile apps with health sensor integration
|
|
- Build web companion app
|
|
- Add encryption layer
|
|
- Implement sharing functionality
|
|
|
|
## Open Source
|
|
|
|
Normogen is open-source. Both server and client code will be publicly available.
|
|
|
|
Note: This project is currently in the planning phase. No implementation code has been written yet.
|