Skip to content
 
 

Repository files navigation

ردیاب کدنویسی برای VS Code (سرور)

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


فلسفه پروژه

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

  • بهره‌وری خود را بشناسید: بفهمید در چه ساعت‌هایی از روز و در کدام روزهای هفته بیشترین بازدهی را دارید.
  • تمرکز خود را تحلیل کنید: کشف کنید که زمان شما واقعاً صرف چه پروژه‌ها و زبان‌هایی می‌شود.
  • مالکیت داده‌های خود را حفظ کنید: برخلاف سرویس‌های ابری، تمام داده‌های شما روی سرور شخصی شما ذخیره می‌شود و حریم خصوصی‌تان کاملاً حفظ می‌گردد.

معماری سیستم

این پروژه بر اساس یک معماری کلاینت/سرور (Client/Server) طراحی شده است:

  • کلاینت (Client): همان افزونه VS Code است که روی ویرایشگر شما نصب می‌شود. این افزونه فعالیت‌هایی مانند تایپ کردن، باز بودن فایل‌ها و جابجایی بین پروژه‌ها را تشخیص داده و در بازه‌های زمانی مشخص، داده‌ها را به سمت سرور ارسال می‌کند.

  • سرور (Server): همین پروژه که یک برنامه نوشته شده با Node.js است. وظایف اصلی آن عبارتند از:

    1. دریافت داده: گوش دادن به درخواست‌های ارسالی از طرف کلاینت.
    2. ذخیره‌سازی: ذخیره داده‌ها در یک پایگاه داده ساده مبتنی بر فایل در پوشه database.
    3. ارائه گزارش: ارائه یک رابط کاربری وب (Web UI) که داده‌های تحلیل شده را به صورت نمودارهای گرافیکی نمایش می‌دهد.

✨ ویژگی‌های کلیدی

  • ردیابی دقیق زمان: ثبت زمان صرف شده برای هر پروژه، زبان برنامه‌نویسی، فایل و کامپیوتر.
  • رابط کاربری وب مدرن: مشاهده گزارش‌ها به صورت گرافیکی و جذاب.
  • داشبورد پیشرفته بهره‌وری (Productivity): یک دید کلی از بهره‌وری شما با تحلیل ریتم کاری، تمرکز روی زبان‌ها و پروژه‌ها، و مقایسه عملکرد در روزهای مختلف هفته.
  • داشبورد تحلیل زمان فعال (Time Analysis): تحلیل عمیق زمان‌های «کدنویسی فعال» در مقابل «تفکر و مرور کد» برای درک بهتر نحوه صرف زمان.
  • پشتیبانی از چند کاربر: قابلیت اتصال چندین کاربر از کامپیوترهای مختلف به یک سرور مرکزی.
  • راه‌اندازی آسان: پشتیبانی کامل از Docker برای راه‌اندازی سریع و بدون دردسر.

🚀 راهنمای راه‌اندازی (روش پیشنهادی: 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

برای اینکه افزونه 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 منتشر شده است.

About

🐔 VSCode Coding Tracker extension server side program

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages