Welcome to the Meshtastic Node Mapper developer documentation. This section contains technical information for developers who want to contribute to, extend, or understand the codebase.
- Development Setup - Set up your development environment
- Architecture Overview - System design and components
- Project Structure - Codebase organization
- API Development - Creating and modifying API endpoints
- Frontend Development - React components and UI development
- Database Development - Schema management and queries
- Testing Guide - Writing and running tests
- Contributing Guidelines - How to contribute to the project
- Code Style Guide - Coding standards and conventions
- Pull Request Process - Submitting changes
- API Reference - Complete API documentation
- Database Schema - Data models and relationships
- Configuration Reference - All configuration options
- Implementation Guides - Detailed technical implementation documentation
- Read the Contributing Guidelines
- Set up your Development Environment
- Review the Architecture Overview
- Check out Good First Issues
- Review the API Development Guide
- Check the API Reference
- Understand the Database Schema
- Write tests following the Testing Guide
- Read the Frontend Development Guide
- Review the Component Structure
- Follow the Code Style Guide
- Test with the Testing Guide
- Runtime: Node.js 18+ with TypeScript
- Framework: Express.js
- Database: PostgreSQL 15+ with TimescaleDB extension
- ORM: Prisma for type-safe database access
- Cache: Redis for session and data caching
- Real-time: Socket.IO for WebSocket connections
- MQTT: MQTT.js for message broker integration
- Testing: Jest with Supertest
- Framework: React 18+ with TypeScript
- State Management: Redux Toolkit
- Routing: React Router v6
- UI Library: Material-UI (MUI)
- Maps: Leaflet.js with React-Leaflet
- Charts: Chart.js with react-chartjs-2
- HTTP Client: Axios
- Testing: Jest with React Testing Library
- Containerization: Docker with multi-stage builds
- Orchestration: Docker Compose
- Reverse Proxy: Nginx
- Message Broker: Eclipse Mosquitto
- Monitoring: Prometheus (optional)
- Visualization: Grafana (optional)
- Fork the repository
- Clone your fork locally
- Create a feature branch
- Make your changes with tests
- Test thoroughly
- Commit with conventional commit messages
- Push to your fork
- Submit a pull request
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Example:
feat(api): add node filtering by hardware type
Implement filtering endpoint that allows users to filter nodes
by hardware model. Includes tests and documentation.
Closes #123
# Run linting
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run format# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run specific test file
npm test -- path/to/test.ts
# Run in watch mode
npm test -- --watch# Check TypeScript types
npm run type-check
# Check types in watch mode
npm run type-check:watch- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and community discussion
- Pull Requests: Code review and contributions
- Issues: For bugs, features, and technical discussions
- Discussions: For questions, ideas, and community chat
- Pull Requests: For code review and implementation discussion
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). By contributing, you agree that your contributions will be licensed under the same license.
We are committed to providing a welcoming and inclusive environment. Please read and follow our Code of Conduct when participating in this project.
Ready to contribute? Start with the Development Setup guide!