Add comprehensive .gitignore
This commit is contained in:
420
docs/maternal-app-tech-stack.md
Normal file
420
docs/maternal-app-tech-stack.md
Normal file
@@ -0,0 +1,420 @@
|
||||
# Technical Stack - Open Source Technologies for Maternal Organization App
|
||||
|
||||
## Mobile Application Development
|
||||
|
||||
### Cross-Platform Framework
|
||||
- **React Native** (Primary Choice)
|
||||
- `react-native`: Core framework
|
||||
- `react-native-cli`: Command line interface
|
||||
- `expo`: Development toolchain and libraries
|
||||
- `react-navigation`: Navigation library
|
||||
- `react-native-paper`: Material Design components
|
||||
- `react-native-elements`: UI toolkit
|
||||
|
||||
### Alternative Native Development
|
||||
- **Flutter** (Alternative Option)
|
||||
- `flutter`: Core SDK
|
||||
- `flutter_bloc`: State management
|
||||
- `provider`: Dependency injection
|
||||
- `get_it`: Service locator
|
||||
- `dio`: HTTP client
|
||||
|
||||
### State Management
|
||||
- **Redux Toolkit**
|
||||
- `@reduxjs/toolkit`: Modern Redux with less boilerplate
|
||||
- `react-redux`: React bindings
|
||||
- `redux-persist`: Offline data persistence
|
||||
- `redux-offline`: Offline-first functionality
|
||||
- `redux-saga`: Side effects management
|
||||
|
||||
### Local Database & Storage
|
||||
- **SQLite** (Primary local database)
|
||||
- `react-native-sqlite-storage`: SQLite for React Native
|
||||
- `typeorm`: Object-relational mapping
|
||||
- `realm`: Alternative mobile database
|
||||
|
||||
- **Async Storage**
|
||||
- `@react-native-async-storage/async-storage`: Key-value storage
|
||||
- `react-native-mmkv`: Fast key-value storage alternative
|
||||
|
||||
## Backend Infrastructure
|
||||
|
||||
### Core Backend Framework
|
||||
- **Node.js** with **NestJS**
|
||||
- `@nestjs/core`: Enterprise-grade Node.js framework
|
||||
- `@nestjs/common`: Common utilities
|
||||
- `@nestjs/platform-express`: Express adapter
|
||||
- `@nestjs/microservices`: Microservices support
|
||||
- `@nestjs/websockets`: WebSocket support
|
||||
- `@nestjs/graphql`: GraphQL integration
|
||||
|
||||
### API Development
|
||||
- **GraphQL**
|
||||
- `apollo-server-express`: GraphQL server
|
||||
- `type-graphql`: TypeScript GraphQL framework
|
||||
- `graphql-subscriptions`: Real-time subscriptions
|
||||
- `graphql-upload`: File upload handling
|
||||
|
||||
- **REST API**
|
||||
- `express`: Web framework
|
||||
- `fastify`: Alternative high-performance framework
|
||||
- `cors`: Cross-origin resource sharing
|
||||
- `helmet`: Security headers
|
||||
- `compression`: Response compression
|
||||
|
||||
### Database Systems
|
||||
- **PostgreSQL** (Primary database)
|
||||
- `pg`: PostgreSQL client
|
||||
- `knex`: SQL query builder
|
||||
- `prisma`: Modern ORM
|
||||
- `typeorm`: Alternative ORM
|
||||
|
||||
- **MongoDB** (Document storage)
|
||||
- `mongoose`: MongoDB object modeling
|
||||
- `mongodb`: Native driver
|
||||
|
||||
### Caching & Performance
|
||||
- **Redis**
|
||||
- `redis`: Redis client
|
||||
- `ioredis`: Advanced Redis client
|
||||
- `bull`: Queue management
|
||||
- `node-cache`: In-memory caching
|
||||
|
||||
- **Elasticsearch** (Search & analytics)
|
||||
- `@elastic/elasticsearch`: Official client
|
||||
- `searchkit`: Search UI components
|
||||
|
||||
## AI & Machine Learning
|
||||
|
||||
### LLM Integration (Proprietary APIs)
|
||||
- **OpenAI API** / **Anthropic Claude API** / **Google Gemini API**
|
||||
- **LangChain** (Framework)
|
||||
- `langchain`: Core library
|
||||
- `@langchain/community`: Community integrations
|
||||
- `@langchain/openai`: OpenAI integration
|
||||
|
||||
### Open Source ML/AI
|
||||
- **TensorFlow.js**
|
||||
- `@tensorflow/tfjs`: Core library
|
||||
- `@tensorflow/tfjs-node`: Node.js bindings
|
||||
- `@tensorflow/tfjs-react-native`: React Native support
|
||||
|
||||
- **ONNX Runtime**
|
||||
- `onnxruntime-node`: Node.js inference
|
||||
- `onnxruntime-react-native`: Mobile inference
|
||||
|
||||
### Natural Language Processing
|
||||
- **Natural**
|
||||
- `natural`: General NLP tasks
|
||||
- `compromise`: Natural language understanding
|
||||
- `sentiment`: Sentiment analysis
|
||||
- `franc`: Language detection
|
||||
|
||||
### Pattern Recognition & Analytics
|
||||
- **Time Series Analysis**
|
||||
- `timeseries-analysis`: Time series forecasting
|
||||
- `simple-statistics`: Statistical functions
|
||||
- `regression`: Regression analysis
|
||||
|
||||
- **Data Processing**
|
||||
- `pandas-js`: Data manipulation
|
||||
- `dataframe-js`: DataFrame operations
|
||||
- `ml-js`: Machine learning algorithms
|
||||
|
||||
## Real-Time Communication
|
||||
|
||||
### WebSocket & Real-Time Sync
|
||||
- **Socket.io**
|
||||
- `socket.io`: Server implementation
|
||||
- `socket.io-client`: Client library
|
||||
- `socket.io-redis`: Redis adapter for scaling
|
||||
|
||||
### Push Notifications
|
||||
- **Firebase Cloud Messaging** (Free tier available)
|
||||
- `firebase-admin`: Server SDK
|
||||
- `react-native-firebase`: React Native integration
|
||||
|
||||
- **Alternative: Expo Push Notifications**
|
||||
- `expo-notifications`: Notification handling
|
||||
- `expo-server-sdk`: Server implementation
|
||||
|
||||
## Voice & Audio Processing
|
||||
|
||||
### Voice Input & Recognition
|
||||
- **Whisper** (OpenAI's open source)
|
||||
- `whisper`: Speech recognition
|
||||
- `react-native-voice`: Voice recognition wrapper
|
||||
|
||||
- **Web Speech API**
|
||||
- `react-speech-kit`: React speech components
|
||||
- `speech-to-text`: Browser-based recognition
|
||||
|
||||
### Audio Processing
|
||||
- **FFmpeg**
|
||||
- `fluent-ffmpeg`: Node.js wrapper
|
||||
- `react-native-ffmpeg`: Mobile integration
|
||||
|
||||
- **Web Audio API**
|
||||
- `tone.js`: Audio synthesis and effects
|
||||
- `wavesurfer.js`: Audio visualization
|
||||
|
||||
## Security & Privacy
|
||||
|
||||
### Authentication & Authorization
|
||||
- **Supabase** (Open source Firebase alternative)
|
||||
- `@supabase/supabase-js`: Client library
|
||||
- `@supabase/auth-helpers`: Authentication utilities
|
||||
|
||||
- **Passport.js**
|
||||
- `passport`: Authentication middleware
|
||||
- `passport-jwt`: JWT strategy
|
||||
- `passport-local`: Local strategy
|
||||
|
||||
### Encryption & Security
|
||||
- **Cryptography**
|
||||
- `bcrypt`: Password hashing
|
||||
- `jsonwebtoken`: JWT tokens
|
||||
- `crypto-js`: Encryption utilities
|
||||
- `node-forge`: Cryptography toolkit
|
||||
|
||||
- **Security Middleware**
|
||||
- `helmet`: Security headers
|
||||
- `express-rate-limit`: Rate limiting
|
||||
- `express-validator`: Input validation
|
||||
- `hpp`: HTTP parameter pollution prevention
|
||||
|
||||
### COPPA/GDPR Compliance
|
||||
- **Age Verification**
|
||||
- `age-calculator`: Age calculation utilities
|
||||
- Custom implementation required
|
||||
|
||||
- **Data Privacy**
|
||||
- `anonymize`: Data anonymization
|
||||
- `gdpr-guard`: GDPR compliance helpers
|
||||
|
||||
## File & Media Management
|
||||
|
||||
### Image Processing
|
||||
- **Sharp**
|
||||
- `sharp`: High-performance image processing
|
||||
- `react-native-image-resizer`: Mobile image resizing
|
||||
- `react-native-image-picker`: Image selection
|
||||
|
||||
### File Storage
|
||||
- **MinIO** (Self-hosted S3-compatible)
|
||||
- `minio`: Object storage server
|
||||
- `multer`: File upload middleware
|
||||
- `multer-s3`: S3 storage engine
|
||||
|
||||
### Document Processing
|
||||
- **PDF Generation**
|
||||
- `pdfkit`: PDF generation
|
||||
- `puppeteer`: HTML to PDF conversion
|
||||
- `react-native-pdf`: PDF viewing
|
||||
|
||||
## Calendar & Scheduling
|
||||
|
||||
### Calendar Integration
|
||||
- **Calendar Libraries**
|
||||
- `node-ical`: iCal parsing
|
||||
- `ical-generator`: iCal generation
|
||||
- `react-native-calendars`: Calendar components
|
||||
- `react-big-calendar`: Web calendar component
|
||||
|
||||
### Scheduling
|
||||
- **Cron Jobs**
|
||||
- `node-cron`: Task scheduling
|
||||
- `agenda`: Job scheduling
|
||||
- `bull`: Queue-based job processing
|
||||
|
||||
## Integration Libraries
|
||||
|
||||
### External Service Integrations
|
||||
- **Google APIs**
|
||||
- `googleapis`: Google services client
|
||||
- `@react-native-google-signin/google-signin`: Google sign-in
|
||||
|
||||
- **Microsoft Graph**
|
||||
- `@microsoft/microsoft-graph-client`: Graph API client
|
||||
|
||||
- **School Platforms**
|
||||
- Custom API integrations required
|
||||
- `axios`: HTTP client for API calls
|
||||
|
||||
### Smart Home Integration
|
||||
- **Home Assistant**
|
||||
- `home-assistant-js-websocket`: WebSocket client
|
||||
|
||||
- **Voice Assistants**
|
||||
- `ask-sdk`: Alexa Skills Kit
|
||||
- `actions-on-google`: Google Assistant
|
||||
|
||||
## Data Visualization & Analytics
|
||||
|
||||
### Charting Libraries
|
||||
- **D3.js Ecosystem**
|
||||
- `d3`: Core visualization library
|
||||
- `react-native-svg`: SVG support for React Native
|
||||
- `victory-native`: React Native charts
|
||||
|
||||
- **Chart.js**
|
||||
- `chart.js`: Charting library
|
||||
- `react-chartjs-2`: React wrapper
|
||||
- `react-native-chart-kit`: React Native charts
|
||||
|
||||
### Analytics
|
||||
- **Matomo** (Open source analytics)
|
||||
- `matomo-tracker`: Analytics tracking
|
||||
|
||||
- **PostHog** (Open source product analytics)
|
||||
- `posthog-js`: JavaScript client
|
||||
- `posthog-react-native`: React Native client
|
||||
|
||||
## Development Tools
|
||||
|
||||
### Testing Frameworks
|
||||
- **Unit Testing**
|
||||
- `jest`: Testing framework
|
||||
- `@testing-library/react-native`: React Native testing
|
||||
- `enzyme`: Component testing
|
||||
|
||||
- **E2E Testing**
|
||||
- `detox`: React Native E2E testing
|
||||
- `appium`: Cross-platform mobile testing
|
||||
- `cypress`: Web testing
|
||||
|
||||
### Code Quality
|
||||
- **Linting & Formatting**
|
||||
- `eslint`: JavaScript linter
|
||||
- `prettier`: Code formatter
|
||||
- `husky`: Git hooks
|
||||
- `lint-staged`: Pre-commit linting
|
||||
|
||||
### Development Environment
|
||||
- **Build Tools**
|
||||
- `webpack`: Module bundler
|
||||
- `babel`: JavaScript compiler
|
||||
- `metro`: React Native bundler
|
||||
|
||||
- **Development Servers**
|
||||
- `nodemon`: Node.js auto-restart
|
||||
- `concurrently`: Run multiple commands
|
||||
- `dotenv`: Environment variables
|
||||
|
||||
## DevOps & Infrastructure
|
||||
|
||||
### Container Orchestration
|
||||
- **Docker**
|
||||
- `docker`: Containerization
|
||||
- `docker-compose`: Multi-container apps
|
||||
|
||||
- **Kubernetes** (for scaling)
|
||||
- `kubernetes`: Container orchestration
|
||||
- `helm`: Kubernetes package manager
|
||||
|
||||
### CI/CD
|
||||
- **GitHub Actions** / **GitLab CI** / **Jenkins**
|
||||
- `semantic-release`: Automated versioning
|
||||
- `standard-version`: Changelog generation
|
||||
|
||||
### Monitoring & Logging
|
||||
- **Sentry** (Open source error tracking)
|
||||
- `@sentry/node`: Node.js SDK
|
||||
- `@sentry/react-native`: React Native SDK
|
||||
|
||||
- **Winston** (Logging)
|
||||
- `winston`: Logging library
|
||||
- `morgan`: HTTP request logger
|
||||
|
||||
### Message Queue
|
||||
- **RabbitMQ**
|
||||
- `amqplib`: RabbitMQ client
|
||||
|
||||
- **Apache Kafka** (for high scale)
|
||||
- `kafkajs`: Kafka client
|
||||
|
||||
## Additional Utilities
|
||||
|
||||
### Date & Time
|
||||
- `dayjs`: Lightweight date library
|
||||
- `date-fns`: Date utility library
|
||||
- `moment-timezone`: Timezone handling
|
||||
- `react-native-date-picker`: Date picker component
|
||||
|
||||
### Forms & Validation
|
||||
- `react-hook-form`: Form management
|
||||
- `yup`: Schema validation
|
||||
- `joi`: Object schema validation
|
||||
- `react-native-masked-text`: Input masking
|
||||
|
||||
### Localization
|
||||
- `i18next`: Internationalization framework
|
||||
- `react-i18next`: React integration
|
||||
- `react-native-localize`: Device locale detection
|
||||
|
||||
### Utilities
|
||||
- `lodash`: Utility functions
|
||||
- `uuid`: UUID generation
|
||||
- `validator`: String validators
|
||||
- `numeral`: Number formatting
|
||||
|
||||
## Infrastructure Services (Self-Hosted Options)
|
||||
|
||||
### Backend as a Service
|
||||
- **Supabase** (Complete backend solution)
|
||||
- **Appwrite** (Alternative BaaS)
|
||||
- **Parse Server** (Mobile backend)
|
||||
|
||||
### Search Infrastructure
|
||||
- **Meilisearch** (Fast search engine)
|
||||
- **Typesense** (Typo-tolerant search)
|
||||
|
||||
### Email Service
|
||||
- **Nodemailer** with SMTP
|
||||
- **SendGrid** (Free tier available)
|
||||
- **Postal** (Self-hosted)
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Mobile Performance
|
||||
- `react-native-fast-image`: Optimized image loading
|
||||
- `react-native-super-grid`: Efficient grid rendering
|
||||
- `recyclerlistview`: High-performance lists
|
||||
- `react-native-reanimated`: Smooth animations
|
||||
|
||||
### Backend Performance
|
||||
- `cluster`: Node.js clustering
|
||||
- `pm2`: Process management
|
||||
- `compression`: Response compression
|
||||
- `memory-cache`: In-memory caching
|
||||
|
||||
## Accessibility Tools
|
||||
- `react-native-accessibility`: Accessibility utilities
|
||||
- `react-native-tts`: Text-to-speech
|
||||
- `react-native-screen-reader`: Screen reader detection
|
||||
|
||||
## Development Recommendations
|
||||
|
||||
### Minimum Viable Stack
|
||||
1. **Frontend**: React Native + Expo
|
||||
2. **Backend**: NestJS + PostgreSQL
|
||||
3. **Real-time**: Socket.io
|
||||
4. **AI**: OpenAI/Claude API + LangChain
|
||||
5. **Auth**: Supabase Auth
|
||||
6. **Storage**: MinIO/Supabase Storage
|
||||
7. **Cache**: Redis
|
||||
8. **Search**: Meilisearch
|
||||
|
||||
### Scalability Considerations
|
||||
- Start with monolithic backend, prepare for microservices
|
||||
- Use message queues early for async operations
|
||||
- Implement caching strategy from day one
|
||||
- Design for offline-first mobile experience
|
||||
- Plan for horizontal scaling with Kubernetes
|
||||
|
||||
### Security Priorities
|
||||
- Implement end-to-end encryption for sensitive data
|
||||
- Use JWT with refresh tokens
|
||||
- Apply rate limiting on all endpoints
|
||||
- Regular security audits with OWASP tools
|
||||
- COPPA/GDPR compliance from the start
|
||||
Reference in New Issue
Block a user