org ফাইল ব্রাউজিং এবং সম্পাদনা করার জন্য একটি হালকা নেটিভ ওয়েব অ্যাপ।
অ্যাপটি একটি একক পাইথন সার্ভার হিসাবে প্রয়োগ করা হয়েছে (main.py) প্লাস একটি HTML টেমপ্লেট (templates/index.html) এবং একটি স্টাইলশীট (static/style.css) এটি নোট ডিরেক্টরি স্ক্যান করে .org ফাইল এবং 3-প্যান UI উপস্থাপন করে।


- আপনার নোট ডিরেক্টরি সিমলিঙ্ক
notes. - বাঁধাই ঠিকানা এবং পোর্ট সম্পাদনা করুন
config.yamlযদি ইচ্ছা হয়। python3 main.py.
main.pyএকটি HTTP সার্ভার শুরু করে।- প্রতিটি পৃষ্ঠায় অনুরোধ (
GET /), এটি নোট ডিরেক্টরি পুনরায় স্ক্যান করে.orgফাইল - এটি লিঙ্ক/ব্যাকলিংক সমাধান করে এবং এইচটিএমএল টুকরা তৈরি করে।
- এটা ঐ টুকরা চালু
templates/index.htmlস্থানধারক:{{NAV_ITEMS}}{{MAIN_CONTENT}}{{BACKLINKS}}
- ব্রাউজারে js
templates/index.htmlক্লায়েন্ট-সাইড ইন্টারঅ্যাকশন পরিচালনা করে (সার্চ, শাফেল, বাছাই, জাম্প-টু-কারেন্ট, থিম টগল)।
সার্ভার-সাইড উপাদান (main.py)
- ফাইল অনুসন্ধান এবং পার্সিং:
scan_org_files(...)বারবার খুঁজে পায়.orgফাইল- থেকে শিরোনাম বের করে
#+TITLE:এবং আইডি থেকে:ID:.
- সংস্থার লিঙ্ক/ব্যাকলিংক ব্যবস্থাপনা:
resolve_link_target(...)সমর্থন করেfile:...এবংid:...লিঙ্ক।find_backlinks(...)নির্বাচিত নোটের সাথে লিঙ্ক করে নোট গণনা করে।build_backlink_counts(...)সাজানোর জন্য ব্যাকলিংক যোগফল গণনা করে।
- রেন্ডারিং:
render_org_to_html(...)শিরোনাম পরিবর্তন (*,**…) এবং সাধারণ HTML এর অনুচ্ছেদ।render_line_with_links(...)টেক্সটে org লিঙ্কগুলিকে ক্লিকযোগ্য অ্যাপ লিঙ্কে রূপান্তর করে যেখানে সমাধান সম্ভব।truncate_label(...)সাইডবার লেবেলগুলিকে 32টি অক্ষরে ক্যাপ করুন৷....
- সম্পাদনা:
POST /editএকটি নির্বাচন আপডেট করে.orgস্ট্যাটাস ফ্ল্যাগ সহ ফাইল করুন এবং পুনঃনির্দেশ করুন।
- স্ট্যাটিক ফাইল:
serve_static(...)অধীনে ফাইল পরিবেশন করেstatic/পাথ ট্রাভার্সাল নিরাপত্তা সঙ্গে.
templates/index.html::- বেস লেআউট মার্কআপ।
- সাইডবার নিয়ন্ত্রণ।
- নেভিগেশন লিঙ্কগুলিকে ফিল্টার/বাছাই/শাফেল করতে ছোট JS কন্ট্রোলার।
- ইনলাইনের জন্য MathJax আরম্ভ
$...$রেন্ডারিং
static/style.css::- 3-কলাম ডেস্কটপ গ্রিড এবং স্ট্যাক করা মোবাইল লেআউট।
- নোট তালিকা এবং ব্যাকলিংক জন্য বিনামূল্যে স্ক্রোল এলাকা.
- মোবাইল নোট-লিস্ট ক্যাপ (স্ক্রোল করার আগে প্রায় 5টি নোট দৃশ্যমান)।
স্টার্টআপ কনফিগারেশন থেকে পড়ুন config.yaml একটি ডিফল্ট হিসাবে.
bind_addr: হোস্ট/আইপি আবদ্ধ করতেbind_port: TCP পোর্ট (হতে হবে1..65535)
নোট:
- যদি
config.yamlঅনুপস্থিত, ডিফল্ট127.0.0.1:8000. - CLI পতাকা
--hostএবং--portকনফিগারেশন মান ওভাররাইড করুন। - আপনি এর সাথে একটি ভিন্ন কনফিগার ফাইল চয়ন করতে পারেন
--config /path/to/config.yaml.
python3 main.py --dir notes
python3 main.py --host 127.0.0.1 --port 9000
python3 main.py --config ./config.yaml
python3 main.py --no-browser
- পুনরাবৃত্ত
.orgফাইল অনুসন্ধান. - সক্রিয়-নোট হাইলাইটিং সহ সাইডবার নোট তালিকা।
- শিরোনাম/পাথ অনুসন্ধান ফিল্টার।
সাইডবার অর্ডারিং নিয়ন্ত্রণ
- এলোমেলো নোট।
- ব্যাকলিংক গণনা অনুসারে সাজান (অবরোহী)।
- সৃষ্ট তারিখ অনুসারে বাছাই করুন (আরোহী)।
- টাইমস্ট্যাম্প ছাড়া নোটগুলিকে টাইমস্ট্যাম্পযুক্ত নোটের চেয়ে পুরানো বলে মনে করা হয়।
- বর্তমান নোট বোতামে যান।
- ডান সাইডবার বর্তমান নোটের সাথে লিঙ্ক করা নোট তালিকাভুক্ত করে।
- উভয় সমর্থন করে
file:এবংid:লিঙ্ক রেজোলিউশন।
- নির্বাচিত নোটের জন্য পূর্বরূপ/সম্পাদনা টগল করুন।
- ব্রাউজার থেকে ডিস্কে পরিবর্তনগুলি সংরক্ষণ করুন।
- সাফল্য/ত্রুটি সংরক্ষণ করতে ইনলাইন স্থিতি বার্তা।
- MathJax ব্যবহার করে ইনলাইন গণিত রেন্ডারিং
$...$ডিলিমিটার
- হালকা/গাঢ় থিম টগল (চলবে)।
localStorage) - ডেস্কটপ: স্বাধীন স্ক্রোলযোগ্য সাইডবার।
- মোবাইল: নোট তালিকা তার নিজস্ব স্ক্রোল এলাকা দ্বারা আচ্ছাদিত করা হয়.
- সম্পূর্ণ পাঠ্যের জন্য উপবৃত্তাকার এবং টুলটিপ সহ সাইডবার টেক্সট ট্রাঙ্কেশন।
main.py: সার্ভার, পার্সিং, রেন্ডারিং, রাউটিং।templates/index.html:পৃষ্ঠা টেমপ্লেট + UI আচরণ JS.static/style.css: স্টাইলিং এবং প্রতিক্রিয়াশীল বিন্যাস.config.yaml: বাঁধাই কনফিগারেশন.notes/:notes ডিরেক্টরি (একটি সিমলিঙ্ক হতে পারে)।old_notes/: ঐচ্ছিক স্থানীয় নোট স্ন্যাপশট.
- একটি সম্পূর্ণ org পার্সার নয়; রেন্ডারিং ইচ্ছাকৃতভাবে সহজ.
- প্রতিটি অনুরোধে নোটগুলি পুনরায় স্ক্যান করা হয় (সরল এবং তাজা, কিন্তু বড় নোট সেটের জন্য অপ্টিমাইজ করা হয়নি)।
- ম্যাথ রেন্ডারিং CDN থেকে MathJax লোড করার উপর নির্ভর করে।