# Noterich P2P Sync টিউটোরিয়াল: ক্লাউড ছাড়াই বিভিন্ন ডিভাইসে সিঙ্ক করুন > **আপনার নোটগুলো বিভিন্ন ডিভাইসে নিরাপদভাবে সিঙ্ক করুন – কোনো ক্লাউড স্টোরেজের দরকার নেই।** ডেটা গোপনীয়তা অত্যন্ত গুরুত্বপূর্ণ এই যুগে, Noterich বিভিন্ন ডিভাইসে নোট সিঙ্ক করার জন্য একটি অভিনব পদ্ধতি প্রদান করে। আমাদের **P2P (পিয়ার-টু-পিয়ার) সিঙ্ক** ফিচারটি আপনার ডিভাইসগুলোর মধ্যে নোট শেয়ার করার কাজটি কোনো ক্লাউড সার্ভারের ব্যবহার ছাড়াই সম্পন্ন করে। আপনার ডেটা সর্বদা আপনার নিজস্ব থাকে। ## P2P সিঙ্ক কেন ব্যবহার করুন? প্রচলিত নোট-লেখার অ্যাপগুলো আপনার ডেটা কেন্দ্রীভূত সার্ভারে সংরক্ষণ করে। এতে গোপনীয়তার ঝুঁকি, সাবস্ক্রিপশন খরচ এবং তৃতীয় পক্ষের ইনফ্রাস্ট্রাকচারের নির্ভরতা থাকে। Noterich একেবারে ভিন্ন পদ্ধতি ব্যবহার করে: ```mermaid graph LR A[Your Device] <-->|Direct Connection| B[Your Other Device] C[Cloud Server] -.->|Not Required| A C -.->|Not Required| B style A fill:#4CAF50,color:#fff style B fill:#4CAF50,color:#fff style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5 ``` ### প্রধান সুবিধাসমূহ - **🔒 গোপনীয়তা প্রথম**: আপনার নোটগুলো কখনো ক্লাউড সার্ভারে যায় না। - **⚡ দ্রুত ও সরাসরি**: ডিভাইসগুলো সরাসরি যোগাযোগ করে, ফলে সিঙ্ক প্রক্রিয়া দ্রুত হয়। - **💰 কোনো সাবস্ক্রিপশনের দরকার নেই**: কোনো প্রিমিয়াম লেভেল ছাড়াই P2P সিঙ্ক করা যায়। - **🌐 যেকোনো জায়গায় কাজ করে**: লোকাল নেটওয়ার্ক বা ইন্টারনেটের মাধ্যমে সিঙ্ক করা যায়। - **📱 বিভিন্ন প্ল্যাটফর্মে কাজ করে**: ডেস্কটপ, ল্যাপটপ, ট্যাবলেট ও মোবাইল ডিভাইসে সিঙ্ক করা যায়। ## P2P সিঙ্ক কীভাবে কাজ করে? Noterich **WebRTC প্রযুক্তি** এবং **PeerJS** ব্যবহার করে আপনার ডিভাইসগুলোর মধ্যে সরাসরি সংযোগ স্থাপন করে। যখন আপনি সিঙ্ক করার প্রক্রিয়া শুরু করেন: ```mermaid sequenceDiagram participant D1 as Device A (Sender) participant S as Signaling Server participant D2 as Device B (Receiver) D1->>S: Request connection ID S-->>D1: Generate room ID D1->>D2: Share connection link (QR/URL) D2->>S: Connect using room ID S-->>D2: Establish peer connection D1->>D2: Encrypt & send notes D2->>D2: Decrypt & import notes Note over D1,D2: Direct encrypted transfer<br/>No data stored on server ``` ### পিছনের প্রযুক্তি Noterichের P2P বাস্তবায়নে নিম্নলিখিত প্রযুক্তিগুলো ব্যবহৃত হয়: 1. **PeerJS লাইব্রেরি**: ব্রাউজার থেকে ব্রাউজারে যোগাযোগের জন্য WebRTC প্রক্রিয়াকে সামলায়। 2. **AES-GCM এনক্রিপশন**: আপনার নোট ডেটার জন্য সামরিক মানের এনক্রিপশন। 3. **PBKDF2 কী উৎপাদন**: নিরাপদ পাসওয়ার্ড-ভিত্তিক কী উৎপাদন। 4. **MessagePack সিরেজিওনাইজেশন**: দ্রুত ডেটা এনক্রিপশনের জন্য। 5. **IndexedDB স্টোরেজ**: অফলাইন অ্যাক্সেসের জন্য ব্যবহৃত ডেটাবেস। ## P2P সিঙ্ক কীভাবে শুরু করবেন? ### পূর্বশর্তসমূহ শুরু করার আগে নিম্নলিখিত বিষয়গুলো নিশ্চিত করুন: - ✅ উভয় ডিভাইসে Noterich ইনস্টল করা আছে। - ✅ উভয় ডিভাইস ইন্টারনেটে সংযুক্ত আছে। - ✅ আধুনিক ওয়েব ব্রাউজার ব্যবহার করা হচ্ছে। ### ধাপ ১: সৌদান ডিভাইস থেকে সিঙ্ক করুন 1. Noterich-এ আপনি যে নোটটি শেয়ার করতে চান সেটি খুলুন। 2. টুলবারে **Share** বাটনে ক্লিক করুন। 3. **"P2P Share"** অপশনটি নির্বাচন করুন। 4. (ঐচ্ছিক) আরও নিরাপত্তার জন্য পাসওয়ার্ড সেট করুন। - পাসওয়ার্ড অবশ্যই ৮ অক্ষরের হতে হবে। - AES-256-GCM এনক্রিপশন ব্যবহৃত হয়। 5. P2P সার্ভার ইনিশিয়ালাইজ হওয়ার জন্য অপেক্ষা করুন। ```mermaid graph TD A[Open Note] --> B[Click Share Button] B --> C[Select P2P Share] C --> D{Set Password?} D -->|Yes| E[Enter Password ≥8 chars] D -->|No| F[Skip Encryption] E --> G[Initialize P2P Server] F --> G G --> H[Generate Share Link & QR Code] ``` ### ধাপ ২: সংযোগ লিঙ্ক শেয়ার করুন P2P সার্ভার শুরু হলে, Noterich নিম্নলিখিতগুলো তৈরি করে: - **একটি অনন্য শেয়ারিং লিঙ্ক** যেখানে সংযোগের প্যারামিটার রয়েছে। - **একটি QR কোড** যা মোবাইল ডিভাইসে সহজেই স্ক্যান করা যায়। লিঙ্কের ফরম্যাট হয় এভাবে: ``` https://noterich.com/#dbshare=<infoHash>&server=<signaling-server> ``` **শেয়ারিং পদ্ধতিসমূহ:** | পদ্ধতি | সবচেয়ে উপযুক্ত | কীভাবে করবেন | |--------|----------|--------| | 🔗 লিঙ্ক কপি | ইমেইল, মেসেজিং অ্যাপ | “Copy Link” বাটনে ক্লিক করুন। | | 📱 QR কোড | মোবাইল ডিভাইস | ডিভাইসের ক্যামেরা দিয়ে স্ক্যান করুন। | | 📧 ইমেইল | দূরবর্তী সহযোগী | লিঙ্কটি ইমেইলে পেস্ট করুন। | ### ধাপ ৩: গ্রহণকারী ডিভাইসে নোট পাওয়া যাবে। গ্রহণকারী ডিভাইসে: 1. **লিঙ্কটি খুলুন**। - লিঙ্কটি সরাসরি ক্লিক করুন, অথবা QR কোড স্ক্যান করুন। 2. **আগত নোটগুলো দেখুন**। - নোটের শিরোনাম ও মেটাডেটা দেখুন। - পাঠকের তথ্য যাচাই করুন। 3. **পাসওয়ার্ড ইনপুট করুন** (যদি এনক্রিপশন করা থাকে)। - পাঠক দ্বারা দেওয়া পাসওয়ার্ড ইনপুট করুন। - ডেটা আপনার ডিভাইসে স্থানীয়ভাবে ডিক্রিপ্ট হয়। 4. **গন্তব্য ওয়ার্কস্টেশন নির্বাচন করুন**। - বিদ্যমান ওয়ার্কস্টেশন নির্বাচন করুন, অথবা নতুন ওয়ার্কস্টেশন তৈরি করুন। 5. **ইম্পোর্ট করার জন্য নিশ্চিত হয়ে নিন**। - নোটগুলো ডিক্রিপ্ট হয়ে ইনডেক্সডব্লিউডি-তে সংরক্ষিত হয়। - সার্চ ইনডেক্সটি স্বয়ংক্রিয়ভাবে পুনর্গঠিত হয়। ```mermaid graph TD A[Open Link] --> B[Connect to Sender] B --> C{Encrypted?} C -->|Yes| D[Enter Password] C -->|No| E[Receive Metadata] D --> E E --> F[Preview Notes] F --> G[Select Workspace] G --> H[Import & Index] H --> I[Sync Complete!] style I fill:#4CAF50,color:#fff ``` ## উন্নত বৈশিষ্ট্যসমূহ ### এনক্রিপ্টেড ট্রান্সফার সংবেদনশীল নোটগুলোর জন্য Noterich অফলাইন এনক্রিপশন প্রদান করে: **এনক্রিপশন প্রক্রিয়া:** ```javascript // পাসওয়ার্ড → এনক্রিপশন কী (PBKDF2) password + salt → deriveKey() → AES-256-GCM key // নোট ডেটা → এনক্রিপ্টেড বাফার noteData + key + iv → encrypt() → encryptedBuffer // ট্রান্সফার প্যাকেজ { encryptedBuffer: ArrayBuffer, salt: Uint8Array, // কী উৎপাদনের জন্য iv: Uint8Array // ইনিশিয়ালাইজেশন ভেক্টর } ``` **নিরাপত্তা বৈশিষ্ট্যসমূহ:** - 🔐 ১০০,০০০ PBKDF2 ইটারেশন ব্যবহৃত হয় কী উৎপাদনের জন্য। - 🔐 প্রতিটি ট্রান্সফারের জন্য র্যান্ডম স্যালট ও ইনভিডেন্স থাকে। - 🔐 AES-256-GCM এডভাইজড এনক্রিপশন ব্যবহৃত হয়। - 🔐 পাসওয়ার্ড কখনো ট্রান্সমিট করা হয় না – শুধুমাত্র স্থানীয়ভাবে ব্যবহৃত হয়। ### ব্যাচ নোট সিঙ্ক একাধিক নোটকে দ্রুত সিঙ্ক করুন: 1. **ডাটাবেস ট্রান্সফার** থেকে সেটিংস থেকে অ্যাক্সেস করুন। 2. **"P2P Sync"** মোড নির্বাচন করুন। 3. সিঙ্ক করার জন্য নোটগুলো নির্বাচন করুন। 4. গ্রহণকারী ব্যাচ প্রি঵িউয়স অপশনগুলো দেখতে পাবে। **পারফরম্যান্স অপ্টিমাইজেশন:** - নোটগুলো ৫১২কেবিটে ভাগ করে ট্রান্সফার করা হয়। - নন-ব্লক অ্যাসিঙ্ক্রো অপারেশন ফ্রিডম করে ইউআই ফ্রিস্ট থাকে। - প্রগ্রেস ট্র্যাকিং বাইট-লেভেল সঠিকতার সাথে করা হয়। - কোনো ডেটা ক্ষতি হলে কাটাওয়ার করা যায়। ### সংঘর্ষ সমাধান যখন দুটি ডিভাইসে একই নোট রয়েছে তখন: ```mermaid graph TD A[Detect Conflict] --> B{Compare Timestamps} B -->|Local Newer| C[Keep Local Version] B -->|Remote Newer| D[Show Conflict Dialog] D --> E[Choose Version] E --> F[Local] E --> G[Remote] E --> H[Merge Manually] B -->|Both Deleted| I[Skip] style C fill:#2196F3,color:#fff style F fill:#2196F3,color:#fff style G fill:#4CAF50,color:#fff style B1 fill:#4CAF50,color:#fff ```