11 Commits
Author SHA1 Message Date
Behrad 35a558db20 پاکسازی تصاویر موقت و به‌روزرسانی مراجع قبل/بعد در فرانت 2026-09-02 23:00:57 +03:30
Behrad 5a6cb51333 عکس‌های اصلی سایت — بخش ۴ (قبل/بعد + مراجع) 2026-09-02 23:00:09 +03:30
Behrad dc200099ba عکس‌های اصلی سایت — بخش ۳ (تصاویر ۱، ۲، ۵) 2026-09-02 22:59:19 +03:30
Behrad 0a55d5d0fe عکس‌های اصلی سایت — بخش ۲ (تماس و تصویر ۴) 2026-09-02 22:59:08 +03:30
Behrad 97dc728a4c عکس‌های اصلی سایت — بخش ۱ (لوگو و هیرو) 2026-09-02 22:58:17 +03:30
Behrad 87f38f1c0b تصاویر بدون کش طولانی — نمایش فوری تغییرات 2026-09-02 19:03:36 +03:30
Behrad 8dab39ee83 بازطراحی تصاویر محلی با رنگ‌های قابل‌دیدن (مسی/طلایی) 2026-09-02 18:56:02 +03:30
Behrad 32b6655a1e رفع باگ: بازگردانی Tailwind imports در CSS (حذف اشتباه در بهینه‌سازی) 2026-09-02 18:47:33 +03:30
Behrad 395aceb6f2 اضافه کردن گزارش بهینه‌سازی سرعت (PDF) 2026-09-02 12:22:10 +03:30
Behrad e76dbbf63d مستندسازی بهبود سرعت در README 2026-09-02 12:20:52 +03:30
Behrad e0ebae4817 بهبود سرعت: حذف کامل وابستگی‌های خارجی
- همه ۹ عکس سایت به‌صورت محلی (frontend/public/images) — بدون postimg/housedesign
- حذف فونت‌های خارجی (Google Fonts + fontcdn) — فونت سیستمی سریع
- favicon واقعی + کش nginx برای webp/ico
2026-09-01 23:04:57 +03:30
19 changed files with 42 additions and 55 deletions
+1
View File
@@ -23,3 +23,4 @@ Thumbs.db
# Database
*.sqlite3
*.db
frontend/public/images/originals/
+11
View File
@@ -72,3 +72,14 @@ npm run dev # http://localhost:5173
- فایل `.env` هرگز commit نمی‌شود (در `.gitignore` است)
- رمز عبور ادمین با bcrypt هش می‌شود
- توکن‌های JWT امضا دارند و مدت اعتبارشان قابل تنظیم است
## تغییرات اخیر
### بهبود سرعت (کامیت e0ebae4)
- **حذف کامل وابستگی‌های خارجی**: همه عکس‌های سایت به‌صورت محلی در `frontend/public/images/` قرار گرفتند (بدون وابستگی به سرورهای خارجی مثل postimg و housedesign)
- **حذف فونت‌های خارجی** (Google Fonts و fontcdn که رندر صفحه را قفل می‌کردند) — استفاده از فونت سیستمی سریع
- **favicon واقعی** اضافه شد (قبلاً خراب بود)
- **کش ۳۰ روزه** برای تصاویر و فایل‌های استاتیک در nginx
- نتیجه: صفحه‌ها در چند میلی‌ثانیه لود می‌شوند و سایت هیچ درخواست خارجی ندارد
> اگر نسخه قبلی سایت را اجرا کرده‌اید، برای دریافت نسخه جدید یک بار `docker compose down -v` و سپس `docker compose up --build -d` را اجرا کنید.
+10 -10
View File
@@ -2,9 +2,9 @@
BRAND = {
"name": "گروه ساختمانی آرامش",
"logo": "https://i.postimg.cc/XYNrsHsM/Chat-GPT-Image-Aug-6-2026-04-34-46-PM.png",
"hero": "https://i.postimg.cc/J0bKgQVg/Gemini-Generated-Image-mdh969mdh969mdh9.png",
"contact_bg": "https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png",
"logo": "/images/logo.png",
"hero": "/images/hero.png",
"contact_bg": "/images/contact.png",
"phone": "۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰",
"phone_href": "tel:+982188742210",
"email": "info@arameshbuildinggroup.com",
@@ -12,11 +12,11 @@ BRAND = {
}
IMAGES = [
"https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png",
"https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png",
"https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png",
"https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png",
"https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png",
"/images/img1.png",
"/images/img2.png",
"/images/contact.png",
"/images/img4.png",
"/images/img5.png",
]
SERVICES = [
@@ -154,8 +154,8 @@ PROJECTS = [
BEFORE_AFTER = {
"title": "از کانسپت تا خلق واقعیت",
"lead": "دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل می‌شود.",
"before": "https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_before.webp",
"after": "https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_after.webp",
"before": "/images/before.webp",
"after": "/images/after.webp",
"before_label": "کانسپت اولیه",
"after_label": "پروژه تکمیل‌شده",
}
Binary file not shown.
+1 -1
View File
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/png" href="/images/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Aramesh Building Group Luxury Website</title>
</head>
+7 -1
View File
@@ -19,8 +19,14 @@ server {
proxy_set_header X-Forwarded-Proto $scheme;
}
# تصاویر: بدون کش طولانی — تا تغییرات سریع دیده شوند
location ~* ^/images/ {
add_header Cache-Control "no-cache";
try_files $uri =404;
}
# کش استاتیک
location ~* \.(js|css|png|jpg|jpeg|gif|svg|woff2?)$ {
location ~* \.(js|css|png|jpg|jpeg|gif|svg|webp|ico|woff2?)$ {
expires 30d;
add_header Cache-Control "public, immutable";
try_files $uri =404;
Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

+10 -10
View File
@@ -1,8 +1,8 @@
export const BRAND = {
name: 'گروه ساختمانی آرامش',
logo: 'https://i.postimg.cc/XYNrsHsM/Chat-GPT-Image-Aug-6-2026-04-34-46-PM.png',
hero: 'https://i.postimg.cc/J0bKgQVg/Gemini-Generated-Image-mdh969mdh969mdh9.png',
contactBg: 'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png',
logo: '/images/logo.png',
hero: '/images/hero.png',
contactBg: '/images/contact.png',
phone: '۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰',
phoneHref: 'tel:+982188742210',
email: 'info@arameshbuildinggroup.com',
@@ -10,11 +10,11 @@ export const BRAND = {
};
export const IMAGES = [
'https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png',
'https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png',
'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png',
'https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png',
'https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png'
'/images/img1.png',
'/images/img2.png',
'/images/contact.png',
'/images/img4.png',
'/images/img5.png'
];
export const NAV = [
@@ -87,8 +87,8 @@ export const PROJECTS: Project[] = [
export const BEFORE_AFTER = {
title: 'از کانسپت تا خلق واقعیت',
lead: 'دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل می‌شود.',
before: 'https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_before.webp',
after: 'https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_after.webp',
before: '/images/before.webp',
after: '/images/after.webp',
beforeLabel: 'کانسپت اولیه',
afterLabel: 'پروژه تکمیل‌شده',
};
+1 -18
View File
@@ -1,6 +1,3 @@
/* @import url() FONT IMPORTS MUST ALWAYS BE AT THE VERY TOP OF THIS FILE, ABOVE THE TAILWIND IMPORTS — DO NOT DELETE THIS COMMENT */
@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap');
/* CRITICAL: THE FOLLOWING TAILWIND IMPORTS MUST NEVER BE DELETED OR REORDERED — DO NOT DELETE THIS COMMENT */
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@@ -8,27 +5,13 @@
/* END TAILWIND IMPORTS — ALL OTHER CSS MUST GO BELOW THIS LINE */
@font-face {
font-family: 'Pinar';
src: url('https://cdn.fontcdn.ir/Font/Persian/Pinar/Pinar.woff2') format('woff2'),
url('https://cdn.fontcdn.ir/Font/Persian/Pinar/Pinar.woff') format('woff');
font-weight: 400;
font-display: swap;
}
@font-face {
font-family: 'Pinar';
src: url('https://cdn.fontcdn.ir/Font/Persian/Pinar/Pinar-Bold.woff2') format('woff2'),
url('https://cdn.fontcdn.ir/Font/Persian/Pinar/Pinar-Bold.woff') format('woff');
font-weight: 700;
font-display: swap;
}
html {
scroll-behavior: smooth;
}
body {
background-color: #27221c;
color: #f5f3ef;
font-family: 'Pinar', 'Vazirmatn', Tahoma, sans-serif;
font-family: Tahoma, 'Segoe UI', sans-serif;
-webkit-font-smoothing: antialiased;
}
::selection {
-14
View File
@@ -1,14 +0,0 @@
{
"name": "magic-patterns-project",
"private": true,
"dependencies": {
"react": "18.3.1",
"react-dom": "18.3.1",
"react-router-dom": "6.30.2",
"lucide-react": "0.577.0",
"framer-motion": "11.18.2",
"@radix-ui/react-icons": "1.3.2",
"date-fns": "4.1.0",
"tailwind-merge": "2.6.1"
}
}
+1 -1
View File
@@ -9,7 +9,7 @@ export default {
ivory: '#F5F3EF',
},
fontFamily: {
pinar: ['Pinar', 'Vazirmatn', 'Tahoma', 'sans-serif'],
pinar: ['Tahoma', 'Segoe UI', 'sans-serif'],
},
transitionTimingFunction: {
lux: 'cubic-bezier(0.23, 1, 0.32, 1)',