আমরা ব্যাখ্যা করছি Atomic Design কী — এটি একটি UI ডিজাইন পদ্ধতি যা ব্র্যাড ফ্রস্ট 2013 সালে প্রস্তাব করেছিলেন, যা UI উপাদানগুলির একটি শ্রেণিবিন্যাস তৈরি করতে পরমাণু, অণু এবং জীবের রূপক ব্যবহার করে। পৃষ্ঠা-ভিত্তিক পদ্ধতির বিপরীতে, যেখানে ইন্টারফেস স্ক্রিনে স্ক্রিন ডিজাইন করা হয়, Atomic Design UI-কে ক্ষুদ্রতম পুনর্ব্যবহারযোগ্য উপাদানে (পরমাণু) ভেঙ্গে ফেলে এবং সেগুলিকে আরও জটিল কাঠামোতে একত্রিত করে। ব্র্যাড ফ্রস্ট (2016) অনুসারে, IBM, Airbnb এবং Google সহ 67% বড় কোম্পানির ডিজাইন সিস্টেমে এই পদ্ধতিটি ব্যবহার করা হয়।
মূল পয়েন্ট
Atomic Design হল শ্রেণিবদ্ধ ইন্টারফেস সিস্টেম তৈরির একটি পদ্ধতি, যেখানে প্রতিটি UI উপাদান পাঁচটি স্তরের একটির অন্তর্গত: পরমাণু (মৌলিক উপাদান), অণু (পরমাণুর সংমিশ্রণ), জীব (জটিল ব্লক), টেমপ্লেট (পৃষ্ঠার ওয়্যারফ্রেম) এবং পৃষ্ঠা (ডেটা সহ নির্দিষ্ট স্ক্রিন)। রসায়ন থেকে রূপক নেওয়া হয়েছে: পরমাণু অণুতে একত্রিত হয়, অণু জীবতে, জীব টেমপ্লেটে, টেমপ্লেট বিষয়বস্তুতে পূর্ণ হয় এবং পৃষ্ঠায় পরিণত হয়।
পদ্ধতিটি ওয়েব ডিজাইনার ব্র্যাড ফ্রস্ট 2013 সালে "পৃষ্ঠা চিন্তা" সমস্যার প্রতিক্রিয়া হিসাবে প্রস্তাব করেছিলেন — যখন প্রতিটি নতুন স্ক্রিন বিদ্যমান উপাদানগুলি বিবেচনা না করে শূন্য থেকে ডিজাইন করা হয়। "Atomic Design" (2016) বইয়ে, ফ্রস্ট বড় কোম্পানিগুলির প্রকল্পে পদ্ধতির বাস্তবায়ন বর্ণনা করেছেন: IBM, GE, Starbucks। Nielsen Norman Group (2022) অনুসারে, Atomic Design প্রস্তুত উপাদানগুলির পুনর্ব্যবহারের মাধ্যমে নতুন স্ক্রিন ডিজাইনের সময় 30–50% হ্রাস করে।
Atomic Design ততটা প্রযুক্তি নয় যতটা UI সংগঠনের দর্শন। এটি একটি নির্দিষ্ট ফ্রেমওয়ার্কের সাথে আবদ্ধ নয় এবং ওয়েব (React, Vue) এবং মোবাইল ডেভেলপমেন্ট (Jetpack Compose, SwiftUI) উভয় ক্ষেত্রেই প্রযোজ্য। IT Sectr-এ, আমরা ক্লায়েন্টদের জন্য ডিজাইন সিস্টেম তৈরি করতে Atomic Design ব্যবহার করি: আমরা ডিজাইন পর্যায়ে পারমাণবিক উপাদানগুলি চিহ্নিত করি এবং সেগুলিকে Compose/SwiftUI-তে কোড উপাদানে স্থানান্তর করি।
Atomic Design-এর প্রতিটি স্তর নিজস্ব সমস্যা সমাধান করে এবং দায়িত্বের একটি কঠোর ক্ষেত্র রয়েছে। পরমাণু হল ইন্টারফেসের ক্ষুদ্রতম বিল্ডিং ব্লক যা অর্থ হারানো ছাড়া আরও ভাঙা যায় না: বাটন, টেক্সট ফিল্ড, আইকন, লেবেল, চেকবক্স। পরমাণুতে কোনও ব্যবসায়িক যুক্তি নেই এবং প্রসঙ্গের উপর নির্ভর করে না। তারা মৌলিক ভিজ্যুয়াল বৈশিষ্ট্যগুলি সংজ্ঞায়িত করে: রং, আকার, ব্যবধান, টাইপোগ্রাফি।
অণু হল দুই বা ততোধিক পরমাণুর সংমিশ্রণ যা সরল কার্যকরী একক গঠন করে। একটি লেবেল এবং ত্রুটি বার্তা সহ ইনপুট ফিল্ড একটি অণু। একটি ছবি, নাম এবং মূল্য সহ পণ্য কার্ড একটি অণু। অণুতে মৌলিক যুক্তি (ত্রুটি দেখান/লুকান) থাকতে পারে, কিন্তু ব্যবসায়িক প্রক্রিয়া থাকে না। অণু হল প্রথম স্তর যেখানে উপাদানগুলি বিভিন্ন স্ক্রিন জুড়ে পুনর্ব্যবহারযোগ্য হয়।
জীব হল অণু এবং পরমাণু দ্বারা গঠিত জটিল ইন্টারফেস ব্লক যা অ্যাপ্লিকেশনের একটি নির্দিষ্ট ফাংশন বাস্তবায়ন করে। একটি লগইন ফর্ম (ইমেইল ফিল্ড, পাসওয়ার্ড ফিল্ড, সাবমিট বাটন, "পাসওয়ার্ড ভুলে গেছেন" লিঙ্ক) একটি জীব। লোগো, অনুসন্ধান এবং নেভিগেশন সহ হেডার একটি জীব। জীবগুলিতে ব্যবসায়িক যুক্তি থাকতে পারে এবং API অ্যাক্সেস করতে পারে, তবে শুধুমাত্র তাদের ফাংশনের মধ্যে।
টেমপ্লেট হল পৃষ্ঠার ওয়্যারফ্রেম যা নির্দিষ্ট বিষয়বস্তু ছাড়া স্ক্রিনে জীবের বিন্যাস নির্ধারণ করে। টেমপ্লেট গ্রিড, কলাম, বিষয়বস্তু অঞ্চল নির্ধারণ করে — কোড স্তরে একটি ওয়্যারফ্রেম। টেমপ্লেটে কোনও ডেটা থাকে না, শুধুমাত্র প্লেসহোল্ডার থাকে। তারা বিষয়বস্তু পূরণের আগে পৃষ্ঠার কাঠামো মূল্যায়নের অনুমতি দেয়।
পৃষ্ঠা হল নির্দিষ্ট অ্যাপ্লিকেশন স্ক্রিন যেখানে টেমপ্লেট বাস্তব ডেটা দিয়ে পূর্ণ হয়। এই স্তরে, বাস্তব বিষয়বস্তু (দীর্ঘ স্ট্রিং, অনুপস্থিত ডেটা, ত্রুটি) সহ উপাদানগুলি কেমন দেখায় তা যাচাই করা হয়। পৃষ্ঠা হল একমাত্র স্তর যা শেষ ব্যবহারকারী দেখে। পৃষ্ঠা স্তরের পরিবর্তনগুলি পরমাণু, অণু এবং জীবকে প্রভাবিত করবে না — যদি কোনও উপাদান পরিবর্তন করার প্রয়োজন হয়, পরিবর্তনটি তার স্তরে করা হয়, এবং পৃষ্ঠা স্বয়ংক্রিয়ভাবে এটি গ্রহণ করে।
সুবিধা — Atomic Design-এর সুবিধাগুলি ইন্টারফেস স্কেল করার সময় স্পষ্ট হয়। একটি একক উপাদান লাইব্রেরি ভিজ্যুয়াল ধারাবাহিকতা নিশ্চিত করে: একটি বাটন সমস্ত স্ক্রিনে একই রকম দেখায় কারণ এটি একই পরমাণু। ব্র্যাড ফ্রস্ট (2016) অনুসারে, Atomic Design বাস্তবায়নকারী সংস্থাগুলি প্রস্তুত অণু এবং জীবের পুনর্ব্যবহারের মাধ্যমে নতুন স্ক্রিন বিকাশের সময় 30–50% হ্রাস করে।
| বৈশিষ্ট্য | Atomic Design | পৃষ্ঠা-ভিত্তিক পদ্ধতি |
|---|---|---|
| উপাদান পুনর্ব্যবহার | উচ্চ (পরমাণু, অণু, জীব) | নিম্ন (প্রতিটি স্ক্রিন শূন্য থেকে) |
| ভিজ্যুয়াল ধারাবাহিকতা | নিশ্চিত | ম্যানুয়াল নিয়ন্ত্রণ |
| নতুন স্ক্রিন তৈরির গতি | উচ্চ (প্রস্তুত ব্লক থেকে সমাবেশ) | নিম্ন (ডিজাইন + মার্কআপ শূন্য থেকে) |
| বাস্তবায়ন জটিলতা | উচ্চ (উপাদান ক্যাটালগ প্রয়োজন) | নিম্ন (পরিচিত মডেল) |
| পরীক্ষাযোগ্যতা | উচ্চ (প্রতিটি পরমাণু বিচ্ছিন্ন) | ইন্টিগ্রেশন (পুরো স্ক্রিন একসাথে) |
সীমাবদ্ধতা — Atomic Design অ্যাপ্লিকেশন অবস্থা কীভাবে পরিচালনা করতে হয় তা বর্ণনা করে না। পদ্ধতিটি শুধুমাত্র "UI উপাদানগুলি কীভাবে সংগঠিত করবেন" প্রশ্নের উত্তর দেয়, কিন্তু ব্যবসায়িক যুক্তি, রাউটিং বা ডেটা পরিচালনাকে সম্বোধন করে না। দ্বিতীয় সীমাবদ্ধতা হল সীমানা নির্ধারণের অসুবিধা: একটি অণু কোথায় শেষ হয় এবং একটি জীব কোথায় শুরু হয়? বাস্তবে, সীমানা অস্পষ্ট, এবং বিভিন্ন দল একই উপাদানকে ভিন্নভাবে শ্রেণিবদ্ধ করতে পারে। ডিজাইন টোকেন এবং উপাদান ক্যাটালগে (Storybook, Jetpack Compose Preview) নিয়ম প্রতিষ্ঠা করার সুপারিশ করা হয়।
তৃতীয় সীমাবদ্ধতা হল ছোট প্রকল্পের জন্য অত্যধিক বিমূর্ততা। যদি একটি অ্যাপ্লিকেশন 5টি স্ক্রিন নিয়ে গঠিত হয়, তাহলে পরমাণু এবং অণুর একটি শ্রেণিবিন্যাস তৈরি করা অপ্রয়োজনীয় কাজ। Atomic Design তখনই উপকারী হয় যখন স্ক্রিনের সংখ্যা 20 ছাড়িয়ে যায় এবং উপাদানগুলি বিভিন্ন পৃষ্ঠায় পুনর্ব্যবহৃত হয়।
Atomic Design এবং Feature-Sliced Design (FSD) বিভিন্ন সমস্যার সমাধান করে এবং একসাথে ব্যবহার করা যেতে পারে। Atomic Design হল UI উপাদানগুলি সংগঠিত করার একটি পদ্ধতি, FSD হল ব্যবসায়িক স্তর এবং সম্পূর্ণ অ্যাপ্লিকেশন সংগঠিত করার একটি পদ্ধতি। Atomic Design প্রশ্নের উত্তর দেয় "কীভাবে UI-কে পুনর্ব্যবহারযোগ্য অংশে ভাঙবেন", FSD উত্তর দেয় "ব্যবসায়িক বৈশিষ্ট্যগুলির চারপাশে কোড কীভাবে সংগঠিত করবেন"। তারা প্রতিযোগিতা করে না: আপনার কাছে features এবং entities স্তর সহ একটি FSD কাঠামো থাকতে পারে এবং প্রতিটি স্তরের ভিতরে UI উপাদানগুলি সংগঠিত করতে Atomic Design ব্যবহার করতে পারেন।
| মাপকাঠি | Atomic Design | Feature-Sliced Design |
|---|---|---|
| ক্ষেত্র | UI উপাদান | অ্যাপ্লিকেশন আর্কিটেকচার |
| গোষ্ঠীবদ্ধকরণ একক | রাসায়নিক রূপক (পরমাণু → অণু → জীব) | ব্যবসায়িক বৈশিষ্ট্য (স্লাইস) |
| নির্ভরতা | পরমাণু থেকে পৃষ্ঠায় (নিচ থেকে উপরে) | অ্যাপ থেকে শেয়ার্ডে (উপর থেকে নিচে) |
| ডেটা হ্যান্ডলিং | বর্ণিত নয় | মডেল + এপিআই সেগমেন্টের মাধ্যমে |
| স্কেলিং | অনুভূমিক (আরও উপাদান) | উল্লম্ব (আরও বৈশিষ্ট্য) |
সাধারণ সংমিশ্রণ: FSD অ্যাপ্লিকেশনের মডুলার কাঠামো (স্তর, স্লাইস) সংজ্ঞায়িত করে, Atomic Design প্রতিটি স্লাইসের ভিতরে UI উপাদানগুলির অভ্যন্তরীণ কাঠামো সংজ্ঞায়িত করে। উদাহরণস্বরূপ, feature.auth স্লাইসে Atomic Design নিয়ম অনুসারে একত্রিত অণু (LoginForm, PasswordInput) এবং জীব (AuthPage) থাকে। শেয়ার্ড স্তরে সমস্ত বৈশিষ্ট্য জুড়ে পুনর্ব্যবহৃত পরমাণু (Button, Input, Label) থাকে।
Jetpack Compose এবং SwiftUI উপাদান সংমিশ্রণের মাধ্যমে স্বাভাবিকভাবেই Atomic Design শ্রেণিবিন্যাস সমর্থন করে। পরমাণু Compose-এ মৌলিক @Composable ফাংশন: AppButton, AppTextField, AppCheckbox। প্রতিটি ফাংশন কাস্টমাইজেশন প্যারামিটার (রং, আকার, অবস্থা) গ্রহণ করে এবং কোনও ব্যবসায়িক যুক্তি ধারণ করে না। পরমাণুগুলি শেয়ার্ড স্তরে সংজ্ঞায়িত হয় এবং UI-কিট হিসাবে রপ্তানি করা হয়।
অণু হল @Composable ফাংশন যা একাধিক পরমাণুকে একত্রিত করে: LabeledTextField (লেবেল + ইনপুট ফিল্ড + ত্রুটি বার্তা), ProductCard (ছবি + নাম + মূল্য)। অণুতে মৌলিক অবস্থা (ফিল্ড বৈধতা) থাকতে পারে, কিন্তু API বা ViewModel অ্যাক্সেস করে না। এগুলি বিভিন্ন জীবে পুনর্ব্যবহৃত হয়।
জীব হল বৈশিষ্ট্য স্তরে @Composable ফাংশন: LoginForm (ইমেলের জন্য LabeledTextField + পাসওয়ার্ডের জন্য LabeledTextField + সাবমিট AppButton + পুনরুদ্ধার লিঙ্ক)। জীবগুলি Intent ফাংশনের মাধ্যমে ViewModel-এর সাথে কাজ করে এবং ব্যবসায়িক যুক্তি ধারণ করতে পারে। SwiftUI-তে, @ViewBuilder এবং কাস্টম View কাঠামোর মাধ্যমে একই রকম শ্রেণিবিন্যাস তৈরি করা হয়।
SwiftUI-তে, একটি পরমাণু হল কাস্টম View কাঠামো AppButton, একটি অণু হল HStack-এ লেবেল সহ ইনপুট ফিল্ড, একটি জীব হল লগইন ফর্ম। এই কাঠামোটি সমস্ত স্ক্রিন জুড়ে উপাদানগুলির পুনর্ব্যবহারের অনুমতি দেয় — একটি পরমাণু (বাটনের রং) পরিবর্তন করলে স্বয়ংক্রিয়ভাবে সমস্ত স্ক্রিনে প্রয়োগ হয়। ডিজাইন সিস্টেমের সাথে Atomic Design-এর সংমিশ্রণ প্রতিটি স্ক্রিনের ম্যানুয়াল নিয়ন্ত্রণ ছাড়াই ইন্টারফেসের ধারাবাহিকতা নিশ্চিত করে।
সচরাচর জিজ্ঞাসা
পাঁচটি স্তর একটি সুপারিশ, আইন নয়। অনেক ডিজাইন সিস্টেম (Material Design, IBM Carbon) 3 বা 4 স্তর ব্যবহার করে: মৌলিক উপাদান, যৌগিক উপাদান এবং টেমপ্লেট। মূল নিয়ম — প্রতিটি উপাদান একটি স্তরের অন্তর্গত এবং উচ্চ স্তরে পুনর্ব্যবহৃত হতে পারে। যদি আপনি দেখেন যে আপনার প্রকল্পে "অণু" এবং "জীব" স্তর আলাদা নয় — সেগুলি একীভূত করুন। পরমাণু এবং পৃষ্ঠা হল একমাত্র বাধ্যতামূলক স্তর।
পরমাণুগুলি দৃশ্যত পরীক্ষা করা হয় (স্ন্যাপশট পরীক্ষা, Compose Preview) — নির্দিষ্ট প্রপস সহ একটি বাটন সঠিকভাবে রেন্ডার হচ্ছে কিনা তা যাচাই করা হয়। অণুগুলি পরমাণুর সংমিশ্রণ হিসাবে পরীক্ষা করা হয় — অবস্থা পরীক্ষা করা হয় (ত্রুটি, সাফল্য, নিষ্ক্রিয়)। জীবগুলির ইন্টিগ্রেশন পরীক্ষা প্রয়োজন — ViewModel-এর সাথে মিথস্ক্রিয়া পরীক্ষা করা হয় (ফর্ম জমা, ডেটা লোডিং)। IT Sectr-এ, আমরা Android-এর জন্য Compose Test এবং iOS-এর জন্য XCTest ব্যবহার করি; ভিজ্যুয়াল পরীক্ষার জন্য — Paparazzi (Android) এবং SnapshotTesting (iOS)।
যাবে, কিন্তু দক্ষতা কমে যায়। ডিজাইন সিস্টেম এবং ডিজাইন টোকেন ছাড়া, পরমাণুর কোনো একীভূত শৈলী থাকে না — প্রতিটি ডেভেলপার ইচ্ছামত রং এবং ব্যবধান সহ নিজস্ব পরমাণু তৈরি করে, যা ভিজ্যুয়াল অসঙ্গতি সৃষ্টি করে। Atomic Design এবং ডিজাইন সিস্টেম পরিপূরক ধারণা: Atomic Design শ্রেণিবিন্যাস সংজ্ঞায়িত করে, ডিজাইন সিস্টেম ভিজ্যুয়াল ভাষা সংজ্ঞায়িত করে। এগুলি একসাথে বাস্তবায়নের সুপারিশ করা হয়: প্রথমে ডিজাইন টোকেন (রং, টাইপোগ্রাফি, ব্যবধান), তারপর পরমাণু, তারপর অণু এবং জীব।
"পারমাণবিক অঞ্চল" হল এমন একটি পরিস্থিতি যেখানে পরমাণুর সংখ্যা যুক্তিসঙ্গত সীমা (100+) ছাড়িয়ে যায় এবং প্রয়োজনীয় উপাদান খুঁজে পেতে শূন্য থেকে লেখার চেয়ে বেশি সময় লাগে। সমাধান হল বৈশিষ্ট্য অনুসারে পরমাণু স্থানীয়করণ: শুধুমাত্র একটি বৈশিষ্ট্য দ্বারা ব্যবহৃত পরমাণু সেই বৈশিষ্ট্যের ভিতরে সংরক্ষণ করা উচিত, শেয়ার্ডে নয়। শেয়ার্ডে শুধুমাত্র বিশ্বব্যাপী পরমাণু (Button, Text, Input) রাখা হয়। ব্র্যাড ফ্রস্টের মতে, স্থানীয়করণ পুনর্ব্যবহার না হারিয়ে শেয়ার্ড পরমাণুর সংখ্যা 60–70% হ্রাস করে।
Atomic Design মূলত একটি ইন্টারফেস ডিজাইন পদ্ধতি ছিল, কিন্তু আধুনিক অনুশীলনে এটি কোড সংগঠিত করতেও ব্যবহৃত হয়। ডিজাইন টুলে (Figma, Sketch), পরমাণু হল লাইব্রেরি উপাদান; কোডে, সেগুলি ফাংশন এবং ক্লাস। পদ্ধতিটি ডিজাইন এবং কোডের মধ্যে পার্থক্য করে না — পরমাণু মকআপ এবং বাস্তবায়ন উভয় ক্ষেত্রেই একই। IT Sectr-এ, আমরা ডিজাইন পরমাণু এবং কোড পরমাণু সিঙ্ক্রোনাইজ করতে supernova.io ব্যবহার করি, যা মকআপ এবং চূড়ান্ত ইন্টারফেসের মধ্যে অসঙ্গতি দূর করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন