Skip to content

30nap/AssetsManagement

Repository files navigation

داشبورد دارایی‌ها

یک وب‌اپلیکیشن فارسی (Flask) برای مدیریت دارایی‌ها و محاسبه ارزش آن‌ها به تومان، دلار و یورو، با بروزرسانی آنلاین قیمت‌ها از بازارهای ایران و نمودار روند ارزش کل در طول زمان.

امکانات

  • محاسبه‌ی لحظه‌ای ارزش هر دارایی و مجموع کل به تومان، دلار و یورو.
  • بروزرسانی آنلاین قیمت‌ها از:
    • TGJU برای طلا، سکه، ارز و ارز دیجیتال.
    • بورس تهران (TSETMC) برای سهام شرکت‌ها.
  • افزودن از بازار: جستجوی زنده در بورس، طلا، ارز و ارز دیجیتال و افزودن هر نماد با قیمت زنده.
  • افزودن دستی برای دارایی‌هایی که منبع آنلاین ندارند (سپرده، صندوق و ...).
  • نمودار روند ارزش کل که هر روز یک نقطه از ارزش کل دارایی‌ها را ثبت و رشد آن را در زمان نمایش می‌دهد (با امکان نمایش به تومان/دلار/یورو).
  • نمودار ترکیب دارایی (سهم هر دارایی از کل).
  • ذخیره‌ی همه‌ی داده‌ها در localStorage مرورگر.

ساختار پروژه

flask_app.py              برنامه‌ی Flask و مسیرها (نقطه‌ی ورود)
providers.py              توزیع جستجو/قیمت بین ارائه‌دهنده‌ها
tgju.py                   کاتالوگ و دریافت قیمت طلا/ارز/کریپتو از TGJU
tsetmc.py                 جستجو و قیمت سهام از بورس تهران
wsgi_pythonanywhere.py    نمونه‌ی فایل WSGI برای PythonAnywhere
requirements.txt          وابستگی‌ها (Flask, requests)
templates/index.html      رابط کاربری
static/styles.css         استایل
static/app.js             منطق سمت کلاینت

اجرای محلی

pip install -r requirements.txt
python flask_app.py

سپس این آدرس را باز کنید:

http://127.0.0.1:5000/

برای پورت دیگر، متغیر PORT را تنظیم کنید:

PORT=8000 python flask_app.py

اجرا روی PythonAnywhere

  1. فایل‌های پروژه را در پوشه‌ای مثل /home/yourusername/AssetManagment آپلود کنید (یا با git clone).
  2. در یک Bash console وابستگی‌ها را نصب کنید:
    pip install --user -r requirements.txt
  3. در تب Web یک وب‌اپ جدید از نوع Manual configuration (با همان نسخه‌ی پایتون) بسازید.
  4. در بخش Code، فایل WSGI را باز کنید و محتوای آن را با محتوای wsgi_pythonanywhere.py جایگزین کنید (و مسیر PROJECT_DIR را اصلاح کنید).
  5. Reload بزنید.

توجه درباره‌ی بروزرسانی آنلاین: حساب‌های رایگان PythonAnywhere فقط اجازه‌ی اتصال به سایت‌های داخل allowlist را دارند و درخواست‌ها از طریق پراکسی آن‌ها عبور می‌کنند. اگر tgju.org یا tsetmc.com در allowlist نباشند، بخش بروزرسانی آنلاین کار نمی‌کند؛ در این حالت قیمت‌ها را دستی وارد کنید یا از حساب پولی (که محدودیت ندارد) استفاده کنید. کتابخانه‌ی requests به‌صورت خودکار از پراکسی PythonAnywhere استفاده می‌کند.

مسیرهای API

  • GET /api/search?q=<query> — جستجوی نمادها در همه‌ی بازارها. هر نتیجه شامل provider، code، symbol، name، market، currency و unit است.
  • POST /api/quote — دریافت هم‌زمان قیمت چند نماد. بدنه: {"items": [{"id": "...", "provider": "tgju|tsetmc", "code": "..."}]} پاسخ: {"results": {"<id>": {"value": ..., "currency": "IRR|USD"}}, "failed": [...]}

قیمت‌هایی که با واحد ریال خوانده می‌شوند (TGJU و بورس) در سرور به تومان تبدیل می‌شوند. ارزهای دیجیتال با قیمت دلاری برگردانده می‌شوند.

افزودن نماد جدید به کاتالوگ TGJU

برای افزودن طلا/ارز/کریپتوی جدید، یک ردیف به CATALOG در tgju.py اضافه کنید (با code معادل slug صفحه‌ی پروفایل TGJU، name فارسی، unit، kind برابر irr یا usd و category). سهام بورس نیازی به افزودن دستی ندارند چون از API زنده‌ی TSETMC جستجو می‌شوند.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors