Initial commit — AsadiTools v1.0
CI/CD / CI — dotnet build (push) Successful in 44s
CI/CD / Deploy — docker compose (push) Failing after 1s

Full ASP.NET Core 10 Razor Pages app for آساد ابزار tool repair shop
in Karaj, Iran (official DeWalt representative).

Features:
- Homepage, Services, DeWalt page, Shop (pagination + images)
- 10 brand SEO pages (/brands/*) with rich Persian content + FAQ schema
- Blog engine with admin management (/blog, /Admin/Blog)
- Cart, Checkout, Contact (OpenStreetMap embed)
- Admin panel: Products CRUD, Orders, Blog, Change Password
- Jalali date formatting, product images, SiteData centralised contact
- Docker + docker-compose with healthcheck
- Gitea CI/CD via .gitea/workflows/ci-cd.yml (NuGet through Nexus mirror)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Soroush Asadi
2026-06-01 22:08:43 +03:30
commit f97f891d67
146 changed files with 88128 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
@page
@model AsadiTools.Pages.Brands.BrandsIndexModel
@{ Layout = "_Layout"; }
<div class="bg-blue-800 text-white py-12 px-4">
<div class="max-w-6xl mx-auto">
<nav class="flex items-center gap-2 text-sm text-blue-300 mb-4">
<a href="/" class="hover:text-white">خانه</a><span>/</span>
<span class="text-white">برندها</span>
</nav>
<h1 class="text-3xl font-extrabold mb-2">تعمیر ابزار همه برندها در کرج</h1>
<p class="text-blue-200">تخصص در تعمیر برترین برندهای ابزار صنعتی با ضمانت ۳ ماهه</p>
</div>
</div>
<div class="max-w-6xl mx-auto px-4 py-12">
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
@foreach (var b in Model.Brands)
{
<a href="/brands/@b.Id"
class="group relative bg-white rounded-2xl overflow-hidden border-2 hover:shadow-xl transition-all hover:-translate-y-1"
style="border-color:@(b.IsOfficial ? "#f59e0b" : "#e5e7eb")">
@if (b.IsOfficial)
{
<div class="absolute top-3 right-3 z-10 bg-yellow-400 text-gray-900 text-xs font-bold px-2.5 py-1 rounded-full shadow">🛡️ رسمی</div>
}
<div class="relative h-36 overflow-hidden">
<img src="@b.HeroImage" alt="تعمیر ابزار @b.NameFa" loading="lazy"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" />
<div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent"></div>
<div class="absolute bottom-3 right-4 flex items-center gap-2">
<div class="w-9 h-9 rounded-lg flex items-center justify-center text-xs font-extrabold shadow"
style="background-color:@b.Color;color:@b.TextColor">@b.Name.Substring(0,2)</div>
<span class="text-white font-bold text-lg">@b.NameFa</span>
</div>
</div>
<div class="p-5">
<p class="text-sm text-gray-500 leading-6 mb-3 line-clamp-2">@b.Tagline</p>
<div class="flex items-center justify-between text-xs text-gray-400">
<span>📍 @b.Country · @b.Founded</span>
<span class="text-blue-600 font-medium group-hover:underline">جزئیات </span>
</div>
</div>
</a>
}
</div>
<!-- Why trust us -->
<div class="mt-16 bg-blue-900 rounded-3xl p-10 text-white text-center">
<h2 class="text-2xl font-extrabold mb-3">چرا آساد ابزار؟</h2>
<p class="text-blue-200 mb-8 max-w-2xl mx-auto">بیش از ۱۵ سال تجربه تعمیر ابزارهای برقی صنعتی، نمایندگی رسمی دیوالت در کرج، با قطعات اصل و ضمانت کتبی</p>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
@foreach (var s in new[] { ("+۱۵","سال تجربه","🏆"), ("+۵۰۰۰","دستگاه تعمیر شده","🔧"), ("۸","برند پشتیبانی","⭐"), ("۱۰۰٪","ضمانت تعمیر","🛡️") })
{
<div class="bg-white/10 rounded-2xl p-5">
<div class="text-2xl mb-1">@s.Item3</div>
<div class="text-2xl font-extrabold text-yellow-300">@s.Item1</div>
<div class="text-xs text-blue-200 mt-0.5">@s.Item2</div>
</div>
}
</div>
</div>
</div>