هزینه طراحی سایت در ایران؛ چه چیزی قیمت را تعیین می کند

یاسین
1405/7/2
13 دقیقه
226 بازدید
هزینه طراحی سایت در ایران؛ چه چیزی قیمت را تعیین می کند

پاسخ کوتاه: هزینه طراحی سایت در ایران از سه چیز ساخته می شود — ساعت کار واقعی پروژه، تصمیم های دامنهٔ کار (قالب آماده یا رابط کاربری اختصاصی، تعداد قالب صفحه، امکانات)، و هزینه هایی که هر سال برمی گردند. پیش فاکتوری که این سه را جدا نشان ندهد قابل مقایسه نیست، حتی وقتی قیمت نهایی اش کمتر باشد. این راهنما نشان می دهد عدد قیمت از کجا ساخته می شود و کجای آن قابل مذاکره است.

برای نوشتن این متن، ده صفحهٔ فارسی که روی همین عبارت رتبه دارند را با واکشی خام HTML سنجیدیم (نه با خلاصه ساز). نتیجه: هیچ کدام از آن ده صفحه حتی یک بلوک کد نداشت، هیچ کدام الگوی پیش فاکتور خط به خط نداد، و فقط یکی از ده صفحه به مبنای «نفر ساعت» اشاره کرده بود. بیشترشان می گفتند قیمت چقدر است؛ تقریبا هیچ کدام نمی گفتند از کجا ساخته می شود. همین فاصله، موضوع این مقاله است.

قطعات فلزی و چوبی جدا شده در سینی های چوبی روی میز کار
تفکیک اقلام روی میز کار، همان کاری است که پیش فاکتور خط به خط برای تو می کند: هر قلم در سبد خودش، نه همه در یک عدد.

قیمت طراحی سایت از چه چیزی ساخته می شود؟

هزینهٔ طراحی سایت یک عدد ثابت روی یک پکیج نیست؛ حاصل جمع چند تصمیم است که بعضی را تو می گیری و بعضی را مجری. جدول زیر هفت اهرم اصلی را نشان می دهد. هیچ درصدی در این جدول نیست، چون ادعای درصدی که اندازه گیری نشده باشد، تصمیم تو را بهتر نمی کند.

اهرمپرسش درستی که باید بپرسیچه چیزی را در قیمت جابجا می کند
نوع و هدف سایتاین سایت قرار است چه کاری انجام دهد: معرفی، فروش، یا اجرای یک فرایند؟فروشگاه و سامانهٔ اختصاصی، امکانات بیشتری می خواهند و ساعت بیشتری می برند
قالب آماده یا اختصاصیرابط کاربری از صفر طراحی می شود یا روی قالب آماده سوار می شود؟طراحی رابط کاربری و پیاده سازی آن، ساعت مستقل خودش را دارد
تعداد قالب صفحهچند نوع صفحهٔ متفاوت داریم؟ (صفحهٔ خدمات، مقاله، محصول، پنل)هر قالب صفحه یک بار طراحی و یک بار کدنویسی می شود
امکاناتکدام امکانات امروز لازم است و کدام «شاید بعدا»؟هر امکان، ساعت کدنویسی و تست جدا دارد
محتوامتن، عکس و دسته بندی را تو می دهی یا مجری می سازد؟تولید محتوا وقتی به پروژه اضافه شود، مثل یک قلم مستقل قیمت می خورد
کیفیت فنیسرعت، تگ های استاندارد، ساختار سئو و امنیت از روز اول هست یا بعدا اضافه می شود؟سایت تندتر و استانداردتر، ساعت مهندسی بیشتری می برد
زمان تحویلاین پروژه در صف معمول است یا باید جلو بیفتد؟جلو انداختن پروژه، ظرفیت روزهای دیگر را می خورد

دو نکته دربارهٔ همین جدول. اول، اهرم ششم (کیفیت فنی) بیشترین حالت را دارد که در گفتگوی اول دیده نشود: کاری که در ظاهر «همان سایت» است، می تواند ساعت برنامه نویسی کاملا متفاوتی ببرد. دوم، فقط یکی از این هفت اهرم — زمان تحویل — با پرداخت پول بیشتر بدون کار بیشتر به دست می آید؛ باقی شش اهرم، هرکدام یعنی «ساعت بیشتر» یا «ساعت کمتر». یعنی پرسش درست این نیست که «چرا اینقدر گران است؟»، پرسش درست این است که «چند ساعت کار، و روی چه چیزی؟».

