Nomad Crew
An app designed for creating disposable groups for trips, featuring live location sharing, messaging, media sharing, and expense splitting.
Ionic (VueJS) + Capacitor
- User authentication
- Group creation and management interface
- Live map with location tracking
- Chat functionality
- Media sharing capabilities
- Expense management and splitting tool
- Utilize VueJS's reactivity and Ionic's rich set of UI components for building a seamless user experience across web and mobile platforms.
- Employ Capacitor to integrate native device features like geolocation and camera access in a cross-platform manner.
- Focus on creating a responsive design that ensures a smooth, native-like experience on any device.
- Prioritize security and privacy in features, especially in location sharing and in-app messaging, adhering to best practices.
- Test extensively in a web environment to streamline development before compiling for Android or iOS platforms.
Go with gRPC for service communication
- User Service: Manages user authentication and profile settings.
- Group Service: Handles group creation, joining, and administration.
- Location Service: Provides live location tracking and sharing.
- Messaging Service: Facilitates in-app messaging and media sharing.
- Media Service: Manages uploading and access to shared media content.
- Expense Service: Offers expense recording and splitting among group members.
- Implement robust error handling and logging strategies for clarity and maintenance ease.
- Use gRPC for fast, efficient communication between microservices, enhancing performance.
- Adhere to RESTful principles for API design to ensure clarity and standardization.
PostgreSQL
Redis
Initial schema outlines for user profiles, groups, locations, messages, and expenses, incorporating the PostGIS extension for geospatial queries in PostgreSQL.
- Maintain database normalization to ensure data integrity and consistency.
- Apply appropriate indexing, particularly for location data, to improve query performance.
Apache Kafka
- Streaming real-time location updates.
- Managing chat and notification services efficiently.
- Configure Kafka topics to segment data streams effectively.
- Ensure system resilience and message persistence through fault-tolerant setups.
Docker
Kubernetes, hosted on Google Cloud Platform (GCP)
GitHub Actions integrated with JFrog Artifactory for artifact management
Prometheus and Grafana for monitoring, Sentry for error tracking
MinIO for object storage, particularly for media files
- Create Dockerfiles for containerization, ensuring a consistent environment across development stages.
- Utilize Kubernetes for deploying and managing microservices, focusing on scalability and reliability.
- Establish CI/CD pipelines for automated testing and deployment, enhancing productivity and reliability.
- Implement comprehensive monitoring and alerting with Prometheus and Grafana, alongside real-time error tracking with Sentry.
Utilize Git with GitHub for source code management and collaboration.
Mandatory review process for all contributions to the main branch, ensuring code quality and consistency.
Maintain detailed documentation, including inline comments and service-specific README files, for clarity and collaboration.
Comprehensive testing strategy, including unit and integration tests, to ensure reliability and functionality.
Adherence to OWASP security standards, emphasizing the safeguarding of user data and interactions.
Instructions for setting up a local development environment, including necessary tools and configurations.
Clear guidelines for reporting bugs and feature requests, ensuring effective tracking and resolution.
Outlined process for submitting changes, including branch naming conventions and review requirements.
Established expectations for respectful and constructive contribution to foster a positive community.
Initial setup and implementation of core functionalities such as user authentication and group creation.
Development and integration of advanced features, including real-time location tracking and messaging.
Expansion to include additional functionalities like media sharing and expense splitting.
Comprehensive testing across platforms, final optimizations, and deployment.
Contact information for project maintainers for direct support and inquiries.
Community engagement channels, such as Slack or Discord, for discussion, collaboration, and support.