این پروژه، بخش سرور برای افزونه Coding Tracker در VS Code است. این سرور به شما امکان میدهد تا دادههای مربوط به فعالیت کدنویسی خود را روی یک سرور شخصی میزبانی کرده، آنها را تحلیل کنید و به درک عمیقی از عادات و الگوهای کاری خود دست یابید.
در دنیای توسعه نرمافزار، زمان یکی از ارزشمندترین داراییهاست. این پروژه با این باور ساخته شده است که توسعهدهندگان با داشتن دادههای دقیق از فعالیتهای خود، میتوانند تصمیمات هوشمندانهتری بگیرند. با ردیابی و تحلیل زمان، میتوانید:
- بهرهوری خود را بشناسید: بفهمید در چه ساعتهایی از روز و در کدام روزهای هفته بیشترین بازدهی را دارید.
- تمرکز خود را تحلیل کنید: کشف کنید که زمان شما واقعاً صرف چه پروژهها و زبانهایی میشود.
- مالکیت دادههای خود را حفظ کنید: برخلاف سرویسهای ابری، تمام دادههای شما روی سرور شخصی شما ذخیره میشود و حریم خصوصیتان کاملاً حفظ میگردد.
این پروژه بر اساس یک معماری کلاینت/سرور (Client/Server) طراحی شده است:
-
کلاینت (Client): همان افزونه VS Code است که روی ویرایشگر شما نصب میشود. این افزونه فعالیتهایی مانند تایپ کردن، باز بودن فایلها و جابجایی بین پروژهها را تشخیص داده و در بازههای زمانی مشخص، دادهها را به سمت سرور ارسال میکند.
-
سرور (Server): همین پروژه که یک برنامه نوشته شده با Node.js است. وظایف اصلی آن عبارتند از:
- دریافت داده: گوش دادن به درخواستهای ارسالی از طرف کلاینت.
- ذخیرهسازی: ذخیره دادهها در یک پایگاه داده ساده مبتنی بر فایل در پوشه
database. - ارائه گزارش: ارائه یک رابط کاربری وب (Web UI) که دادههای تحلیل شده را به صورت نمودارهای گرافیکی نمایش میدهد.
- ردیابی دقیق زمان: ثبت زمان صرف شده برای هر پروژه، زبان برنامهنویسی، فایل و کامپیوتر.
- رابط کاربری وب مدرن: مشاهده گزارشها به صورت گرافیکی و جذاب.
- داشبورد پیشرفته بهرهوری (
Productivity): یک دید کلی از بهرهوری شما با تحلیل ریتم کاری، تمرکز روی زبانها و پروژهها، و مقایسه عملکرد در روزهای مختلف هفته. - داشبورد تحلیل زمان فعال (
Time Analysis): تحلیل عمیق زمانهای «کدنویسی فعال» در مقابل «تفکر و مرور کد» برای درک بهتر نحوه صرف زمان. - پشتیبانی از چند کاربر: قابلیت اتصال چندین کاربر از کامپیوترهای مختلف به یک سرور مرکزی.
- راهاندازی آسان: پشتیبانی کامل از Docker برای راهاندازی سریع و بدون دردسر.
سادهترین و بهترین روش برای راهاندازی این سرور، استفاده از Docker و Docker Compose است.
پیشنیازها:
مراحل:
۱. کلون کردن پروژه:
git clone https://github.com/ArashZich/vscode-coding-tracker-server.git
cd vscode-coding-tracker-server۲. ایجاد فایل توکن (token.json):
این فایل مسئولیت مدیریت دسترسیها را بر عهده دارد. یک پوشه به نام tokens بسازید و داخل آن فایلی به نام token.json با محتوای زیر ایجاد کنید.
(برای امنیت بیشتر، از توکنهای تصادفی و طولانی استفاده کنید.)
{
"adminToken": [
{
"token": "YOUR_SUPER_SECRET_ADMIN_TOKEN"
}
],
"viewReportToken": "public",
"uploadToken": [
{
"remark": "My Personal Token",
"token": "YOUR_SECRET_UPLOAD_TOKEN"
}
]
}adminToken: یک توکن برای دسترسیهای مدیریتی به سرور (در آینده استفاده خواهد شد).uploadToken: مهمترین توکن! افزونه VS Code برای ارسال و آپلود دادههای فعالیت شما از این توکن استفاده میکند.viewReportToken: این گزینه مشخص میکند چه کسانی قادر به دیدن گزارشها هستند. اگر مقدار آن"public"باشد، هر کسی با داشتن آدرس سرور میتواند گزارشها را ببیند. در غیر این صورت، برای مشاهده گزارش باید توکن آپلود را به انتهای آدرس اضافه کرد.
۳. راهاندازی با Docker Compose: دستور زیر را اجرا کنید تا کانتینر Docker ساخته شده و سرور در پسزمینه اجرا شود:
docker-compose up -d- برای مشاهده لاگها و اطمینان از اجرای صحیح سرور، میتوانید از دستور
docker-compose logs -fاستفاده کنید.
سرور شما اکنون روی پورت 10345 در حال اجرا است.
برای اینکه افزونه VS Code اطلاعات را به سرور شما ارسال کند، تنظیمات زیر را در فایل settings.json خود در VS Code وارد کنید (برای باز کردن این فایل، کلیدهای Ctrl+Shift+P را زده و Open User Settings (JSON) را جستجو کنید):
{
"codingTracker.localServerMode": false,
"codingTracker.serverURL": "http://YOUR_SERVER_IP:10345",
"codingTracker.uploadToken": "YOUR_SECRET_UPLOAD_TOKEN",
"codingTracker.computerId": "My-Laptop"
}codingTracker.localServerMode: حتماً بایدfalseباشد تا افزونه به سرور خارجی (همین سرور) متصل شود.codingTracker.serverURL: آدرس IP سروری که در مرحله قبل راهاندازی کردید. اگر سرور روی همین سیستم در حال اجراست، ازhttp://localhost:10345استفاده کنید.codingTracker.uploadToken: دقیقا همان توکنی که در فایلtoken.jsonبه عنوانuploadTokenتعریف کردهاید.codingTracker.computerId: یک نام دلخواه برای کامپیوتر فعلیتان. این کار به شما اجازه میدهد گزارشهای خود را به تفکیک دستگاههای مختلف (مثلاً لپتاپ کاری و کامپیوتر شخصی) مشاهده کنید.
برای مشاهده گزارشهای خود، کافیست آدرس زیر را در مرورگر خود باز کنید:
http://YOUR_SERVER_IP:10345/report/
نگاهی کلی به پوشههای اصلی پروژه:
/app.js: فایل اصلی و نقطه شروع اجرای سرور./frontend: شامل تمام کدهای مربوط به رابط کاربری وب (HTML, SASS, JavaScript و نمودارها)./lib: قلب تپنده پروژه؛ شامل منطق اصلی تحلیل دادهها./database: محل ذخیرهسازی فایلهای دادههای خام که از VS Code ارسال میشود./tokens: محل نگهداری فایلtoken.jsonبرای مدیریت دسترسیها./build: اسکریپتهای مربوط به ساخت (Build) پروژه فرانتاند.
از مشارکت شما در این پروژه استقبال میشود. برای ارائه پیشنهادات یا گزارش مشکلات، لطفاً یک Issue جدید در مخزن گیتهاب پروژه ثبت کنید.
این پروژه تحت لایسنس GPL-3.0 منتشر شده است.