PawConnect
PawConnect is a multi-client dog-adoption and shelter-operations platform with a dedicated React adopter portal, a Blazor operational client, shared ASP.NET Core services, real-time communication, and explainable decision support.
PawConnect is an active full-stack portfolio platform with a dedicated React adopter portal, an established Blazor operational application, shared ASP.NET Core services, SQL Server persistence, real-time communication, explainable decision support, automated tests, CI, and Docker-based local development.
- Role
- Product design and full-stack engineering
- Scope
- React public and adopter journeys, Blazor shelter operations, shared backend services, secure workflow integration, real-time communication, decision support, and platform administration
- Status
- Local full-stack MVP · Active development
- Core stack
- React · TypeScript · ASP.NET Core · Blazor · SQL Server
Product interface
Two focused clients over one shared platform.
A dedicated React adopter experience and the established Blazor operational application converge on the same ASP.NET Core services, authorization rules, and SQL Server data.

Product overview
Why this product exists.
PawConnect is a full-stack dog-adoption and shelter-operations platform built around one connected workflow: discovering a suitable dog, submitting an adoption request, communicating with the shelter, and supporting the operational work required to complete the process.
The platform uses two focused presentation layers. A React and TypeScript portal provides a modern public and adopter-facing experience for dog discovery, favorites, saved searches, applications, notifications, and Adoption Copilot. The established Blazor application continues to support Shelter, Volunteer, and Admin workflows, including adoption processing, care operations, analytics, intelligence, simulation, and platform management.
Both clients reuse the same ASP.NET Core backend, service-layer business rules, role and ownership checks, Entity Framework Core persistence, and SQL Server data. React does not connect directly to the database and does not duplicate PawConnect's domain rules in TypeScript.
Problem / motivation
Dog adoption extends beyond a public listing. PawConnect connects discovery and adopter-owned workflows to the shelter, volunteer, and administrative work required to review requests and care for dogs without collapsing role boundaries or duplicating business rules across clients.
Product experience
Key features.
- 01
Dedicated React adopter experience
Adds a focused React and TypeScript client for public discovery, profiles, favorites, saved searches, applications, notifications, and Adoption Copilot.
- 02
Shared role-aware adoption workflows
Connects adopter interactions to shared C# services that enforce public visibility, role, ownership, validation, and workflow rules.
- 03
Blazor operations workspace
Keeps Shelter, Volunteer, Admin, analytics, intelligence, simulation, and platform-management workflows in the established Blazor application.
- 04
Persisted real-time communication
Persists adoption-request conversations and synchronizes workflow updates through SignalR.
- 05
Explainable guided matching
Interprets adopter constraints against public-safe, backend-validated dog records and explains evidence and cautions around each suggestion.
- 06
Operational intelligence and simulation
Derives prioritized operational issues from persisted records and applies temporary scenarios to a shelter baseline without mutating operational data or presenting indicators as predictions.
Under the surface
Architecture and technical challenges.
Architecture
- React 19, TypeScript, Vite, React Router, and TanStack Query provide a focused public and adopter presentation layer over versioned ASP.NET Core APIs
- Blazor Server remains the complete operational client for Shelter, Volunteer, Admin, analytics, Operations Intelligence, and Scenario Simulator workflows
- Both clients delegate to shared C# services that enforce validation, public visibility, role checks, ownership checks, and workflow transitions
- ASP.NET Core Identity cookie authentication, antiforgery protection, generated OpenAPI contracts, and DTO boundaries secure and align the React client
- Entity Framework Core and SQL Server provide one persisted source of truth, with SignalR, Docker Compose, automated tests, and GitHub Actions supporting the wider platform
Challenges
- Modernizing public and adopter journeys without replacing the Blazor operational application or duplicating domain rules in TypeScript
- Keeping Identity cookie authentication, credentialed SPA requests, antiforgery tokens, and backend role boundaries aligned
- Keeping generated TypeScript contracts synchronized with C# DTOs and normalizing API errors without weakening backend validation
- Keeping natural-language discovery grounded in backend-validated candidates, explicit evidence, and conservative compatibility language
- Projecting operational changes from a persisted baseline without mutating live records or presenting indicators as predictions
Technology stack
Technical implementation
Architecture and API
Generated contracts over a shared API
The React client generates TypeScript types from PawConnect's Swagger/OpenAPI contract. Its shared API wrapper includes credentials, obtains antiforgery tokens for unsafe requests, normalizes errors, and handles unauthorized-session events.

