SwarnaLakshmi
Repo Summary
What it is
A branded .NET MAUI mobile app for jewellery customers. It combines catalog browsing, savings-plan workflows, payment checkout, and account tracking inside one app.
Who it's for
Primary persona: a jeweller's customer who browses products, joins gold/installment programs, pays through the app, and tracks balances, orders, and redemptions.
What it does
- Authenticates users with login, registration, remember-me, and latest mobile-terms acceptance.
- Shows a home dashboard with jeweller banners, daily gold/silver rates, featured products, and feature-flagged shortcuts.
- Lets customers browse the catalog with search, filters, pagination, product detail pages, and wishlist toggling.
- Supports custom jewellery orders with title/description plus optional design-file upload.
- Handles installment-plan enrollment, active/closed scheme tracking, and installment payments.
- Supports gold/silver booking by rupees or grams with tax preview, booking-window checks, terms capture, and payment flow.
- Provides passbook, order report, profile management, wishlist, and redemption-report views.
How to run
- Use .NET 9 + MAUI workloads. Evidence: project targets `net9.0-android` and `net9.0-ios` in `SwarnaLakshmi.csproj`.
- Open `SwarnaLakshmi.sln` or build from the repo root with `dotnet build SwarnaLakshmi.sln`.
- Ensure the backend API URL hardcoded in `Services/ApiService.cs` is reachable before testing app flows.
- Deploy through Visual Studio or a MAUI target run command for the chosen platform. Exact device/emulator setup steps: Not found in repo.
- Backend startup/deployment instructions: Not found in repo.
Repo note: `docs/terms-consistency-review-2026-03-25.md` records a successful `dotnet build`; an unrestricted build re-check in this session timed out before completion.
How it works
- UI layer: XAML pages in `Views/` bind to view models in `ViewModels/`; both are registered in `MauiProgram.cs` and linked by `NavigationService`.
- Startup/config: `App.xaml.cs` loads `Resources/Raw/appsettings.*.json` via `ConfigLoader`, applies theme/logo branding with `BrandingService`, then opens the login flow.
- App services: `ApiService` wraps `HttpClient` calls for auth, products, rates, wishlist, orders, gold bookings, installment plans, profile image, passbook, redemption data, and terms.
- Local state: `Preferences`, `SecureStorage`, and `FeatureManager` hold session data, jeweller details, remembered credentials, feature flags, and customer/payment IDs.
- Payments: `PaymentViewModel` loads embedded `Resources/payment.html` in a WebView, injects Razorpay order data, and sends success/cancel callbacks through messenger records.
- Post-payment: booking/installment view models switch to success/failure pages and use `EmailNotifier` + `PdfReceiptGenerator` for receipt emails.
- Not found in repo: backend API implementation, database schema, and admin system code that serve these mobile endpoints.