Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35a558db20 | ||
|
|
5a6cb51333 | ||
|
|
dc200099ba | ||
|
|
0a55d5d0fe | ||
|
|
97dc728a4c | ||
|
|
87f38f1c0b | ||
|
|
8dab39ee83 | ||
|
|
32b6655a1e | ||
|
|
395aceb6f2 | ||
|
|
e76dbbf63d | ||
|
|
e0ebae4817 |
@@ -23,3 +23,4 @@ Thumbs.db
|
||||
# Database
|
||||
*.sqlite3
|
||||
*.db
|
||||
frontend/public/images/originals/
|
||||
|
||||
@@ -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` را اجرا کنید.
|
||||
|
||||
@@ -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": "پروژه تکمیلشده",
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
After Width: | Height: | Size: 302 KiB |
|
After Width: | Height: | Size: 283 KiB |
|
After Width: | Height: | Size: 583 KiB |
|
After Width: | Height: | Size: 481 KiB |
|
After Width: | Height: | Size: 505 KiB |
|
After Width: | Height: | Size: 500 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 228 KiB |
@@ -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,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 {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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)',
|
||||
|
||||