প্রকল্প সম্পর্কে

httpSMS একটি পরিষেবা যা আপনাকে একটি Android ফোনকে SMS গেটওয়ে হিসেবে ব্যবহার করতে দেয়। আপনি একটি সাধারণ HTTP API কল করেন এবং অনুরোধটি Android ফোনে একটি SMS পাঠাতে ট্রিগার করে। ফোনে প্রাপ্ত বার্তাগুলি আপনার দেওয়া একটি ওয়েবহুক এন্ডপয়েন্টে ফরোয়ার্ড করা যেতে পারে। প্রকল্পটি তৈরি করা হয়েছিল কারণ অনেক দেশে ভার্চুয়াল ফোন নম্বর পাওয়া যায় না এবং লেখক একটি বাস্তব মোবাইল ফোনের মাধ্যমে SMS পাঠানো এবং গ্রহণের জন্য একটি স্বয়ংক্রিয়, API-চালিত উপায় চেয়েছিলেন। কম্পোনেন্টসমূহ - ওয়েব UI: Nuxt এবং Vuetify দিয়ে নির্মিত একটি সিঙ্গেল-পেজ অ্যাপ্লিকেশন, Firebase-এ হোস্ট করা; সোর্সটি web ডিরেক্টরিতে থাকে। - API: Go এবং Fiber দিয়ে নির্মিত, CockroachDB ব্যবহার করে এবং Google Cloud Run-এ সার্ভারলেস চালানোর জন্য ডিজাইন করা। API ডকুমেন্টেশন আলাদাভাবে প্রকাশিত হয়। - Android অ্যাপ: একটি নেটিভ Kotlin অ্যাপ্লিকেশন যা বার্তা পাঠানো বা গ্রহণের আগে ফোনে ইনস্টল করতে হবে। এটি APK হিসেবে এবং GitHub রিলিজের মাধ্যমে বিতরণ করা হয়। বৈশিষ্ট্যসমূহ - এন্ড-টু-এন্ড এনক্রিপশন: বার্তাগুলি AES-256 দিয়ে এনক্রিপ্ট করা যায়, কী শুধুমাত্র ফোনে সংরক্ষিত থাকে, তাই সার্ভার বার্তার বিষয়বস্তু পড়তে পারে না। - ওয়েবহুক: প্রাপ্ত SMS বার্তাগুলি ইন্টিগ্রেশন তৈরির জন্য একটি কলব্যাক URL-এ ফরোয়ার্ড করা যেতে পারে। - ব্যাক প্রেশার: একটি কনফিগারযোগ্য রেট লিমিট (উদাহরণস্বরূপ, প্রতি মিনিটে তিনটি বার্তা) অনেক প্রাপক সারিবদ্ধ থাকলেও ফোনের SMS API-তে বন্যা রোধ করে। - বার্তার মেয়াদ: বার্তার বৈধতার জন্য একটি টাইমআউট সেট করা যেতে পারে এবং পাঠানোর আগে কোনো বার্তার মেয়াদ শেষ হলে আপনাকে জানানো হয়। API ক্লায়েন্ট Go এবং JavaScript/TypeScript-এর জন্য অফিসিয়াল ক্লায়েন্ট লাইব্রেরি তালিকাভুক্ত। পাঠানোর প্রক্রিয়া সেন্ড এন্ডপয়েন্টে একটি অনুরোধ HTTP 202 দিয়ে গৃহীত হয়, একটি পুশ নোটিফিকেশন নির্ধারিত হয় এবং Android অ্যাপে পৌঁছে দেওয়া হয়, অ্যাপটি বার্তাটি আনয়ন করে, Android SMS API-এর মাধ্যমে পাঠায় এবং পাঠানোর ফলাফল ও ডেলিভারি রিপোর্ট API-তে অ্যাসিঙ্ক্রোনাসভাবে রিপোর্ট করে। Docker দিয়ে সেলফ-হোস্টিং README-তে একটি Docker-ভিত্তিক সেলফ-হোস্ট পথ নথিভুক্ত করা হয়েছে: একটি Firebase প্রকল্প এবং ওয়েব SDK কনফিগার তৈরি করুন, ইমেল/পাসওয়ার্ড সাইন-ইন সক্ষম করুন (ইমেল এনুমারেশন সুরক্ষার জন্য একটি উল্লেখিত ওয়ার্কঅ্যারাউন্ড সহ), Firebase সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল এবং একটি Android google-services.json তৈরি করুন, একটি SMTP ইমেল পরিষেবা কনফিগার করুন, বার্তা অনুসন্ধান রুট সুরক্ষিত করতে একটি Cloudflare Turnstile উইজেট সেট আপ করুন, রিপোজিটরি ক্লোন করুন, ওয়েব এবং API-এর জন্য প্রদত্ত .env.docker ফাইলগুলি অনুলিপি করুন, পরিবেশ ভেরিয়েবলগুলি পূরণ করুন, তারপর docker compose up --build চালান। ওয়েব UI তখন পোর্ট 3000-এ এবং API পোর্ট 8000-এ অ্যাক্সেসযোগ্য। ইভেন্টস কিউ সেটিংসের সাথে মিলে যাওয়া id এবং api_key সহ users টেবিলে একটি সিস্টেম ইউজার সন্নিবেশ করতে হবে এবং পরে API কন্টেইনারটি পুনরায় চালু করতে হবে। পুশ মেসেজিং কাজ করার জন্য প্রতিস্থাপিত google-services.json দিয়ে Android অ্যাপটি Android Studio-তে তৈরি করতে হবে। পরীক্ষা এবং লাইসেন্স এন্ড-টু-এন্ড ইন্টিগ্রেশন পরীক্ষাগুলি Docker-এ সম্পূর্ণ স্ট্যাক (API, PostgreSQL, Redis) চালায় এবং একটি ফোন ইমুলেটর দিয়ে Android ডিভাইস সিমুলেট করে এবং main-এ পুশ এবং পুল রিকোয়েস্টে CI-তেও চলে। প্রকল্পটি GNU Affero General Public License v3-এর অধীনে লাইসেন্সপ্রাপ্ত।