TimoDesk
একটি Desktop Agent, যা ব্যাকগ্রাউন্ডে নীরবে চলতে চলতে কাজের লগ সংগ্রহ করে, এবং একটি Dashboard, যা সেই ডেটাকে ম্যানেজারের জন্য কার্যকর রিপোর্টে রূপান্তর করে।
- আমার রোল
- টিম লিড
- সময়
- ২০২৫ - বর্তমান
- টিম
- ৫ জন ডেভেলপার
- স্ট্যাটাস
- লাইভ

এটি কী
TimoDesk হলো THESOFTKING Limited প্রকাশিত একটি Time Tracking এবং Productivity Management Software, যা Remote ও In-house টিমের জন্য তৈরি। এর Lightweight Desktop App ব্যবহারকারীর Active Time, Application Usage এবং Task Progress রেকর্ড করে। অ্যাপটি অফলাইনেও কাজ করতে পারে এবং ডিভাইস পুনরায় ইন্টারনেটে সংযুক্ত হলে স্বয়ংক্রিয়ভাবে ডেটা Sync করে। অন্যদিকে, Web Dashboard সেই ডেটাকে Activity Report, Timesheet, Project Breakdown এবং Screenshot-এ রূপান্তর করে। সফটওয়্যারটি একটি মাত্র প্ল্যানে বিক্রি করা হয়, যেখানে প্রতি ইউজারের জন্য মাসিক মূল্য $1, এবং এই প্ল্যানেই সব ফিচার অন্তর্ভুক্ত রয়েছে।
TimoDesk এমন একটি সমস্যার সমাধান করে, যা একসময় প্রায় প্রতিটি Distributed Team-এরই সামনে আসে: আসলে পুরো সপ্তাহটা কোথায় গেল? একটি Desktop App ব্যাকগ্রাউন্ডে Active Time, App Usage এবং Task Progress রেকর্ড করে। এরপর Web Dashboard সেই ডেটাকে Activity Level, Timeline, Project Breakdown, Timesheet এবং Screenshot-এর মাধ্যমে উপস্থাপন করে।
আমি পুরো ডেভেলপমেন্ট প্রক্রিয়ার নেতৃত্ব দিয়েছি; Architecture, Code Review, Release Planning এবং প্রোডাক্ট কী পরিমাপ করবে আর কী করবে না, সেই সিদ্ধান্তগুলোও আমার দায়িত্বে ছিল। তবে প্রকৃত Engineering চ্যালেঞ্জ রিপোর্টিং সিস্টেমে ছিল না। বরং ছিল এমন একটি Agent তৈরি করা, যা আমাদের নিয়ন্ত্রণের বাইরে থাকা ব্যবহারকারীদের কম্পিউটারেও নির্ভরযোগ্যভাবে কাজ করবে, এবং এমন একটি Data Model ডিজাইন করা, যা কোনো Work Hour নিয়ে প্রশ্ন উঠলে সেটিকে স্পষ্টভাবে ব্যাখ্যা করতে পারে।
যা দিয়ে তৈরি
উল্লেখযোগ্য দিক
- Offline-first Desktop Agent, যেখানে Idempotent Sync ব্যবহার করা হয়েছে। ফলে একটি ল্যাপটপ দুই দিন অফলাইনে থাকলেও কোনো ডেটা হারায় না।
- Work Data Raw Event হিসেবে নয়, বরং ১০ মিনিটের Interval আকারে সংরক্ষণ করা হয়। এতে Write Volume নিয়ন্ত্রণে থাকে এবং আংশিক সময় (Partial Hour) সহজে Audit করা যায়।
- Server-Authoritative Time Model: Client শুধু পর্যবেক্ষণ করা তথ্য (Observed Data) পাঠায়, আর কোন সময় কতটা কার্যকর বা গ্রহণযোগ্য হবে, সেই সিদ্ধান্ত Server নেয়।
- Screenshot Pipeline, যেখানে Retention Policy, Thumbnail Tier এবং Lifecycle Rule এমনভাবে ডিজাইন করা হয়েছে, যাতে প্রতি ইউজার মাসে মাত্র $1 মূল্যের প্ল্যানেও এটি টেকসই থাকে।
- একটি পূর্ণাঙ্গ Reporting Dashboard, যেখানে Activity, App Usage, Project Timing, Worklog এবং Monthly Timesheet-এর রিপোর্ট পাওয়া যায়।
লাইভ প্রোডাক্ট
প্রকাশক THESOFTKING Limited, প্রতি ইউজারে মাসে এক ডলার।
timodesk.com দেখুনকেস স্টাডি
TimoDesk-এর নেপথ্যের ইঞ্জিনিয়ারিং
শুরুর কথা
আমি TheSoftKing-এ TimoDesk-এর ডেভেলপমেন্টের নেতৃত্ব দিয়েছি। এই প্রোডাক্টের Engineering-এ Backend, Web Dashboard, Desktop Agent এবং Native System Integration-এর জন্য Laravel, React, Electron, Node.js, Swift এবং C# ব্যবহার করা হয়েছে।
তবে এই প্রোডাক্ট তৈরি করতে গিয়ে যে বিষয়টিতে আমার সবচেয়ে বেশি সময় দিতে হয়েছে, সেটি শুধুমাত্র Engineering বা Feature Development ছিল না; বরং এর পেছনের একটি গভীর প্রশ্ন ছিল—যখন একটি Software কোনো টিমের কাজ পর্যবেক্ষণ করতে শুরু করে, তখন সেই টিমের উপর এর প্রভাব কী হয়?
এজেন্ট
আসল প্রোডাক্ট ড্যাশবোর্ড নয়, এজেন্ট
এই ধরনের Software-এর প্রতিটি Demo সাধারণত Dashboard দিয়ে শুরু হয়, কারণ একজন Customer যা দেখতে চায়, সেটিই Dashboard। কিন্তু কোনো কোম্পানি শুধু Dashboard দেখে দীর্ঘদিন Customer থাকে না। ষষ্ঠ মাসেও তারা Subscription চালিয়ে যাবে কি না, তার মূল নির্ভরতা থাকে সেই ছোট Application-এর উপর, যা এমন একটি Laptop-এ Background-এ চলছে, যেটি আমাদের নিয়ন্ত্রণে নেই এবং যেখানে আমাদের কোনো Direct Access নেই।
ক্লায়েন্ট সাইড
প্রকৃত কঠিন Engineering Challenges ছিল Client-side-এ
Server-side Architecture ছিল পরিচিত ধরনের একটি Multi-tenant Laravel API, MySQL এবং Storage বা Email সম্পর্কিত কাজগুলো পরিচালনার জন্য Queue System। এরকম Architecture আমি আগেও তৈরি করেছি।
Desktop Agent-এর আচরণ নিয়ন্ত্রণ করা কঠিন, কারণ এটি আমাদের নিয়ন্ত্রিত পরিবেশে নয়, বাস্তব ব্যবহারকারীর ডিভাইসে চলে। Laptop কাজের মাঝখানে Sleep Mode-এ চলে যেতে পারে এবং পুনরায় চালু হওয়ার পর অন্য Timezone-এ অবস্থান করতে পারে। ট্রেনে চলার সময় Wi-Fi সংযোগ বিচ্ছিন্ন হতে পারে। কেউ শুক্রবার সন্ধ্যায় Laptop বন্ধ করে সোমবার আবার চালু করলে, এর মধ্যে দুই দিনের Unsent Data জমে থাকতে পারে। Corporate VPN সংযোগে বাধা দিতে পারে। এমনকি Antivirus-ও আমাদের Binary-কে Quarantine করতে পারে, কারণ এটি Screenshot সংগ্রহ করে যা, সত্যি বলতে, Malware-ও করে থাকে।
এই কারণেই Agent-টিকে Day One থেকেই Offline-first হিসেবে তৈরি করা হয়েছিল, পরে কোনো Patch হিসেবে যোগ করা হয়নি। Activity প্রথমে Local-ভাবে সংরক্ষিত হয় এবং Device আবার Connected হলে স্বয়ংক্রিয়ভাবে Sync হয়। কিন্তু এই সিদ্ধান্ত নেওয়ার সঙ্গে সঙ্গেই তিনটি গুরুত্বপূর্ণ Constraint তৈরি হয়, যেগুলোর কোনোটিই পরে cheap way তে পরিবর্তন করা সম্ভব ছিল না।
প্রথমত, Server থেকে Acknowledgement না পাওয়া পর্যন্ত Local Store-ই Data-এর Source of Truth হিসেবে কাজ করে। তাই Sync Endpoint-কে Idempotent হতে হয়। Timeout-এর পর কোনো Retry হলে সেটি যেন একই এক ঘণ্টার কাজকে দুইবার Count না করে। দ্বিতীয়ত, Client Clock-এর উপর নির্ভর করা যায় না, কারণ যে কেউ তার Machine-এর সময় পরিবর্তন করতে পারে। Server সিদ্ধান্ত নেয় একটি Interval-এর মূল্য কত হবে; Client শুধু সে কী Observe করেছে তা Report করে। এরপর দুই পক্ষের Data Merge না করে Reconcile করা হয়। তৃতীয়ত, Upload Process-কে Resumable এবং Cost-efficient হতে হয়, কারণ সোমবার সকালে এক হাজার Agent থেকে জমে থাকা Data একসঙ্গে আসা একটি "Thundering Herd" তৈরি করতে পারে, যা নিয়মিত সময়েই Server-এর উপর চাপ তৈরি করে।
ডেটা মডেল
The unit of truth is an interval
TimoDesk-এর যে Design Decision নিয়ে আমি এখনও সবচেয়ে বেশি সন্তুষ্ট, সেটি হলো—TimoDesk আসলে Event Record করে না; এটি Interval Record করে। Work Data-কে ১০ মিনিটের Window-এ ভাগ করা হয়, এবং প্রতিটি Window-এর সঙ্গে সংরক্ষিত থাকে সেই সময়ের মধ্যে প্রকৃত কতক্ষণ কাজ করা হয়েছে, Activity Percentage এবং সেই সময়ে Captured হওয়া Screenshot।
Interval শুনতে খুব সাধারণ মনে হয়, আর এটাই এর মূল উদ্দেশ্য। এটি প্রতি User প্রতি দিনের Write Volume-কে এমন একটি সীমার মধ্যে রাখে, যার ভিত্তিতে Capacity Planning করা যায়। এটি একটি Partial Hour-কে ব্যাখ্যাযোগ্য করে তোলে: আপনি দেখতে পারেন ১টা থেকে ২টার মধ্যে মোট ৩৬ মিনিট কাজ হয়েছে এবং সেই সময়গুলো ঠিক কোন কোন Window-এর মধ্যে পড়েছে।
দাম
A dollar a month is an engineering constraint
একটি Plan, প্রতি User মাসে $1, এবং সব Feature অন্তর্ভুক্ত। Pricing Page-এর দিক থেকে এটি বেশ সুবিধাজনক, ব্যাখ্যা করার মতো কোনো Tier নেই, তৈরি করার মতো Feature Gate নেই, এমনকি Design করার মতো Upgrade Prompt-ও নেই। কিন্তু Engineering-এর দৃষ্টিকোণ থেকে এটি একটি কঠোর Discipline, কারণ এখন প্রতিটি Feature-কেই খরচের হিসাবের পরীক্ষায় টিকে থাকতে হয়।
রোল
What leading it actually involved
বাস্তবে Lead হিসেবে আমার কাজটি মূলত তিনটি বিষয়ে এসে দাঁড়িয়েছিল। প্রথমত, Code Review-কে Gatekeeping হিসেবে নয়, শেখানোর একটি প্রক্রিয়া হিসেবে দেখা। এতে কিছুটা বেশি সময় লাগে, কিন্তু এর ফল তখনই পাওয়া যায়, যখন Team-এর কেউ আমার উপস্থিতি ছাড়াই এমন একটি Bug ধরতে পারে, যেটি আগে হয়তো আমাকেই ধরতে হতো।
দ্বিতীয়ত, গুরুত্বপূর্ণ Decisionগুলো লিখে রাখা, বিশেষ করে যে Optionগুলো আমরা বিবেচনা করে Reject করেছি সেগুলোও। কারণ কোনো সিদ্ধান্তের পেছনের কারণ Document করা না থাকলে, কয়েক মাস পর Team-এ নতুন কেউ এসে একই বিষয় নিয়ে আবার আলোচনা শুরু করবে।
তৃতীয়ত, প্রয়োজনে স্পষ্টভাবে “না” বলা এবং কেন না বলা হচ্ছে তার কারণ ব্যাখ্যা করা। প্রতি User মাসে মাত্র $1-এর একটি Product-এ সব Feature তৈরি করে দেওয়া সম্ভব নয়। আর একজন Lead যদি কোনো Feature Request কখন বন্ধ করতে হবে সেই সিদ্ধান্ত নিতে না পারেন, তাহলে তিনি আসলে সমস্যাটি সমাধান করছেন না, শুধু Deadline পর্যন্ত হতাশাটাকে পিছিয়ে দিচ্ছেন।
ফিরে দেখা
কী রাখব, কী বদলাব
যে সিদ্ধান্তগুলো আমি একই রাখতাম: প্রথম Commit থেকেই Offline-first Architecture, Time-এর ক্ষেত্রে Server-কে একমাত্র Authority হিসেবে রাখা, Event-এর পরিবর্তে Interval ব্যবহার, একটি মাত্র Flat Plan, এবং Agent-কে এতটাই Lightweight রাখা যেন এর Resource Usage নিয়ে User-এর অভিযোগ করার কোনো কারণ না থাকে।
যে বিষয়গুলো আমি পরিবর্তন করতাম: Manager-facing View-এর আগে Employee-facing View তৈরি করতাম। Data একই থাকত, শুধু তৈরির ক্রমটা উল্টো হতো। এতে পরবর্তী অংশগুলোর Default আরও ভালোভাবে নির্ধারণ করা যেত। User সংখ্যা Scale করার আগেই Agent-এর জন্য Proper Telemetry এবং Instrumentation তৈরি করতাম, পরে নয়। কারণ যে Client থেকে কোনো Telemetry পাওয়া যায় না, সেটির সমস্যা দূর থেকে Debug করা প্রায় অসম্ভব। এছাড়া Data Retention এবং Deletion-কে শুরু থেকেই Launch Feature হিসেবে বিবেচনা করতাম এবং এগুলোর জন্য একটি বাস্তব User Interface তৈরি করতাম। কেউ প্রশ্ন করার পর Policy লিখে সমাধান করার বিষয় হিসেবে এগুলোকে রেখে দিতাম না।
প্রশ্ন
TimoDesk নিয়ে মানুষ যা জিজ্ঞেস করেন
- TimoDesk কী?
- TimoDesk হলো remote, in-house এবং project-based team-এর জন্য বানানো time tracking ও productivity management software। একটি lightweight desktop app background-এ active time, app usage এবং task progress ধরে রাখে। পরে web dashboard সেই ডেটা থেকে activity report, timesheet, project breakdown এবং screenshot দেখায়। সফটওয়্যারটি THESOFTKING Limited প্রকাশ করেছে, এবং pricing রাখা হয়েছে সহজ: প্রতি user মাসে ১ ডলার।
- TimoDesk-এর ডেভেলপমেন্ট কে লিড করেছেন?
- আমি TimoDesk-এ কাজ করেছি। প্রোডাক্টের কাজ শুরু হয় ২০২৫ সালে। আমার ভূমিকার মধ্যে ছিল architecture decision, code review, release planning, developer mentoring এবং product-level সিদ্ধান্ত, যেমন সফটওয়্যারটি কোন data measure করবে আর কোন জায়গায় measure না করাই ভালো।
- ইন্টারনেট না থাকলে TimoDesk কীভাবে সময় হিসাব রাখে?
- TimoDesk-এর desktop agent offline-firstভাবে কাজ করে। ইন্টারনেট না থাকলে activity data device-এর local store-এ জমা থাকে, পরে connection ফিরলে server-এ sync হয়। Sync endpoint idempotent রাখা হয়েছে, তাই timeout-এর পর retry হলেও একই সময় দুইবার count হয় না। আর যেহেতু user নিজের computer-এর clock বদলাতে পারেন, শেষ হিসাব server-side logic দিয়েই ঠিক করা হয়।
- TimoDesk ইভেন্টের বদলে দশ মিনিটের ইন্টারভ্যালে কাজ জমা রাখে কেন?
- কারণ interval model data-কে predictable রাখে। প্রতিদিন একজন user কতবার server-এ write করবে, সেটার একটি পরিষ্কার সীমা থাকে। আবার কেউ ৩৬ মিনিট কাজ করলে সেটি কোন কোন ১০ মিনিটের window-তে পড়েছে, তা ব্যাখ্যা করা সহজ হয়। Agent দেরিতে sync করলেও server নির্দিষ্ট window ধরে data reconcile করতে পারে: window এসেছে, অথবা আসেনি।
- কর্মী মনিটরিং সফটওয়্যার বানানোর সবচেয়ে কঠিন দিক কোনটি?
- সবচেয়ে কঠিন অংশ শুধু report বানানো নয়। কঠিন হলো এমন একটি agent বানানো, যেটি company-র control-এ নেই এমন computer-এও reliable থাকবে। আরেকটি বড় বিষয় হলো measurement কীভাবে দেখানো হবে। Activity percentage input মাপে, চিন্তা মাপে না। তাই একজন developer documentation পড়লে সেটি অনেক সময় idle হিসেবে দেখা যেতে পারে। কোন number বড় করে দেখানো হচ্ছে, screen-এর ভাষা কী, আর employee নিজের data দেখতে পাচ্ছেন কি না, এগুলো backend query-এর মতোই গুরুত্বপূর্ণ।
- এ ধরনের প্রোডাক্টে কী টেকনোলজি ব্যবহার হয়?
- TimoDesk-এর server side Laravel ও PHP দিয়ে তৈরি, database হিসেবে MySQL ব্যবহার করা হয়েছে, আর background job-এর জন্য queue আছে। Screenshot রাখার জন্য S3 storage ব্যবহার করা হয়েছে। Dashboard বানানো হয়েছে Blade দিয়ে, আর deployment চলে Apache-এর ওপর। Desktop agent আলাদা একটি বড় অংশ, এবং সেটিই engineering-এর কঠিন অর্ধেক।
