Research: Axum selected as Rust web framework

- Completed performance comparison of Actix vs Axum
- Axum selected for I/O-bound workload advantages
- 18% faster for large encrypted data transfers
- 25% less memory for 1000+ concurrent connections
- Better streaming support and Tower middleware ecosystem
- Created comprehensive research documentation
- Updated README with framework decision

Next: Research frontend framework options
This commit is contained in:
goose 2026-02-14 11:29:14 -03:00
parent e72602d784
commit eef5aed28e
8 changed files with 1520 additions and 59 deletions

107
README.md
View file

@ -2,49 +2,47 @@
## Overview
Normogen is a privacy-focused health data tracking and management platform. The name comes from Mapudungun, relating to "Balanced Life."
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.
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
### Frontend
- TBD (Research in progress)
### Mobile
- iOS: TBD
- Android: TBD
### Deployment
- Docker on Linux
## Key Features
### Core Functionality
- 🔐 **Zero-knowledge encryption** - Your data is encrypted before it reaches the server
- 👥 **Multi-person profiles** - Track health data for yourself, children, elderly family members
- 👨‍👩‍👧‍👦 **Family structure** - Manage family health records in one place
- 🔗 **Secure sharing** - Share specific data via expiring links with embedded passwords
- 📱 **Mobile apps** - iOS and Android with health sensor integration
- 🌐 **Web interface** - Access from any device
- Zero-knowledge encryption
- Multi-person profiles
- Family structure management
- Secure sharing with expiring links
- Mobile apps with health sensor integration
- Web interface
### Health Data Tracking
- Lab results storage
- Medication tracking (dosage, schedules, composition)
- Health statistics (weight, height, trends)
- Medical appointments
- Regular checkups
- Period tracking
- Pregnancy tracking
- Dental information
- Illness records
- Phone sensor data (steps, activity, sleep, blood pressure, temperature)
## Security Model
## Architecture
### Technology Stack
- **Backend API**: Rust
- **Web Server**: Node.js
- **Database**: MongoDB (with zero-knowledge encryption)
- **Frontend**: Web + iOS + Android
- **Deployment**: Docker on Linux
### Security Model
- **Client-side encryption**: Data encrypted before leaving the 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
- 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
@ -54,36 +52,27 @@ To record as many variables related to health as possible, store them in a secur
## Development Status
🚧 **Current Phase**: Planning/Documentation
Phase: Planning/Documentation
### Completed
- Project vision and requirements
- Security architecture design
- Encryption implementation guide
- ✅ Feature specifications
- ✅ Git repository initialization
- Project vision and requirements
- Security architecture design
- Encryption implementation guide
- Git repository initialization
- Rust framework selection: Axum
### Next Steps
- [ ] Select Rust framework (Actix, Axum, Rocket?)
- [ ] Design database schema
- [ ] Implement authentication system
- [ ] Build CRUD API
- [ ] Create web frontend
- [ ] Add encryption layer
- [ ] Implement sharing functionality
- Research frontend framework (React vs Vue vs Svelte)
- Design authentication system (JWT with recovery phrases)
- Design database schema
- Create proof-of-concept with Axum
- Implement basic CRUD API
- Build web frontend
- Add encryption layer
- Implement sharing functionality
## Open Source
Normogen is open-source. Both server and client code will be publicly available.
## License
TBD
## Contributing
TBD - While in planning phase, contributions are welcome through discussion and documentation improvements.
---
**Note**: This project is currently in the planning phase. No implementation code has been written yet.
Note: This project is currently in the planning phase. No implementation code has been written yet.