This directory contains detailed technical implementation documentation for specific features of the Meshtastic Node Mapper. These documents are intended for developers who want to understand the technical details of how features are implemented.
Distance Display Implementation
- Haversine formula implementation
- Distance calculation service architecture
- Frontend distance display components
- Location history caching strategy
- Performance optimizations
- Testing approach
Related Files:
backend/src/services/distance-calculation.service.tsfrontend/src/utils/distanceCalculation.tsbackend/src/services/longest-links.service.ts
Elevation Profile Implementation
- Elevation API integration
- Profile calculation algorithm
- Fresnel zone clearance computation
- Terrain obstruction detection
- Caching and performance
- Error handling
Related Files:
backend/src/services/elevation-profile.service.tsbackend/src/services/line-of-sight.service.tsfrontend/src/pages/LineOfSightPage.tsx
Responsive Layout Implementation
- Mobile-first CSS architecture
- Breakpoint system
- Touch-optimized controls
- Bottom sheet navigation
- Adaptive font sizing
- Performance considerations
Related Files:
frontend/src/styles/responsive-layout.cssfrontend/src/styles/mobile.cssfrontend/src/components/Mobile/
Packet Grouping Implementation
- Grouping algorithm design
- Aggregation statistics calculation
- Relay node formatting
- Performance optimization
- Database query strategy
- Frontend integration
Related Files:
backend/src/services/packet-grouping.service.tsfrontend/src/pages/PacketsPage.tsxbackend/src/routes/packets.ts
- Service lockup symptoms
- Diagnostic procedures
- Common causes and solutions
- Debugging tools and scripts
- Prevention strategies
- Monitoring recommendations
Related Files:
scripts/debug-lockup.shscripts/monitor-health.shdocs/DEBUGGING_SERVICE_LOCKUPS.md
- Distance Calculation Service
- Elevation Profile Service
- Line of Sight Service
- Gateway Comparison Service
- Packet Grouping Service
- RF Link Services (Traceroute & Packet)
- Data Cleanup Job
- Responsive Layout System
- Mobile Navigation
- Distance Display
- Elevation Profile Charts
- Packet Grouping UI
- Theme Management
- URL State Management
- RF Link Indexes
- Query Optimization
- Caching Strategies
- Connection Pool Management
- Data Retention Policies
- MQTT Message Processing
- WebSocket Real-time Updates
- API Endpoint Design
- Frontend-Backend Communication
- User Guide - End-user feature documentation
- Feature Guides - Detailed feature usage guides
- API Guide - API endpoint documentation
- Architecture - System architecture overview
- Development Setup - Development environment
- Contributing - Contribution guidelines
- Network Map Implementation - RF link visualization
- Dashboard Analysis - Dashboard architecture
- UI/UX Best Practices - Design patterns
- Code Analysis - Codebase analysis
- Debugging Service Lockups - Service issues
- Troubleshooting Guide - General troubleshooting
- Database Troubleshooting - Database issues
All backend services follow a consistent pattern:
class FeatureService {
constructor(private prisma: PrismaClient) {}
async getData(params: Params): Promise<Result> {
// Validation
// Database query
// Business logic
// Return formatted result
}
}Frontend components use React hooks and TypeScript:
export const FeatureComponent: React.FC<Props> = ({ prop1, prop2 }) => {
const [state, setState] = useState<State>(initialState);
useEffect(() => {
// Side effects
}, [dependencies]);
return <div>{/* JSX */}</div>;
};REST endpoints follow RESTful conventions:
router.get('/api/feature/:id', async (req, res) => {
try {
// Validation
const result = await service.getData(req.params.id);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});- Service layer logic
- Utility functions
- Component rendering
- State management
- Distance calculations
- RF link detection
- Data transformations
- Algorithm correctness
- API endpoints
- Database operations
- Frontend workflows
- End-to-end scenarios
- Database query optimization
- Caching strategies (Redis)
- Connection pooling
- Batch operations
- Index usage
- Code splitting
- Lazy loading
- Memoization
- Virtual scrolling
- Debouncing/throttling
- API response compression
- WebSocket for real-time data
- Efficient data serialization
- Pagination
- Incremental loading
- Parameter sanitization
- Type checking
- Range validation
- SQL injection prevention
- JWT token validation
- Role-based access control
- API key management
- Rate limiting
- Encryption at rest
- Secure communication (HTTPS)
- Sensitive data handling
- Audit logging
- Environment variables
- Configuration files
- Feature flags
- Service discovery
- Health checks
- Performance metrics
- Error tracking
- Audit trails
- Horizontal scaling
- Load balancing
- Database replication
- Caching layers
When adding new features:
- Document the Implementation: Create a detailed implementation guide
- Follow Patterns: Use established patterns and conventions
- Write Tests: Include unit, integration, and property-based tests
- Update Documentation: Keep all documentation in sync
- Performance: Consider performance implications
- Security: Follow security best practices
For implementation questions:
- Review existing implementation docs
- Check the Developer Guide
- Ask in GitHub Discussions
- Submit issues for bugs or unclear documentation
Last Updated: December 2024
Version: 1.1.0