عدد از کجا می آید؟ سنجش بر مبنای نفر ساعت

در پروژه های نرم افزاری، عدد نهایی از ضرب ساعت کار در نرخ هر ساعت ساخته می شود. این را با یک نکتهٔ قابل استناد کنار هم بگذار: در اندازه گیری همین اجرا، از ده صفحهٔ فارسی که روی این عبارت رتبه دارند، فقط یکی به مبنای نفر ساعت اشاره کرده بود و آن هم به شکل نرخ نامهٔ صنفی؛ یعنی مکانیزم عدد در بازار ما کمتر توضیح داده می شود. برای همین، تو مجبوری خودت ساعت ها را بیرون بکشی. دو راه ساده داری.

راه اول: بپرس هر قلم چند ساعت است

یک پرسش کوتاه که کیفیت پیش فاکتور را عوض می کند: «این قلم چند ساعت کار برمی دارد و نرخ هر ساعت چقدر است؟». مجری ای که واقعا پروژه را تخمین زده باشد، جواب دارد. جواب «همه اش عدد مقطوع است و ساعت نداریم» بد نیست، ولی قیمت را غیرقابل بررسی می کند؛ این را هم بدان.

راه دوم: خودت جمع ساعت ها را بازسازی کن

فهرست کارها را بگیر و کنار هر کدام ساعت تخمینی خودت را بنویس. این عدد لازم نیست دقیق باشد؛ تقریبی هم که باشد، تصویر کلی را نشان می دهد و می گوید کجای پیش فاکتور غیرواقعی است. اسکریپت کوتاه زیر همین کار را انجام می دهد و مجموع را حساب می کند:

# محاسبه گر ساعت پروژه
# اعداد ساعت، تخمین خودت است؛ عدد «نرخ» فرضی است و باید با نرخ واقعی خودت عوض شود.
items = {
    "طراحی رابط کاربری": 24,
    "کدنویسی فرانت اند": 40,
    "کدنویسی بک اند": 36,
    "ساخت پنل مدیریت": 20,
    "ورود محتوا و تست": 12,
    "استقرار روی سرور": 8,
}

NARIKH = 0  # نرخ هر ساعت را خودت بگذار

total = sum(items.values())
print("جمع ساعت:", total)
for name, h in sorted(items.items(), key=lambda x: -x[1]):
    print(f"  {name}: {h} ساعت")
print("سهم بزرگ ترین قلم:", round(max(items.values()) / total * 100), "درصد از کل ساعت پروژه")
if NARIKH:
    print("برآورد هزینه از این ساعت ها:", total * NARIKH)

اجرای همین اسکریپت با اعداد نمونه، این خروجی را می دهد:

$ python3 hours.py
جمع ساعت: 140
  کدنویسی فرانت اند: 40 ساعت
  کدنویسی بک اند: 36 ساعت
  طراحی رابط کاربری: 24 ساعت
  ساخت پنل مدیریت: 20 ساعت
  ورود محتوا و تست: 12 ساعت
  استقرار روی سرور: 8 ساعت
سهم بزرگ ترین قلم: 29 درصد از کل ساعت پروژه

حالا این جدول ساعت را با پیش فاکتوری که گرفته ای کنار هم بگذار. اگر پیش فاکتور فقط سه خط دارد («طراحی سایت»، «سئو»، «پشتیبانی») و ساعت ها را نمی دانی، هیچ راهی نداری بفهمی کدام قلم سهم بزرگ را می برد. کارکرد واقعی جدول ساعت همین است: به تو می گوید کجا بپرسی و کجا چانه بزنی.

پیش فاکتور را خط به خط بخوان؛ ده قلمی که باید جدا نوشته شود

پیش فاکتوری که همه چیز را در یک عدد مقطوع جمع کرده باشد، بد نیست ولی قابل بررسی نیست. وقتی پیش فاکتور خط به خط باشد، هم می توانی مقایسه کنی و هم بعدا در دعوا بر سر «این جزو کار بود یا نه» سند داری. ده قلمی که باید جدا نوشته شود:

  • طراحی رابط کاربری: چند قالب صفحه و در چه سطحی
  • کدنویسی سمت کاربر (فرانت اند): تعداد قالب صفحه ها
  • کدنویسی سمت سرور (بک اند): مدل داده، فرم ها، احراز هویت
  • پنل مدیریت: تو چه چیزی را باید بتوانی خودت عوض کنی
  • ورود محتوا: چند صفحه، متن از کی
  • سئوی فنی از روز اول: سرعت، تگ ها، نقشه سایت
  • تست و رفع اشکال پیش از تحویل
  • استقرار روی سرور و انتقال دامنه
  • تحویل صورت حساب ساعت ها (همان جدول بالا)
  • هزینه های سالانه، جدا از یک بار طراحی