Delivery status
What exists today.
Implemented
- Dedicated React portal for public discovery, profiles, favorites, saved searches, applications, notifications, Adoption Copilot, and responsive adopter flows
- Generated OpenAPI contracts, Identity cookie authentication, antiforgery, protected routes, TanStack Query server state, and shared backend role and ownership enforcement
- Blazor Shelter, Volunteer, Admin, analytics, Operations Intelligence, Scenario Simulator, and persisted SignalR workflows over the same SQL Server data
- Vitest, React Testing Library, .NET tests, focused Playwright flows, GitHub Actions, and Docker Compose local development
Partial
- The React client intentionally covers public and adopter workflows; registration and password recovery remain in the main Identity UI, while operational roles remain in Blazor.
- Local file storage, email, reports, and background processing are implemented for development; production providers, hosting hardening, and operational ownership remain unconfigured.
Experimental
- Optional model-assisted discovery and semantic retrieval remain experimental; displayed candidates continue to pass backend validation.
Planned
- Production deployment, cloud object storage, provider-backed delivery configuration, and broader accessibility, integration, and scale validation
React + TypeScript client
Dedicated React adopter experience
I added a focused React and TypeScript portal to modernize PawConnect's public and adopter-facing journeys without replacing the established Blazor operational application. The portal consumes the existing ASP.NET Core APIs, uses generated OpenAPI contracts, authenticates through the existing ASP.NET Core Identity cookie, and delegates authorization and workflow rules to the same C# service layer used by Blazor.
TanStack Query manages server state, caching, cancellation, invalidation, and mutation refreshes, while React Hook Form and Zod handle local form state and validation. The result is an incremental frontend modernization: public discovery and protected adopter workflows gain a focused client while PawConnect retains one backend source of truth for data, permissions, and domain behavior.
Multi-client architecture
One backend, two focused presentation layers.
React and Blazor serve different audiences, but neither owns PawConnect's business rules or data. Both presentation layers converge on backend-enforced services and one persisted model.
React Adopter Portal
Public and adopter-facing experience
- Public discovery
- Dog profiles
- Favorites
- Saved searches
- Applications
- Notifications
- Adoption Copilot
Blazor Application
Established operational experience
- Shelter operations
- Volunteer workflows
- Admin workflows
- Analytics
- Operations Intelligence
- Scenario Simulator
- Shared layer 01
ASP.NET Core REST API
- DTOs
- Identity cookie
- Antiforgery
- Generated OpenAPI contracts
- Shared layer 02
Shared C# service layer
- Validation
- Public visibility
- Role checks
- Ownership checks
- Workflow rules
- Shared layer 03
Entity Framework Core + SQL Server
- Shared persisted data
- One domain source of truth
React engineering highlights
- Added a focused React and TypeScript presentation layer over PawConnect's existing ASP.NET Core service architecture without duplicating domain rules.
- Generated TypeScript API contracts from Swagger/OpenAPI to reduce drift between C# DTOs and frontend models.
- Integrated secure ASP.NET Core Identity cookie authentication with credentialed requests and antiforgery protection for state-changing SPA operations.
- Used TanStack Query for server-state caching, cancellation, invalidation, and mutation refreshes across favorites, saved searches, applications, notifications, and discovery.
- Added focused Vitest, React Testing Library, and Playwright coverage for public discovery, route protection, authentication, image fallback, and critical adopter flows.
Surface 01
A focused public entry point
The portal introduces PawConnect around the adopter's first decision: finding a dog that fits their real living situation. The landing page uses live public-safe records and directs visitors into discovery or Adoption Copilot without exposing operational shelter complexity.

Surface 02
Server-backed discovery
Filtering and pagination are handled by the backend rather than by downloading every dog into the browser. Active criteria remain visible as removable chips and are synchronized to the URL so filtered views can be refreshed and shared.

Surface 03
Practical compatibility context
The detail page brings together public-safe dog, shelter, behavior, care, and compatibility information before the adopter starts an application. React renders the same backend DTOs and visibility rules used elsewhere in PawConnect.

Surface 04
Explainable natural-language discovery
Adoption Copilot calls the real PawConnect backend and returns only public-safe dog records. This captured result uses the rules-based explanation mode; its criteria, cautions, and heuristic scores support discovery but do not predict compatibility or make an adoption decision.

Surface 05
A real request before submission
The React portal continues beyond discovery into the real PawConnect adoption workflow. The review step presents the current request data before submission while the backend remains responsible for validation, ownership, and workflow rules.

Surface 06
Ownership-protected application tracking
Applications remain accessible only to their owner. The interface exposes current status and permitted actions while backend ownership and cancellation rules remain authoritative.
Application tracking

Account-tied updates

Surface 07
A persistent adopter shortlist
Favorites persist through the real PawConnect API and SQL Server data. Mutations refresh the TanStack Query cache so discovery, details, and saved collections remain consistent.

Surface 08
Responsive discovery behavior
The mobile experience uses compact navigation and filter disclosure instead of simply shrinking the desktop layout. Its filtering and public-data behavior remains consistent with the desktop client.

Blazor operational client
Shelter operations and decision support.
The established Blazor application remains PawConnect's complete operational workspace for Shelter, Volunteer, and Admin roles, including adoption processing, analytics, explainable priorities, and isolated scenario planning.
Surface 01
Connected shelter workflow
Shelter staff receive an operational view of their own records. The dashboard combines capacity, requests, care work, resources, volunteer coverage, activity, and safe next actions without exposing data owned by other shelters.
Shelter dashboard

Adoption pipeline

Surface 02
Explainable operational intelligence
The Intelligence Hub derives prioritized issues from real PawConnect records. Each item exposes what happened, why it matters, which trigger produced the insight, how it can be resolved, and what action is safe to take next.
Operations Intelligence

Scenario Simulator

Surface 03
Platform oversight
Admin analytics aggregate platform-level adoption, shelter, resource, reporting, and discovery activity. The charts are driven by persisted records and provide oversight without replacing the underlying operational workflows.

Honest edges
Limitations and what comes next.
Current scope
- The React portal intentionally focuses on public and adopter-facing workflows, while Shelter, Volunteer, and Admin operations remain in Blazor.
- Registration and password recovery continue through the main ASP.NET Core Identity pages rather than being duplicated in React.
- OpenAI remains optional, and Copilot results support discovery rather than guarantee compatibility or make adoption decisions; the local rules-based path remains available.
- The project is presented as a portfolio platform rather than a live production service used by real shelters. Production hosting, object storage, delivery providers, observability, backup, and operational ownership remain unconfigured.
- Broader accessibility, integration, scale, and role-by-role workflow validation remain active development work.
Future improvements
- Continue React accessibility, responsive, authentication, and critical adopter-flow validation alongside the Blazor operational client
- Define production hosting, secrets, delivery providers, observability, and cloud object storage before making deployment claims
- Expand role-scoped and operational scenarios only when they remain explainable, isolated, and grounded in persisted data