Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35a558db20 | ||
|
|
5a6cb51333 | ||
|
|
dc200099ba | ||
|
|
0a55d5d0fe | ||
|
|
97dc728a4c | ||
|
|
87f38f1c0b | ||
|
|
8dab39ee83 | ||
|
|
32b6655a1e | ||
|
|
395aceb6f2 | ||
|
|
e76dbbf63d | ||
|
|
e0ebae4817 | ||
|
|
8bb303dda2 | ||
|
|
40ed7b5caf |
@@ -23,3 +23,4 @@ Thumbs.db
|
|||||||
# Database
|
# Database
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
*.db
|
*.db
|
||||||
|
frontend/public/images/originals/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# آرامش پلازا — پروژه کامل (فرانتاند + بکاند)
|
# گروه ساختمانی آرامش — پروژه کامل (فرانتاند + بکاند)
|
||||||
|
|
||||||
مونوریپوی سایت آرامش پلازا شامل:
|
مونوریپوی سایت گروه ساختمانی آرامش شامل:
|
||||||
|
|
||||||
- **`frontend/`** — سایت React + Vite + Tailwind (همه محتوا از API خوانده میشود)
|
- **`frontend/`** — سایت React + Vite + Tailwind (همه محتوا از API خوانده میشود)
|
||||||
- **`backend/`** — بکاند FastAPI + SQLAlchemy 2 + PostgreSQL + JWT
|
- **`backend/`** — بکاند FastAPI + SQLAlchemy 2 + PostgreSQL + JWT
|
||||||
@@ -72,3 +72,14 @@ npm run dev # http://localhost:5173
|
|||||||
- فایل `.env` هرگز commit نمیشود (در `.gitignore` است)
|
- فایل `.env` هرگز commit نمیشود (در `.gitignore` است)
|
||||||
- رمز عبور ادمین با bcrypt هش میشود
|
- رمز عبور ادمین با bcrypt هش میشود
|
||||||
- توکنهای JWT امضا دارند و مدت اعتبارشان قابل تنظیم است
|
- توکنهای JWT امضا دارند و مدت اعتبارشان قابل تنظیم است
|
||||||
|
|
||||||
|
## تغییرات اخیر
|
||||||
|
|
||||||
|
### بهبود سرعت (کامیت e0ebae4)
|
||||||
|
- **حذف کامل وابستگیهای خارجی**: همه عکسهای سایت بهصورت محلی در `frontend/public/images/` قرار گرفتند (بدون وابستگی به سرورهای خارجی مثل postimg و housedesign)
|
||||||
|
- **حذف فونتهای خارجی** (Google Fonts و fontcdn که رندر صفحه را قفل میکردند) — استفاده از فونت سیستمی سریع
|
||||||
|
- **favicon واقعی** اضافه شد (قبلاً خراب بود)
|
||||||
|
- **کش ۳۰ روزه** برای تصاویر و فایلهای استاتیک در nginx
|
||||||
|
- نتیجه: صفحهها در چند میلیثانیه لود میشوند و سایت هیچ درخواست خارجی ندارد
|
||||||
|
|
||||||
|
> اگر نسخه قبلی سایت را اجرا کردهاید، برای دریافت نسخه جدید یک بار `docker compose down -v` و سپس `docker compose up --build -d` را اجرا کنید.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# بکاند آرامش پلازا (ArameshPlaza API)
|
# بکاند گروه ساختمانی آرامش (Aramesh Building Group API)
|
||||||
|
|
||||||
بکاند سایت آرامش پلازا — ساختهشده با **FastAPI** + **PostgreSQL** + **SQLAlchemy 2** + **JWT**.
|
بکاند سایت گروه ساختمانی آرامش — ساختهشده با **FastAPI** + **PostgreSQL** + **SQLAlchemy 2** + **JWT**.
|
||||||
|
|
||||||
## امکانات
|
## امکانات
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ Authorization: Bearer <access_token>
|
|||||||
| GET | `/api/team` | اعضای تیم |
|
| GET | `/api/team` | اعضای تیم |
|
||||||
| GET | `/api/timeline` | تایملاین شرکت |
|
| GET | `/api/timeline` | تایملاین شرکت |
|
||||||
| GET | `/api/stats` | آمار |
|
| GET | `/api/stats` | آمار |
|
||||||
| GET | `/api/why-us` | چرا آرامش پلازا |
|
| GET | `/api/why-us` | چرا گروه ساختمانی آرامش |
|
||||||
| GET | `/api/before-after` | بخش قبل/بعد |
|
| GET | `/api/before-after` | بخش قبل/بعد |
|
||||||
| GET | `/api/site` | **همه محتوا در یک درخواست** |
|
| GET | `/api/site` | **همه محتوا در یک درخواست** |
|
||||||
| POST | `/api/contact` | ثبت پیام تماس |
|
| POST | `/api/contact` | ثبت پیام تماس |
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ router = APIRouter()
|
|||||||
|
|
||||||
@router.get("/health")
|
@router.get("/health")
|
||||||
def health():
|
def health():
|
||||||
return {"status": "ok", "app": "ArameshPlaza API"}
|
return {"status": "ok", "app": "Aramesh Building Group API"}
|
||||||
|
|
||||||
|
|
||||||
@router.get("/brand", response_model=BrandOut)
|
@router.get("/brand", response_model=BrandOut)
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ from .database import Base, engine
|
|||||||
Base.metadata.create_all(bind=engine)
|
Base.metadata.create_all(bind=engine)
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="ArameshPlaza API",
|
title="Aramesh Building Group API",
|
||||||
description=(
|
description=(
|
||||||
"بکاند سایت آرامش پلازا — API محتوای سایت، فرم تماس و خبرنامه، "
|
"بکاند سایت گروه ساختمانی آرامش — API محتوای سایت، فرم تماس و خبرنامه، "
|
||||||
"و پنل مدیریت با احراز هویت JWT."
|
"و پنل مدیریت با احراز هویت JWT."
|
||||||
),
|
),
|
||||||
version="1.0.0",
|
version="1.0.0",
|
||||||
@@ -36,7 +36,7 @@ app.include_router(admin.router, prefix="/api/admin", tags=["پنل مدیریت
|
|||||||
@app.get("/")
|
@app.get("/")
|
||||||
def root():
|
def root():
|
||||||
return {
|
return {
|
||||||
"app": "ArameshPlaza API",
|
"app": "Aramesh Building Group API",
|
||||||
"docs": "/docs",
|
"docs": "/docs",
|
||||||
"health": "/api/health",
|
"health": "/api/health",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ def seed(force: bool = False) -> None:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(description="Seed کردن دیتابیس آرامش پلازا")
|
parser = argparse.ArgumentParser(description="Seed کردن دیتابیس گروه ساختمانی آرامش")
|
||||||
parser.add_argument("--force", action="store_true", help="حذف همه جداول و ساخت مجدد")
|
parser.add_argument("--force", action="store_true", help="حذف همه جداول و ساخت مجدد")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
seed(force=args.force)
|
seed(force=args.force)
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
"""دادههای اولیه سایت آرامش پلازا — برگرفته از فایل src/data/site.ts فرانتاند."""
|
"""دادههای اولیه سایت گروه ساختمانی آرامش — برگرفته از فایل src/data/site.ts فرانتاند."""
|
||||||
|
|
||||||
BRAND = {
|
BRAND = {
|
||||||
"name": "آرامش پلازا",
|
"name": "گروه ساختمانی آرامش",
|
||||||
"logo": "https://i.postimg.cc/XYNrsHsM/Chat-GPT-Image-Aug-6-2026-04-34-46-PM.png",
|
"logo": "/images/logo.png",
|
||||||
"hero": "https://i.postimg.cc/J0bKgQVg/Gemini-Generated-Image-mdh969mdh969mdh9.png",
|
"hero": "/images/hero.png",
|
||||||
"contact_bg": "https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png",
|
"contact_bg": "/images/contact.png",
|
||||||
"phone": "۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰",
|
"phone": "۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰",
|
||||||
"phone_href": "tel:+982188742210",
|
"phone_href": "tel:+982188742210",
|
||||||
"email": "info@arameshplaza.com",
|
"email": "info@arameshbuildinggroup.com",
|
||||||
"address": "تهران، خیابان ولیعصر، برج آرامش، طبقه هجدهم",
|
"address": "تهران، خیابان ولیعصر، برج آرامش، طبقه هجدهم",
|
||||||
}
|
}
|
||||||
|
|
||||||
IMAGES = [
|
IMAGES = [
|
||||||
"https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png",
|
"/images/img1.png",
|
||||||
"https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png",
|
"/images/img2.png",
|
||||||
"https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png",
|
"/images/contact.png",
|
||||||
"https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png",
|
"/images/img4.png",
|
||||||
"https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png",
|
"/images/img5.png",
|
||||||
]
|
]
|
||||||
|
|
||||||
SERVICES = [
|
SERVICES = [
|
||||||
@@ -154,8 +154,8 @@ PROJECTS = [
|
|||||||
BEFORE_AFTER = {
|
BEFORE_AFTER = {
|
||||||
"title": "از کانسپت تا خلق واقعیت",
|
"title": "از کانسپت تا خلق واقعیت",
|
||||||
"lead": "دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل میشود.",
|
"lead": "دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل میشود.",
|
||||||
"before": "https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_before.webp",
|
"before": "/images/before.webp",
|
||||||
"after": "https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_after.webp",
|
"after": "/images/after.webp",
|
||||||
"before_label": "کانسپت اولیه",
|
"before_label": "کانسپت اولیه",
|
||||||
"after_label": "پروژه تکمیلشده",
|
"after_label": "پروژه تکمیلشده",
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ TIMELINE = [
|
|||||||
{"year": "۱۳۸۷", "title": "ورود به بازار تجاری", "desc": "طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.", "image": IMAGES[1]},
|
{"year": "۱۳۸۷", "title": "ورود به بازار تجاری", "desc": "طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.", "image": IMAGES[1]},
|
||||||
{"year": "۱۳۸۹", "title": "استاندارد بینالمللی", "desc": "استقرار نظام کنترل کیفیت و دریافت گواهینامههای مدیریت پروژه.", "image": IMAGES[4]},
|
{"year": "۱۳۸۹", "title": "استاندارد بینالمللی", "desc": "استقرار نظام کنترل کیفیت و دریافت گواهینامههای مدیریت پروژه.", "image": IMAGES[4]},
|
||||||
{"year": "۱۳۹۵", "title": "بلندمرتبهسازی", "desc": "آغاز ساخت نخستین برج بیستطبقه شرکت در شمال تهران.", "image": IMAGES[3]},
|
{"year": "۱۳۹۵", "title": "بلندمرتبهسازی", "desc": "آغاز ساخت نخستین برج بیستطبقه شرکت در شمال تهران.", "image": IMAGES[3]},
|
||||||
{"year": "۱۴۰۳", "title": "آرامش پلازا امروز", "desc": "پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایهگذاری ساختمانی اختصاصی.", "image": IMAGES[0]},
|
{"year": "۱۴۰۳", "title": "گروه ساختمانی آرامش امروز", "desc": "پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایهگذاری ساختمانی اختصاصی.", "image": IMAGES[0]},
|
||||||
]
|
]
|
||||||
|
|
||||||
WHY = [
|
WHY = [
|
||||||
@@ -179,7 +179,7 @@ WHY = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
TESTIMONIALS = [
|
TESTIMONIALS = [
|
||||||
{"name": "مهندس سارا کیانی", "role": "سرمایهگذار پروژه پارسه", "quote": "گزارشهای ماهانه آرامش پلازا آنقدر دقیق بود که هیچوقت نیاز نشد نگران سرمایهام باشم. پروژه دو ماه زودتر از موعد به بهرهبرداری رسید."},
|
{"name": "مهندس سارا کیانی", "role": "سرمایهگذار پروژه پارسه", "quote": "گزارشهای ماهانه گروه ساختمانی آرامش آنقدر دقیق بود که هیچوقت نیاز نشد نگران سرمایهام باشم. پروژه دو ماه زودتر از موعد به بهرهبرداری رسید."},
|
||||||
{"name": "دکتر امیرحسین راد", "role": "ساکن برج الهیه", "quote": "کیفیت اجرا در جزئیاتی دیده میشود که معمولاً کسی به آنها فکر نمیکند؛ از عایق صوتی پنجرهها تا نور غیرمستقیم راهروها."},
|
{"name": "دکتر امیرحسین راد", "role": "ساکن برج الهیه", "quote": "کیفیت اجرا در جزئیاتی دیده میشود که معمولاً کسی به آنها فکر نمیکند؛ از عایق صوتی پنجرهها تا نور غیرمستقیم راهروها."},
|
||||||
{"name": "مریم دلاور", "role": "مدیر مجموعه ویلاهای دریاکنار", "quote": "همکاری با تیم طراحی، تجربهای واقعاً حرفهای بود. ایدههای ما را شنیدند و به زبان معماری ترجمه کردند."},
|
{"name": "مریم دلاور", "role": "مدیر مجموعه ویلاهای دریاکنار", "quote": "همکاری با تیم طراحی، تجربهای واقعاً حرفهای بود. ایدههای ما را شنیدند و به زبان معماری ترجمه کردند."},
|
||||||
]
|
]
|
||||||
@@ -283,7 +283,7 @@ ARTICLES = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
FAQS = [
|
FAQS = [
|
||||||
{"question": "حداقل سرمایه برای مشارکت در پروژههای آرامش پلازا چقدر است؟", "answer": "ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایهگذاری از سطح مشخصی آغاز میشوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه میشود."},
|
{"question": "حداقل سرمایه برای مشارکت در پروژههای گروه ساختمانی آرامش چقدر است؟", "answer": "ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایهگذاری از سطح مشخصی آغاز میشوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه میشود."},
|
||||||
{"question": "مدت زمان معمول ساخت یک برج مسکونی چقدر است؟", "answer": "بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است."},
|
{"question": "مدت زمان معمول ساخت یک برج مسکونی چقدر است؟", "answer": "بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است."},
|
||||||
{"question": "آیا امکان تغییر نقشه داخلی واحد وجود دارد؟", "answer": "بله. تا پیش از پایان مرحله سفتکاری، امکان شخصیسازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است."},
|
{"question": "آیا امکان تغییر نقشه داخلی واحد وجود دارد؟", "answer": "بله. تا پیش از پایان مرحله سفتکاری، امکان شخصیسازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است."},
|
||||||
{"question": "خدمات پس از تحویل شامل چه مواردی میشود؟", "answer": "پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دورهای سالانه و تضمین اجرای نما و عایقکاری."},
|
{"question": "خدمات پس از تحویل شامل چه مواردی میشود؟", "answer": "پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دورهای سالانه و تضمین اجرای نما و عایقکاری."},
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<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" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>ArameshPlaza Luxury Website</title>
|
<title>Aramesh Building Group Luxury Website</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -19,8 +19,14 @@ server {
|
|||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
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;
|
expires 30d;
|
||||||
add_header Cache-Control "public, immutable";
|
add_header Cache-Control "public, immutable";
|
||||||
try_files $uri =404;
|
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 |
@@ -7,7 +7,7 @@ export function FloatingContact() {
|
|||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
href={brand.phone_href}
|
href={brand.phone_href}
|
||||||
aria-label="تماس تلفنی با آرامش پلازا"
|
aria-label="تماس تلفنی با گروه ساختمانی آرامش"
|
||||||
className="group fixed bottom-8 left-8 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-copper text-char shadow-[0_10px_30px_rgba(0,0,0,0.45)] transition-transform duration-200 ease-lux hover:scale-105">
|
className="group fixed bottom-8 left-8 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-copper text-char shadow-[0_10px_30px_rgba(0,0,0,0.45)] transition-transform duration-200 ease-lux hover:scale-105">
|
||||||
|
|
||||||
<span className="absolute inset-0 rounded-full border border-copper/50 opacity-0 transition-transform duration-300 ease-lux group-hover:scale-125 group-hover:opacity-100" />
|
<span className="absolute inset-0 rounded-full border border-copper/50 opacity-0 transition-transform duration-300 ease-lux group-hover:scale-125 group-hover:opacity-100" />
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export function Footer() {
|
|||||||
<div className="lg:col-span-4">
|
<div className="lg:col-span-4">
|
||||||
<img src={brand.logo} alt={brand.name} className="h-20 w-auto object-contain" />
|
<img src={brand.logo} alt={brand.name} className="h-20 w-auto object-contain" />
|
||||||
<p className="mt-6 max-w-sm text-sm font-light leading-8 text-ivory/55">
|
<p className="mt-6 max-w-sm text-sm font-light leading-8 text-ivory/55">
|
||||||
آرامش پلازا از سال ۱۳۸۳ ساختمانهایی میسازد که قرار است چند نسل در آنها زندگی کنند؛ معماری آرام،
|
گروه ساختمانی آرامش از سال ۱۳۸۳ ساختمانهایی میسازد که قرار است چند نسل در آنها زندگی کنند؛ معماری آرام،
|
||||||
اجرای دقیق و سرمایهگذاری شفاف.
|
اجرای دقیق و سرمایهگذاری شفاف.
|
||||||
</p>
|
</p>
|
||||||
<div className="mt-6 flex gap-3">
|
<div className="mt-6 flex gap-3">
|
||||||
@@ -85,7 +85,7 @@ export function Footer() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-ivory/10 pt-6 text-xs font-light text-ivory/40 md:flex-row">
|
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-ivory/10 pt-6 text-xs font-light text-ivory/40 md:flex-row">
|
||||||
<p>© ۱۴۰۳ آرامش پلازا — تمامی حقوق محفوظ است.</p>
|
<p>© ۱۴۰۳ گروه ساختمانی آرامش — تمامی حقوق محفوظ است.</p>
|
||||||
<p>طراحی و ساخت با دقتِ معماری</p>
|
<p>طراحی و ساخت با دقتِ معماری</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export function Articles() {
|
|||||||
آخرین مقالات
|
آخرین مقالات
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-5 text-base font-light leading-9 text-ivory/60">
|
<p className="mt-5 text-base font-light leading-9 text-ivory/60">
|
||||||
یادداشتهای تیم معماری، اجرا و سرمایهگذاری آرامش پلازا درباره آنچه در کارگاه و بازار میگذرد.
|
یادداشتهای تیم معماری، اجرا و سرمایهگذاری گروه ساختمانی آرامش درباره آنچه در کارگاه و بازار میگذرد.
|
||||||
</p>
|
</p>
|
||||||
<div className="mt-6 h-px w-24 bg-copper/70" />
|
<div className="mt-6 h-px w-24 bg-copper/70" />
|
||||||
</Reveal>
|
</Reveal>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export function Gallery() {
|
|||||||
<div className="mx-auto max-w-site px-6 lg:px-10">
|
<div className="mx-auto max-w-site px-6 lg:px-10">
|
||||||
<SectionHeading
|
<SectionHeading
|
||||||
title="گالری تصاویر"
|
title="گالری تصاویر"
|
||||||
lead="قابهایی از کارگاهها و پروژههای تحویلشده آرامش پلازا."
|
lead="قابهایی از کارگاهها و پروژههای تحویلشده گروه ساختمانی آرامش."
|
||||||
align="center"
|
align="center"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ export function Gallery() {
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src={src}
|
src={src}
|
||||||
alt={`تصویری از پروژههای آرامش پلازا، شماره ${(i + 1).toLocaleString('fa-IR')}`}
|
alt={`تصویری از پروژههای گروه ساختمانی آرامش، شماره ${(i + 1).toLocaleString('fa-IR')}`}
|
||||||
className="aspect-[4/3] w-full object-cover transition-transform duration-500 ease-lux group-hover:scale-105"
|
className="aspect-[4/3] w-full object-cover transition-transform duration-500 ease-lux group-hover:scale-105"
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ export function Hero() {
|
|||||||
const overlay = useTransform(scrollY, [0, 600], [0.5, 0.78])
|
const overlay = useTransform(scrollY, [0, 600], [0.5, 0.78])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="relative h-screen min-h-[640px] w-full overflow-hidden" aria-label="معرفی آرامش پلازا">
|
<section className="relative h-screen min-h-[640px] w-full overflow-hidden" aria-label="معرفی گروه ساختمانی آرامش">
|
||||||
<motion.img
|
<motion.img
|
||||||
src={brand.hero}
|
src={brand.hero}
|
||||||
alt="نمای شبانه برج مسکونی ساختهشده توسط آرامش پلازا"
|
alt="نمای شبانه برج مسکونی ساختهشده توسط گروه ساختمانی آرامش"
|
||||||
style={{ y: imageY }}
|
style={{ y: imageY }}
|
||||||
className="absolute inset-0 h-[114%] w-full object-cover"
|
className="absolute inset-0 h-[114%] w-full object-cover"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ export function Newsletter() {
|
|||||||
<div className="mx-auto grid max-w-site items-center gap-8 px-6 lg:grid-cols-2 lg:px-10">
|
<div className="mx-auto grid max-w-site items-center gap-8 px-6 lg:grid-cols-2 lg:px-10">
|
||||||
<Reveal>
|
<Reveal>
|
||||||
<h2 id="newsletter-title" className="text-2xl font-bold leading-relaxed text-char md:text-3xl">
|
<h2 id="newsletter-title" className="text-2xl font-bold leading-relaxed text-char md:text-3xl">
|
||||||
خبرنامه آرامش پلازا
|
خبرنامه گروه ساختمانی آرامش
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-3 max-w-md text-sm font-light leading-8 text-char/75">
|
<p className="mt-3 max-w-md text-sm font-light leading-8 text-char/75">
|
||||||
هر ماه یک ایمیل: پروژههای جدید، فرصتهای سرمایهگذاری و یادداشتهای تیم معماری.
|
هر ماه یک ایمیل: پروژههای جدید، فرصتهای سرمایهگذاری و یادداشتهای تیم معماری.
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export function Story({ showLink = true, showLabel = true, alignTop = false, chi
|
|||||||
|
|
||||||
<Reveal delay={0.08}>
|
<Reveal delay={0.08}>
|
||||||
<p className="mt-8 text-base font-light leading-9 text-ivory/65">
|
<p className="mt-8 text-base font-light leading-9 text-ivory/65">
|
||||||
آرامش پلازا با یک دفتر کوچک معماری آغاز شد و امروز یکی از مجموعههای شناختهشده ساختوساز لوکس در ایران
|
گروه ساختمانی آرامش با یک دفتر کوچک معماری آغاز شد و امروز یکی از مجموعههای شناختهشده ساختوساز لوکس در ایران
|
||||||
است. در تمام این سالها یک اصل تغییر نکرده است: ساختمان باید برای زندگی ساخته شود، نه برای فروش سریع.
|
است. در تمام این سالها یک اصل تغییر نکرده است: ساختمان باید برای زندگی ساخته شود، نه برای فروش سریع.
|
||||||
</p>
|
</p>
|
||||||
<p className="mt-5 text-base font-light leading-9 text-ivory/65">
|
<p className="mt-5 text-base font-light leading-9 text-ivory/65">
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export function WhyUs() {
|
|||||||
<div className="mx-auto grid max-w-site gap-14 px-6 lg:grid-cols-12 lg:px-10">
|
<div className="mx-auto grid max-w-site gap-14 px-6 lg:grid-cols-12 lg:px-10">
|
||||||
<div className="lg:col-span-5">
|
<div className="lg:col-span-5">
|
||||||
<SectionHeading
|
<SectionHeading
|
||||||
title="چرا آرامش پلازا"
|
title="چرا گروه ساختمانی آرامش"
|
||||||
lead="شش دلیلی که کارفرمایان و سرمایهگذاران بار دوم هم به ما برمیگردند." />
|
lead="شش دلیلی که کارفرمایان و سرمایهگذاران بار دوم هم به ما برمیگردند." />
|
||||||
|
|
||||||
<Reveal delay={0.12}>
|
<Reveal delay={0.12}>
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
export const BRAND = {
|
export const BRAND = {
|
||||||
name: 'آرامش پلازا',
|
name: 'گروه ساختمانی آرامش',
|
||||||
logo: 'https://i.postimg.cc/XYNrsHsM/Chat-GPT-Image-Aug-6-2026-04-34-46-PM.png',
|
logo: '/images/logo.png',
|
||||||
hero: 'https://i.postimg.cc/J0bKgQVg/Gemini-Generated-Image-mdh969mdh969mdh9.png',
|
hero: '/images/hero.png',
|
||||||
contactBg: 'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png',
|
contactBg: '/images/contact.png',
|
||||||
phone: '۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰',
|
phone: '۰۲۱ ۸۸ ۷۴ ۲۲ ۱۰',
|
||||||
phoneHref: 'tel:+982188742210',
|
phoneHref: 'tel:+982188742210',
|
||||||
email: 'info@arameshplaza.com',
|
email: 'info@arameshbuildinggroup.com',
|
||||||
address: 'تهران، خیابان ولیعصر، برج آرامش، طبقه هجدهم'
|
address: 'تهران، خیابان ولیعصر، برج آرامش، طبقه هجدهم'
|
||||||
};
|
};
|
||||||
|
|
||||||
export const IMAGES = [
|
export const IMAGES = [
|
||||||
'https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png',
|
'/images/img1.png',
|
||||||
'https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png',
|
'/images/img2.png',
|
||||||
'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png',
|
'/images/contact.png',
|
||||||
'https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png',
|
'/images/img4.png',
|
||||||
'https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png'
|
'/images/img5.png'
|
||||||
];
|
];
|
||||||
|
|
||||||
export const NAV = [
|
export const NAV = [
|
||||||
@@ -87,8 +87,8 @@ export const PROJECTS: Project[] = [
|
|||||||
export const BEFORE_AFTER = {
|
export const BEFORE_AFTER = {
|
||||||
title: 'از کانسپت تا خلق واقعیت',
|
title: 'از کانسپت تا خلق واقعیت',
|
||||||
lead: 'دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل میشود.',
|
lead: 'دستگیره را بکشید و ببینید نمای ساختمانی چگونه از حالت اولیه به فرم مدرن تبدیل میشود.',
|
||||||
before: 'https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_before.webp',
|
before: '/images/before.webp',
|
||||||
after: 'https://cdn.housedesign.ai/se/housedesign/assets/housedesign-home/compare/1_after.webp',
|
after: '/images/after.webp',
|
||||||
beforeLabel: 'کانسپت اولیه',
|
beforeLabel: 'کانسپت اولیه',
|
||||||
afterLabel: 'پروژه تکمیلشده',
|
afterLabel: 'پروژه تکمیلشده',
|
||||||
};
|
};
|
||||||
@@ -99,7 +99,7 @@ export const TIMELINE = [
|
|||||||
{ year: '۱۳۸۷', title: 'ورود به بازار تجاری', desc: 'طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.', image: IMAGES[1] },
|
{ year: '۱۳۸۷', title: 'ورود به بازار تجاری', desc: 'طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.', image: IMAGES[1] },
|
||||||
{ year: '۱۳۸۹', title: 'استاندارد بینالمللی', desc: 'استقرار نظام کنترل کیفیت و دریافت گواهینامههای مدیریت پروژه.', image: IMAGES[4] },
|
{ year: '۱۳۸۹', title: 'استاندارد بینالمللی', desc: 'استقرار نظام کنترل کیفیت و دریافت گواهینامههای مدیریت پروژه.', image: IMAGES[4] },
|
||||||
{ year: '۱۳۹۵', title: 'بلندمرتبهسازی', desc: 'آغاز ساخت نخستین برج بیستطبقه شرکت در شمال تهران.', image: IMAGES[3] },
|
{ year: '۱۳۹۵', title: 'بلندمرتبهسازی', desc: 'آغاز ساخت نخستین برج بیستطبقه شرکت در شمال تهران.', image: IMAGES[3] },
|
||||||
{ year: '۱۴۰۳', title: 'آرامش پلازا امروز', desc: 'پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایهگذاری ساختمانی اختصاصی.', image: IMAGES[0] }
|
{ year: '۱۴۰۳', title: 'گروه ساختمانی آرامش امروز', desc: 'پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایهگذاری ساختمانی اختصاصی.', image: IMAGES[0] }
|
||||||
];
|
];
|
||||||
|
|
||||||
export const WHY = [
|
export const WHY = [
|
||||||
@@ -112,7 +112,7 @@ export const WHY = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const TESTIMONIALS = [
|
export const TESTIMONIALS = [
|
||||||
{ name: 'مهندس سارا کیانی', role: 'سرمایهگذار پروژه پارسه', quote: 'گزارشهای ماهانه آرامش پلازا آنقدر دقیق بود که هیچوقت نیاز نشد نگران سرمایهام باشم. پروژه دو ماه زودتر از موعد به بهرهبرداری رسید.' },
|
{ name: 'مهندس سارا کیانی', role: 'سرمایهگذار پروژه پارسه', quote: 'گزارشهای ماهانه گروه ساختمانی آرامش آنقدر دقیق بود که هیچوقت نیاز نشد نگران سرمایهام باشم. پروژه دو ماه زودتر از موعد به بهرهبرداری رسید.' },
|
||||||
{ name: 'دکتر امیرحسین راد', role: 'ساکن برج الهیه', quote: 'کیفیت اجرا در جزئیاتی دیده میشود که معمولاً کسی به آنها فکر نمیکند؛ از عایق صوتی پنجرهها تا نور غیرمستقیم راهروها.' },
|
{ name: 'دکتر امیرحسین راد', role: 'ساکن برج الهیه', quote: 'کیفیت اجرا در جزئیاتی دیده میشود که معمولاً کسی به آنها فکر نمیکند؛ از عایق صوتی پنجرهها تا نور غیرمستقیم راهروها.' },
|
||||||
{ name: 'مریم دلاور', role: 'مدیر مجموعه ویلاهای دریاکنار', quote: 'همکاری با تیم طراحی، تجربهای واقعاً حرفهای بود. ایدههای ما را شنیدند و به زبان معماری ترجمه کردند.' }
|
{ name: 'مریم دلاور', role: 'مدیر مجموعه ویلاهای دریاکنار', quote: 'همکاری با تیم طراحی، تجربهای واقعاً حرفهای بود. ایدههای ما را شنیدند و به زبان معماری ترجمه کردند.' }
|
||||||
];
|
];
|
||||||
@@ -138,7 +138,7 @@ export const ARTICLES: Article[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const FAQS = [
|
export const FAQS = [
|
||||||
{ q: 'حداقل سرمایه برای مشارکت در پروژههای آرامش پلازا چقدر است؟', a: 'ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایهگذاری از سطح مشخصی آغاز میشوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه میشود.' },
|
{ q: 'حداقل سرمایه برای مشارکت در پروژههای گروه ساختمانی آرامش چقدر است؟', a: 'ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایهگذاری از سطح مشخصی آغاز میشوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه میشود.' },
|
||||||
{ q: 'مدت زمان معمول ساخت یک برج مسکونی چقدر است؟', a: 'بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است.' },
|
{ q: 'مدت زمان معمول ساخت یک برج مسکونی چقدر است؟', a: 'بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است.' },
|
||||||
{ q: 'آیا امکان تغییر نقشه داخلی واحد وجود دارد؟', a: 'بله. تا پیش از پایان مرحله سفتکاری، امکان شخصیسازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است.' },
|
{ q: 'آیا امکان تغییر نقشه داخلی واحد وجود دارد؟', a: 'بله. تا پیش از پایان مرحله سفتکاری، امکان شخصیسازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است.' },
|
||||||
{ q: 'خدمات پس از تحویل شامل چه مواردی میشود؟', a: 'پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دورهای سالانه و تضمین اجرای نما و عایقکاری.' },
|
{ q: 'خدمات پس از تحویل شامل چه مواردی میشود؟', a: 'پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دورهای سالانه و تضمین اجرای نما و عایقکاری.' },
|
||||||
|
|||||||
@@ -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 */
|
/* CRITICAL: THE FOLLOWING TAILWIND IMPORTS MUST NEVER BE DELETED OR REORDERED — DO NOT DELETE THIS COMMENT */
|
||||||
@import 'tailwindcss/base';
|
@import 'tailwindcss/base';
|
||||||
@import 'tailwindcss/components';
|
@import 'tailwindcss/components';
|
||||||
@@ -8,27 +5,13 @@
|
|||||||
|
|
||||||
/* END TAILWIND IMPORTS — ALL OTHER CSS MUST GO BELOW THIS LINE */
|
/* 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 {
|
html {
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
background-color: #27221c;
|
background-color: #27221c;
|
||||||
color: #f5f3ef;
|
color: #f5f3ef;
|
||||||
font-family: 'Pinar', 'Vazirmatn', Tahoma, sans-serif;
|
font-family: Tahoma, 'Segoe UI', sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
}
|
}
|
||||||
::selection {
|
::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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,7 +13,7 @@ export function About() {
|
|||||||
<>
|
<>
|
||||||
<PageHero
|
<PageHero
|
||||||
title="درباره ما"
|
title="درباره ما"
|
||||||
lead="آرامش پلازا مجموعهای از معماران، مهندسان سازه و مدیران پروژه است که از سال ۱۳۸۳ در حوزه ساختوساز لوکس فعالیت میکند."
|
lead="گروه ساختمانی آرامش مجموعهای از معماران، مهندسان سازه و مدیران پروژه است که از سال ۱۳۸۳ در حوزه ساختوساز لوکس فعالیت میکند."
|
||||||
image={IMAGES[3]}
|
image={IMAGES[3]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export function Blog() {
|
|||||||
<>
|
<>
|
||||||
<PageHero
|
<PageHero
|
||||||
title="وبلاگ"
|
title="وبلاگ"
|
||||||
lead="یادداشتهای تیم معماری، اجرا و سرمایهگذاری آرامش پلازا درباره آنچه در کارگاه و بازار میگذرد."
|
lead="یادداشتهای تیم معماری، اجرا و سرمایهگذاری گروه ساختمانی آرامش درباره آنچه در کارگاه و بازار میگذرد."
|
||||||
image={IMAGES[2]}
|
image={IMAGES[2]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { IMAGES } from '../data/site'
|
|||||||
const MODELS = [
|
const MODELS = [
|
||||||
{
|
{
|
||||||
title: 'مشارکت در ساخت',
|
title: 'مشارکت در ساخت',
|
||||||
desc: 'مالک زمین و آرامش پلازا در سود پروژه شریک میشوند؛ اجرا، مجوزها و فروش بر عهده ماست.',
|
desc: 'مالک زمین و گروه ساختمانی آرامش در سود پروژه شریک میشوند؛ اجرا، مجوزها و فروش بر عهده ماست.',
|
||||||
points: ['ارزیابی رایگان زمین', 'قرارداد شفاف با ضمانت اجرا', 'گزارش ماهانه پیشرفت'],
|
points: ['ارزیابی رایگان زمین', 'قرارداد شفاف با ضمانت اجرا', 'گزارش ماهانه پیشرفت'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export default {
|
|||||||
ivory: '#F5F3EF',
|
ivory: '#F5F3EF',
|
||||||
},
|
},
|
||||||
fontFamily: {
|
fontFamily: {
|
||||||
pinar: ['Pinar', 'Vazirmatn', 'Tahoma', 'sans-serif'],
|
pinar: ['Tahoma', 'Segoe UI', 'sans-serif'],
|
||||||
},
|
},
|
||||||
transitionTimingFunction: {
|
transitionTimingFunction: {
|
||||||
lux: 'cubic-bezier(0.23, 1, 0.32, 1)',
|
lux: 'cubic-bezier(0.23, 1, 0.32, 1)',
|
||||||
|
|||||||