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
+59
View File
@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] | پنل مدیریت آساد ابزار</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@@font-face { font-family:"Vazirmatn"; src:url("https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@@v33.003/fonts/webfonts/Vazirmatn-Regular.woff2") format("woff2"); font-weight:400; font-display:swap; }
@@font-face { font-family:"Vazirmatn"; src:url("https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@@v33.003/fonts/webfonts/Vazirmatn-Bold.woff2") format("woff2"); font-weight:700; font-display:swap; }
*, body { font-family: "Vazirmatn", Tahoma, Arial, sans-serif !important; }
</style>
</head>
<body class="bg-gray-50 text-gray-800">
<div class="flex min-h-screen">
<!-- Sidebar -->
<aside class="fixed right-0 top-0 h-full w-56 bg-gray-900 text-white flex flex-col z-40">
<div class="p-5 border-b border-gray-800">
<div class="flex items-center gap-2">
<div class="bg-blue-600 rounded-lg p-1.5 text-sm">🔧</div>
<div>
<div class="font-bold text-sm">آساد ابزار</div>
<div class="text-xs text-gray-400">پنل مدیریت</div>
</div>
</div>
</div>
<nav class="flex-1 p-4 space-y-1">
<a href="/Admin" class="flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm font-medium text-gray-300 hover:bg-gray-800 hover:text-white transition-colors">
📊 داشبورد
</a>
<a href="/Admin/Products" class="flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm font-medium text-gray-300 hover:bg-gray-800 hover:text-white transition-colors">
📦 محصولات
</a>
<a href="/Admin/Orders" class="flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm font-medium text-gray-300 hover:bg-gray-800 hover:text-white transition-colors">
🛍️ سفارش‌ها
</a>
<a href="/Admin/Blog" class="flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm font-medium text-gray-300 hover:bg-gray-800 hover:text-white transition-colors">
📝 بلاگ
</a>
<a href="/Admin/ChangePassword" class="flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm font-medium text-gray-300 hover:bg-gray-800 hover:text-white transition-colors">
🔑 تغییر رمز عبور
</a>
</nav>
<div class="p-4 border-t border-gray-800">
<form method="post" action="/Admin/Logout">
@Html.AntiForgeryToken()
<button type="submit" class="text-sm text-red-400 hover:text-red-300 transition-colors">🚪 خروج</button>
</form>
</div>
</aside>
<!-- Main -->
<main class="flex-1 mr-56 overflow-auto">
@RenderBody()
</main>
</div>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>