.NET MAUI Mobile TodoAPP Sync Framework

Job ID: 39273975

Budget: $10 – $30 CAD

I'm looking for an experienced mobile app developer to create a synchronization framework for my .NET MAUI mobile TodoAPP. The app needs to allow selective data download and conflict-aware synchronization with a SQL Server backend via a REST API powered by CommunityToolkit.Datasync.

Key Requirements:
- The framework must handle bi-directional sync, partial updates, conflict detection and resolution, and robust error handling.
- Conflict resolution will require a manual review process.
- The framework must support field-level updates and record-level updates.
- An error handling strategy is needed that logs errors for manual intervention.

in summary, can read below the check marked are already done just the pending one remains, I can give my Todoapp client side and the server side to make the job easier for you:

1-Selective Data Download (Filtered Sync)

⏳ Mobile must be able to send dynamic queries (e.g., OData) to download only a subset of data (e.g., specific client records).

✅The downloaded data must be stored in a local SQLite database for offline access.

⏳Avoid full table pulls—initial and incremental syncs should both use filter conditions.

⏳You may need to modify or extend DataSync to reintroduce query-based filtering for incremental sync.

2- Offline Support

✅After initial data download, the app must function fully offline.

✅Users should be able to view, add, modify, and delete records.

✅Local changes must be stored until a sync is triggered when online.

Two-Way Sync

✅Implement PullAsync() and PushAsync() logic to synchronize changes between the client and server.

⏳ On pull, use the original filter to limit which records are updated from the server.

⏳On push, only modified records should be uploaded.

✅(no need as satasync doesn't accept duplicate as we are using GUID) Prevent duplicate inserts if the client retries after a network failure (e.g., check if insert already succeeded).

⏳3-Conflict Detection & Resolution

⏳Track conflicts where both client and server update the same record while offline.

✅ Auto-resolve when updates don’t overlap (e.g., mobile updates itemA, server updates item B).

⏳ Log all conflicts to a Conflicts table with:

⏳ Record reference (e.g., TodoItem ID)

⏳ Which fields conflicted

⏳ Client version and Server version

⏳ Alert the user when a record was updated on the server while they were offline, even if there's no true conflict.

⏳4- Error Handling

⏳Handle retry scenarios for operations that partially succeed (e.g., insert acknowledged on server but client didn’t receive response).

⏳ Ensure retry doesn’t lead to duplicate inserts or updates.

in summary:

Implementation Steps

✅ Build dynamic filtering framework for initial data pull (OData-based).

✅ Extend filtering to support multi-condition queries.

✅ Save filtered results to SQLite for offline access.

✅ Implement offline edits and store operations locally.

⏳ On sync:

Push local changes to server.

Pull server changes using original query filters + UpdatedAt.

Detect and resolve conflicts.

⏳ Log conflicts to Conflicts table.

⏳ Implement client-side conflict resolution alerts/UI.

⏳ Investigate and modify CommunityToolkit.Datasync to support incremental filtered syncs (if needed).



The ideal candidate should have significant experience with .NET MAUI, SQL Server, and CommunityToolkit.Datasync. I am looking for someone with a strong understanding of mobile app development, particularly with synchronization frameworks. Excellent attention to detail is critical for this project, given the manual review process for conflict resolution. Prior experience with error logging and creating mechanisms for manual intervention will be highly beneficial.