برای این که کار ساده شود، این متن را می توانی عینا برای مجری بفرستی. قالب زیر را کپی کن و در پیام بگذار:

سلام. لطفا پیش فاکتور را در این قالب بفرستید:
۱. فهرست اقلام، هر قلم یک خط
۲. تخمین ساعت هر قلم
۳. در هر قلم، چه چیزی هست و چه چیزی نیست
۴. اقلامی که بعدا اضافه می شوند و قیمتشان جدا حساب می شود
۵. هزینه های سالانه: دامنه، هاست، گواهی امنیت، پشتیبانی
۶. جدول زمانی تحویل، مرحله به مرحله
۷. روش پرداخت، بر اساس مرحله های تحویل
۸. چه چیزی در این قیمت گارانتی دارد و چه چیزی ندارد

مجری ای که این هشت خط را پر کند، عملا نصف کار بررسی را برایت انجام داده. مجری ای که فقط می گوید «قیمت مقطوع فلان است و جزئیات بعدا» را می توانی انتخاب کنی، ولی با چشم باز انتخاب می کنی. برای این که هنگام خواندن پیش فاکتور، قلم های بدون ساعت از چشمت در نرود، این اسکریپت کوتاه را روی فهرست اقلام اجرا کن:

# کدام قلم پیش فاکتور، ساعت کار ندارد؟
proposal = [
    "طراحی رابط کاربری - 24 ساعت",
    "کدنویسی صفحات اصلی",
    "پنل مدیریت - 20 ساعت",
    "سئوی فنی از روز اول",
    "پشتیبانی سالانه - 12 ساعت",
]
for line in proposal:
    if "ساعت" not in line:
        print("بدون ساعت:", line)

خروجی این اجرا، فهرست کوتاه پرسش های تو برای گفتگوی بعدی است: در این نمونه، «کدنویسی صفحات اصلی» و «سئوی فنی از روز اول» ساعت مشخصی ندارند و همین دو قلم، معمولا سنگین ترین بخش پروژه اند.

ردیفی از پوشه های یکسان با عطف های بی نوشته روی قفسه چوبی
هر سال یک جلد تازه به قفسه اضافه می شود؛ دامنه و میزبانی و پشتیبانی اقلامی هستند که یک بار تمام نمی شوند.

هزینه هایی که هر سال برمی گردند

این بخش در بازار ما دیگر ناشناخته نیست: در اندازه گیری همین اجرا، پنج صفحه از ده صفحه به هزینه های پنهان و چهار صفحه به هزینه های تکرارشونده اشاره کرده بودند. پس این جدول برای تو «سورپرایز» نیست؛ کارکرد واقعی اش این است که این اقلام را در پیش فاکتور از اقلام یک بار مصرف جدا ببینی. اگر در یک عدد جمع شده باشند، بودجهٔ سال دومت را نمی توانی حساب کنی.

قلمیک بار است یا هر سال برمی گرددتصمیمی که به تو مربوط است
دامنههر سالپسوند و این که به نام خودت ثبت شود
میزبانیهر سالپلن متناسب با حجم سایت، نه بزرگ تر و نه کوچک تر
گواهی امنیت (SSL)هر سال یا چند ماهدر بیشتر پلن ها رایگان است؛ اگر ردیف شد، بپرس چرا
افزونه یا سرویس جانبیهر سالپیامک، درگاه، افزونهٔ پولی
محتوای تازهماهانه یا هر فصلخودت می نویسی یا سفارش می دهی
پشتیبانی و به روزرسانیماهانه یا سالانهچه چیزی پوشش دارد: فقط خطا یا تغییر هم

جمع این ردیف ها را خودت حساب کن. اسکریپت کوتاه زیر همین کار را می کند؛ فقط اعداد نمونه را با عددهای واقعی پلن های خودت عوض کن:

