At a Glance:
Implemented a microservice architecture using .NET Core and RabbitMQ to achieve continuous two-way data synchronization between a mobile application and a cloud backend especially in environments with unstable mobile network connectivity. The solution also includes handling mobile app menus from a web application based on user roles.
-
Dynamic Menu Management
50 +
Mobile Operations
-
Efficient Data Sync in unstable mobile network
10 k+
Records Per Day
-
Scalability Records Per Day
100 +
Users
Challenges
- Complex Two-Way Data Sync
- Unstable Network Connectivity
- Dynamic Menu Management
Challenges
- Scalability
- Syncing Data for a Large Number of Users
How did we help?
Implemented a robust offline-first strategy. The mobile app uses local storage to queue changes and syncs them when a stable connection is available. RabbitMQ’s message durability and retry mechanisms ensure no data loss. Optimized the data sync process by implementing delta synchronization, where only the changes since the last sync are transmitted. RabbitMQ was configured with high availability and sharding to handle a large volume of messages efficiently. Used a Role Management Service to dynamically generate and update menus.
The Solution
Microservice Architecture
Each service was developed as a stateless .NET Core application. API Gateway: Exposes endpoints for mobile apps and forwards requests to appropriate microservices. Synchronization Service: Manages data sync tasks, ensuring data consistency between the mobile app and backend even during network interruptions. Role Management Service: Handles CRUD operations for user roles and permissions. Menu Management Service: Dynamically generates menus based on user roles and caches them for quick access.
Data Synchronization
To handle the challenges of unstable mobile networks, a combination of REST APIs and RabbitMQ was used: Offline Support: The mobile app maintains a local SQLite database for offline access. Changes are queued and synced once connectivity is restored. Data Sync Logic: Implemented in the Synchronization Service, which uses RabbitMQ for message queuing. Mobile app pushes changes to RabbitMQ, and the service processes these changes and updates the central database.
Messaging with RabbitMQ
RabbitMQ was configured to handle: Message Queues: For reliable message delivery between mobile apps and backend services. Retry Mechanisms: Implemented to handle message re-delivery in case of failures.
Role-Based Menu Management
Menus in the mobile app are dynamic and role-based: Web Application: Allows administrators to define roles and associated menu items. Menu Management Service: Listens for changes in role definitions and updates the menu configuration accordingly. Mobile App Sync: Pulls the latest menu configuration from the Menu Management Service based on the user’s role during login and periodic sync intervals.
Web Application Implementation
The web application serves as the control centre for managing user roles, feature flags, and common configurations: Role-Based Feature Management: Allows administrators to enable or disable features for specific user roles. Common Configuration Management: Centralized management of configurations that are shared across mobile and web applications. Dynamic Configurations: The mobile app fetches these configurations during the sync process to ensure it operates with the latest settings and features.
Technology We have used
React Native: For cross-platform mobile application development.
SQLite: For local data storage and offline support on the mobile device.
.NET Core: For building microservices.
API Gateway:
-
- Ocelot: An open-source API Gateway for .NET Core, or
Microservices:
-
- Synchronization Service: For managing data sync operations.
- Role Management Service: For managing user roles and permissions.
- Menu Management Service: For generating and managing dynamic menus.
- Notification Service: For sending notifications about data changes.
RabbitMQ: For message queuing and reliable inter-service communication.
SQL Database: For structured data storage (e.g., user profiles, roles, permissions).
-
- Options: Microsoft SQL Server.
NoSQL Database: For unstructured data storage (e.g., user activity logs, offline data).
-
- Options: MongoDB.
ASP.NET Core: For building the web application for role and configuration management.
Angular: For building a modern, responsive frontend interface.
Prometheus: For monitoring metrics.
Grafana: For visualizing monitoring data.
Elasticsearch, Kibana: For centralized logging and log analysis.
GitLab CI: For continuous integration and continuous deployment (CI/CD) pipelines.
OAuth 2.0 and OpenID Connect: For authentication and authorization.
IdentityServer4: For implementing OAuth 2.0 and OpenID Connect in .NET Core applications.
HTTPS: For secure communication.
Swagger: For API documentation and testing.
Start your journey towards successful software design and development with complete data security measures.

We had love to hear from you
Let’s Connect for a Successful Digital Transformation Journey.
Fill Out the form and we’ll be in touch
Coding Innovation, Delivering Impact.
We build innovative software solutions that turn ideas into real-world impact. Our expertise transforms concepts into powerful digital experiences that drive growth and success.Ready to take your business to the next level? Get in touch with our team of experts today.
Whether you need a custom software solution, strategic consultation, or ongoing support, we’re here to help you achieve your goals. Let’s collaborate to transform your ideas into impactful digital experiences that drive innovation, growth, and success.


