-
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
MapMe is an experimental, open‑source dating app built to explore modern AI tooling, multi‑tech stacks, and production‑grade workflows—from local dev to Azure hosting with CI/CD, monitoring, and comprehensive testing. It blends Blazor WebAssembly + Interactive SSR + Google Maps JS interop, with a clear path to .NET MAUI and/or Flutter.
This project is both a learning lab and a real app: rethinking dating platforms—transparent, community‑driven, and engineered for quality, reliability, and extensibility.
- Vision
- Tech Stack
- Key Features
- Repository Layout
- Architecture Overview
- Getting Started
- Testing & Quality Gates
- Development Workflow (Vibe Coding + AI)
- CI/CD (Azure) Roadmap
- Security & Privacy
- Contributing
- Roadmap
- Documentation Index
- Why This Matters
- Badges
- Purpose: Explore AI‑assisted development (“Vibe Coding”) across varied stacks while building a real product, ending with Azure hosting, automated pipelines, and deep quality gates.
- Thesis: Testing AI models on underused tech and pre‑release frameworks pushes ecosystem capabilities.
- Outcome: A clean, reliable, extendable, and well‑documented app with automation and quality checks—plus a community effort to improve how dating apps work.
- Current: .NET 10, ASP.NET Core Minimal APIs, Blazor WebAssembly + Interactive SSR, System.Text.Json, JS interop with Google Maps
- Testing: xUnit, Unit + Integration + Service‑Level tests, PowerShell test runners
- Data: In‑memory repositories (dev/demo), Azurite (local), Cosmos DB‑ready integration
- Frontend: Bootstrap‑based responsive UI
- Future: .NET MAUI and/or Flutter, SignalR real‑time messaging
- Map‑first experience: Create and view Date Marks (ratings, tags, qualities, visit dates, visibility, Google Maps links).
- Rich profiles: Tinder‑style fields (bio, age, preferences, lifestyle, photos with captions/order).
- Chat: Conversations, unread counts, read status, archiving, deletion.
-
Unified pages: Profile (
/profile) and User (/user/{username}) share the same layout; edit controls only on Profile. - Google Maps integration: Create marks from places, clickable Google links in popups/lists, “View on Map” deep‑linking.
- Duplicate prevention: Date Marks de‑duped by PlaceId + UserId.
- Local persistence: Client caching and storage for smooth dev/demo flows.
-
MapMe/MapMe/MapMe/— Server app (Minimal APIs, DI, in‑memory repos). Key:Program.cs -
MapMe/MapMe.Client/— Blazor WASM + Interactive SSR client (pages, components, JS interop)- Pages:
Pages/Map.razor,Pages/Profile.razor,Pages/User.razor - Interop:
wwwroot/js/mapInitializer.js
- Pages:
-
MapMe/MapMe.Tests/— Unit + Integration tests; PS scripts and docs -
docs/— Architecture, features, Cosmos DB integration, testing, troubleshooting -
Scripts/— Azurite/Cosmos helpers:start-cosmos.ps1,init-cosmosdb.ps1,stop-cosmos.ps1 -
docker-compose.yml,docker-compose.cosmos.yml— Local orchestration
- Pattern: Minimal APIs + DI + repository pattern
- Contracts: Shared DTOs aligned on both client and server (System.Text.Json)
- Persistence: In‑memory repos by default; Cosmos DB path documented and script‑assisted
-
Interop: Blazor <-> JS via
mapInitializer.jsfor map events and popups -
Auth Placeholder: Header‑based
X-User-Idfor tests; ready to swap for real auth
Prerequisites
- .NET 10 SDK
- PowerShell Core (macOS/Linux compatible)
- Optional: Docker (Azurite/Cosmos emulator)
Build
dotnet build
Run (Dev)
- Server:
dotnet run --project MapMe/MapMe/MapMe - Client:
dotnet run --project MapMe/MapMe.Client
Local Cosmos (optional)
- Start:
pwsh ./Scripts/start-cosmos.ps1 - Initialize:
pwsh ./Scripts/init-cosmosdb.ps1 - Stop:
pwsh ./Scripts/stop-cosmos.ps1 - Or:
docker compose -f docker-compose.cosmos.yml up -d
Project rule: build and run Service‑Level tests after each change.
- Unit:
dotnet test MapMe/MapMe.Tests --filter TestCategory=Unit - Integration:
dotnet test MapMe/MapMe.Tests --filter TestCategory=Integration - All tests (PowerShell, cross‑platform):
test-unit.ps1test-integration.ps1test-all.ps1
- Features:
- TRX → HTML conversion (if available)
-
-OutputDirand-NoHtmlcontrols
- Coverage spans chat, Date Marks, profiles, error handling, and E2E API flows with high pass rates.
-
Standards: .NET 10, System.Text.Json, async/await best practices, DI + repositories, XML docs, and up‑to‑date
docs/ -
Branching:
main(stable),feature/*(scoped); PRs require passing tests + updated docs - Automations (planned): CodeQL, Roslyn analyzers, formatting, spellcheck, SL test gates, conventional commits, changelogs
- Pipelines: Build + test matrix; artifact packaging (WASM + server); CodeQL and analyzers; PR gates
- Environments: Dev (preview), Staging (smoke/load), Prod (blue/green or canary)
- Infra: Azure App Service/Static Web Apps (WASM), optional Functions, Cosmos DB
- Monitoring: App Insights + Azure Monitor; distributed tracing, dashboards, alerts
- Ops: Health checks with auto‑rollback, backups, data lifecycle policies
- Input validation, model binding hardening
- Rate limiting and anti‑abuse controls
- Auth abstraction ready for Entra ID/OAuth providers
- Data minimization and PII care; Key Vault for secrets
- Threat modeling and secure defaults
- Look for
good-first-issueandhelp-wanted - Add tests with every feature/bug fix
- Update
docs/for user‑visible changes - Keep Blazor JS interop consistent (
OnXxxAsyncnaming) - Avoid Newtonsoft.Json; use System.Text.Json
- Short‑Term: SignalR real‑time chat; Cosmos DB repositories; Azure CI/CD; stronger auth/roles; perf & a11y tests
- Mid‑Term: .NET MAUI client; Flutter client; push notifications; feature flags/A‑B testing
- Long‑Term: Community‑driven recommendation engine; transparent algorithms; federated learning
-
docs/README.md— Docs landing -
docs/features/Chat.md,docs/features/DateMarks.md,docs/features/DateMarkEdit.md— Feature guides -
docs/CosmosDB-Integration.md— Cosmos/Azurite setup -
MapMe.Tests/README.md— Test suite usage and structure
MapMe challenges the status quo by empowering a community to build ethical, transparent, and delightful dating experiences. It demonstrates how AI‑assisted engineering + rigorous software discipline produce production‑ready systems—and invites you to collaborate.
Join in—fork, star, and open an issue/PR.