# هزینه سالانه تکرارشونده؛ اعداد نمونه را با اعداد واقعی خودت عوض کن
yearly = {
    "دامنه": 0,
    "میزبانی": 0,
    "گواهی امنیت": 0,
    "سرویس جانبی": 0,
    "پشتیبانی": 0,
}
monthly = {
    "محتوای تازه": 0,
}
total = sum(yearly.values()) + sum(monthly.values()) * 12
print("هزینه سالانه تکرارشونده:", total)
print("سهم پشتیبانی:", yearly["پشتیبانی"], "از", total)
# نسبت هزینه سالانه به هزینه یک بار طراحی را همین جا حساب کن
design = 0
if design:
    print("نسبت سالانه به طراحی:", round(total / design * 100), "درصد")

این نسبت، عددی است که در تصمیم سال دوم به کارت می آید. اگر سایت قرار است سال ها کار کند، هزینهٔ سالانه بخشی از هزینهٔ مالکیت است، نه یک هزینهٔ جانبی. مقایسهٔ انواع میزبانی و سقف پلن ها در مقالهٔ هاست چیست و چه انواعی دارد با جزئیات باز شده است.

دو در چوبی کنار هم؛ یکی ساده و کارخانه ای و یکی دست ساز با قاب های جداگانه
در ساده و در دست ساز، هر دو کار می کنند؛ تفاوتشان در ساعت کاری است که صرف جزئیات شده. همان تصمیمی که بیشترین اثر را روی قیمت پروژه دارد.

قالب آماده یا طراحی اختصاصی؛ گران ترین تصمیم پروژه

بیشترین اختلاف قیمت میان دو پیشنهاد، معمولا از همین یک تصمیم می آید، نه از تعداد صفحه. در یک طرف قالب آماده است با تغییر رنگ و لوگو، در طرف دیگر رابط کاربری طراحی شده از صفر و پیاده شده روی کد. هیچ کدام «درست» یا «غلط» نیستند؛ تفاوت در این است که دومی ساعت طراحی و ساعت کدنویسی بیشتری می برد.

معیارقالب آمادهرابط کاربری اختصاصی
ساعت کارعمدتا تنظیم و پر کردن محتواطراحی، بازطراحی و پیاده سازی
شباهت با سایت های دیگربالا؛ همان قالب روی سایت های دیگر هم هستکم؛ چیدمان مطابق محتوای تو
تغییر بعدیمحدود به همان ساختار قالبوابسته به کد خودت
سرعت کار اولیهسریع ترکندتر
تناسب برای سایت فروشگاهی یا سامانهفقط تا جایی که قالب اجازه دهدکامل، ولی با ساعت بیشتر

یک راه میانه هم هست که بیشتر پروژه های کوچک را راه می اندازد: قالب آماده برای بخش های کم اهمیت تر (مقاله، صفحات خبری)، طراحی اختصاصی فقط برای دو یا سه صفحه ای که مستقیم فروش می آورند — صفحهٔ خدمات، صفحهٔ محصول، صفحهٔ اصلی. این ترکیب، هم ساعت را کم می کند و هم سایت را از قالب های تکراری جدا می کند.

ساعت هایی که در قیمت دیده نمی شوند

پرسش «سرعت سایت چقدر است؟» در گفتگوی قیمت، جواب ساده ای دارد که کمتر گفته می شود: سرعت، خروجی ساعت کار است. تو نمی توانی در پیش فاکتور ببینی که آن ساعت ها صرف شده یا نه، ولی می توانی بعد از تحویل بسنجی. یک فرمان کوتاه، زمان پاسخ سرور و حجم صفحه را نشان می دهد:

curl -o /dev/null -s -w 'زمان اتصال: %{time_connect}s\nزمان پاسخ سرور: %{time_starttransfer}s\nحجم صفحه: %{size_download} بایت\n' https://example.com/

برای مقایسه، اندازه گیری خودمان روی یکی از صفحه های همین سایت پیش از بهینه سازی و بعد از آن: زمان بارگذاری از ۲٫۴۹ ثانیه به ۱٫۴۲ ثانیه و حجم صفحه از ۷٬۲۳۴ به ۵٬۱۲۲ کیلوبایت رسید. آن تغییر، از فشرده کردن عکس ها آمد و در پیش فاکتور هیچ ردیفی برایش نبود — یعنی همان کاری است که در پروژه های ارزان معمولا انجام نمی شود و بعدا با هزینهٔ بیشتر انجام می شود.

