SearchTires

Project Name: SearchTires

Client / Organization: SearchTires

Timeline: 2024 – 2026

Project Status: Completed

Project Overview

SearchTires is a multi-project .NET 8 solution for consumer tire discovery and retailer location, paired with TireSignal, a subscription-backed web tool for store users. The public site helps shoppers find tires by size, vehicle fitment (year/make/model/trim), and brand, then connects them to nearby tire shops and retailers through locality pages spanning state → county → city, deals content, and SEO-oriented URL structures. It solves fragmented tire inventory and local-availability discovery by combining a centralized SearchTires API with national/state popularity data and hierarchical location datasets.

Architecturally, MVC web hosts sit above manager/service layers that call the SearchTires HTTP API, Google Geocoding, Azure Blob/CDN for images and sitemaps, TireSync Edge for imagery, and Maropost for email capture. Cross-cutting behavior includes memory caching, fixed-window rate limiting, session state, reCAPTCHA, and ST API request/response file logging. TireSignal adds Identity-based Admin/Tech access, store profiles, subscription and suspension enforcement, and login/risk telemetry, reusing the same inventory and TireIQ services with ZIP restrictions for Tech roles. Delivery is continuous via Azure Pipelines to multi-environment App Services with config transforms and rollback runbooks.

Technology Stack

Languages Used: The solution is developed using C#, HTML, CSS, JavaScript, SQL (EF Migrations / Identity), XML (Sitemaps), and YAML (Azure Pipelines), providing a solid foundation for a scalable, production-ready multi-project .NET platform.

Frontend: Searchtires.Web is an ASP.NET Core 8 MVC server-rendered app using Razor views (.cshtml), shared layouts, and Razor runtime compilation in development. UI relies on Bootstrap, jQuery, jQuery Validation, and jquery-validation-unobtrusive, with domain CSS split by page (home, state, cars, retailers, tire brand results). Custom scripts (search.js, search-maps.js, view-map.js, menu.js) drive tire search flows, loading states, form submit UX, ZIP/URL param handling, and map-oriented retailer UI. Routing is geo- and product-oriented MVC (state → county → city) for tires, brands/families/sizes, shops/retailers, vehicle fitment, and deals. TireSignal.Web reuses the same MVC + Bootstrap + jQuery pattern for a signed-in store/tooling UI and Admin/User management.

Backend: The solution follows a layered .NET 8 architecture. Searchtires.Web / TireSignal.Web handles controllers, routing, auth middleware, and dependency injection. Searchtires.Managers handles orchestration, such as HomeManager for multi-mode tire search. Searchtires.Services covers HTTP clients, location, CDN/blob, marketing, and reCAPTCHA. Searchtires.Models holds DTOs and domain models, while Searchtires.Managers.Infrastruture provides IHttpContext and PaginatedList helpers. STService (ISTService) is the primary integration client over HttpClient to the SearchTires API, handling inventory/filters, fitment cascades, DMA-by-ZIP, retailer data, tax rates, pricing trends, and TireIQ, with IMemoryCache (~30 min) on selected payloads. Supporting services include LocationService, MPService, BlobStorageService, GoogleAPIService, RecaptchaService, and ImageController. TireSignal.Web exposes authenticated JSON endpoints for sizing cascades, fitment, TireIQ, and admin APIs on the same shared services, plus DI, session, fixed-window rate limiting, and custom message handlers.

Authentication & Security: Searchtires.Web (public site) has no end-user Identity stack. It uses outbound ST-ApiKey + Origin headers, Google reCAPTCHA on signup/search, HttpOnly session cookies, fixed-window rate limiting (4 req / 12s), HSTS + HTTPS redirection outside Development, and optional IP guard with header redaction in logs. TireSignal.Web uses ASP.NET Core Identity + EF Core with cookie auth, a global Authorize policy, seeded Admin and Tech roles, subscription/disabled-user enforcement middleware, Tech users restricted to store ZIP, and login attempt / risk analytics for admins.

Database & Persistence: Searchtires.Web does not drive primary product data from a local app database — catalog, pricing, retailers, and fitment come from the remote SearchTires HTTP API, with geography and market popularity served from cached JSON files and in-memory caching to reduce repeat I/O. TireSignal.Web uses SQL Server via Entity Framework Core (IdentityConnection), with IdentityDbContext<ApplicationUser>, extended profile fields, UserLoginEvents telemetry, code-first migrations, and startup role/admin seeding.

Third-Party Integrations: The platform integrates with the SearchTires API for inventory, fitment, retailers, pricing/TireIQ, and tax/fee metadata; Google Maps Platform for ZIP-to-city/state geocoding; Azure Blob Storage for sitemap and tire image uploads; Azure CDN for static image and sitemap delivery; TireSync Edge CDN as an alternate/fallback image source; Maropost for marketing list signup by email; Google reCAPTCHA for bot friction on public flows; Application Insights for telemetry on Searchtires.Web; and Cloudflare connecting-IP headers forwarded on outbound ST API calls.

Monitoring & Logging: Application Insights covers Searchtires.Web alongside ASP.NET Core ILogger across managers/services. ST API request logging writes daily files under Logs/stapi-requests-*.txt with method, URL, duration, status, and redacted secrets/cookies. TireSignal adds UserActivityMiddleware and login-event history for admin risk views, with dedicated admin surfaces for risk scores and multi-IP/failed-login patterns. No separate ELK/Datadog/New Relic stack exists beyond App Insights and file/App Service logs.

Testing: The repository has no dedicated unit, integration, or end-to-end test projects (no xUnit/NUnit/MSTest, no CI test tasks). Quality relies on CI restore/build of the solution, environment deploys (test/stage then live), manual regression of search/fitment/retailer flows, and operational API request logs for production diagnostics.

Deployment & DevOps: Delivery uses Azure DevOps Pipelines under pipelines/build-deploy/ and pipelines/rollback/. CI (searchtires-ci.yml) runs .NET SDK 8 restore/build on master. CD publishes Searchtires.Web and deploys Test then Live (Stage: Linux App Service stui-stage-website; Live: Windows App Service SearchTires), with config via FileTransform / variable groups, appsettings rename + token replace. TireSignal CD builds/publishes TireSignal.Web with stage/prod variable groups. Rollback YAML is defined for both Searchtires and TireSignal for stage and prod. Hosting uses ASP.NET Core Module V2 in-process on Windows IIS-style App Service with zip/package deploy.

SearchTires Bridgestone tire listings

Tire Listings

SearchTires screen

App Screen

SearchTires location search

Location Search

client

SearchTires

category

Web Development

contact us

get in touch with us