وزن عکس ها را هم می توانی خودت جمع بزنی. این حلقه، حجم هر تصویر صفحه را جدا نشان می دهد:

curl -s https://example.com/ | grep -oE 'src="[^"]+\.(webp|jpg|jpeg|png)"' | cut -d'"' -f2 | sort -u |
while read -r img; do
  case "$img" in
    http*) url="$img" ;;
    /*)    url="https://example.com$img" ;;
    *)     url="https://example.com/$img" ;;
  esac
  printf '%8s بایت  %s\n' "$(curl -s -o /dev/null -w '%{size_download}' -m 20 "$url")" "$url"
done | sort -rn | head -10

این دو فرمان، بخشی از همان کاری است که در بررسی ادعای یک شرکت به کار می آید؛ روش کامل آن — همراه با بررسی نقشه سایت، تاریخچهٔ دامنه و پیش نمایش موبایل — در مقالهٔ چک لیست انتخاب شرکت طراحی سایت در شیراز آمده است. این جا فقط به این دلیل نشان داده شد که ببینی بخشی از قیمت، صرف کاری می شود که نتیجه اش قابل اندازه گیری است.

سه تصمیمی که قیمت را کم می کند بی آن که کیفیت کم شود

سه تصمیم هست که ساعت پروژه را واقعا کم می کند، بدون این که سایت را ضعیف کند:

  • فازبندی: نسخهٔ اول با اقلام ضروری منتشر شود و اقلام «شاید بعدا» به فاز دوم برود. این کار هم بودجهٔ امروز را کم می کند و هم باعث می شود سایت زودتر دیده شود.
  • محتوای آماده: متن و عکس صفحات را خودت بدهی. تولید محتوا قلمی است که ساعت مستقل می برد؛ اگر خودت انجامش بدهی، از پیش فاکتور حذف می شود بی آن که سایت چیزی کم داشته باشد.
  • حذف امکانات نمایشی: انیمیشن و افکت هایی که در صفحه ای نمی نشیند. این نوع کار، ساعت می برد ولی در فروش تغییری نمی دهد.

تقسیم ساعت بین دو فاز را هم می توانی قبل از سفارش حساب کنی تا ببینی فاز اول چقدر سبک تر می شود:

# تقسیم ساعت پروژه بین فاز اول و فاز دوم
phase1 = {"قالب صفحه خدمات": 16, "کدنویسی صفحات اصلی": 28, "استقرار": 8}
phase2 = {"پنل مدیریت": 20, "چندزبانگی": 24, "بلاگ سفارشی": 14}
p1, p2 = sum(phase1.values()), sum(phase2.values())
print("ساعت فاز اول:", p1)
print("ساعت فاز دوم:", p2)
print("فاز اول چند درصد کل کار است:", round(p1 / (p1 + p2) * 100))

نتیجهٔ این حساب، سند گفتگوی تو با مجری است: «فاز اول فقط این سه قلم، فاز دوم بعد از انتشار». هر دو طرف می دانند ساعت ها کجاست و چه چیزی به بعد موکول شده.

جمع بندی: پیش فاکتور را با چه چیزی قضاوت کنیم

قیمت طراحی سایت در ایران، عددی است که از ساعت کار و تصمیم های دامنه ساخته می شود. پیش فاکتوری که ساعت اقلام، هزینه های سالانه و مرزهای هر قلم را جدا نشان می دهد، حتی وقتی عددش بالاتر باشد، انتخاب قابل بررسی تری است؛ چون می توانی بفهمی پول برای چه کاری است و کدام قسمت را می توانی با تصمیم خودت سبک تر کنی.

تعرفه و مراحل کار ما در صفحهٔ طراحی سایت در شیراز آمده است و می توانی همان جا با فهرست اقلام مقایسه اش کنی. اگر می خواهی همین گفتگو برای پروژهٔ خودت انجام شود، از صفحهٔ تماس پیام بده. نمونهٔ پروژه های تحویل داده شده هم در نمونه کار یک پروژهٔ واقعی و بخش نمونه کارهای سایت قابل دیدن است.

اشتراک‌گذاری مقاله:

سوالات متداول

نظرات کاربران

ارسال نظر جدید

حداقل ۱۰ و حداکثر ۱۰۰۰ کاراکتر

هنوز نظری ثبت نشده است

اولین نفری باشید که دیدگاه خود را می‌نویسد!

مطالب مرتبط

مقالات مشابه که ممکن است برایتان جالب باشد