From 861c7b237f1486d521dd9cac8c239d13d4f85d08 Mon Sep 17 00:00:00 2001 From: 0NIKHIL0 Date: Fri, 7 Nov 2025 16:46:04 +0530 Subject: [PATCH 1/2] added telugu Documentation --- self | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 self diff --git a/self b/self new file mode 100644 index 0000000..4d07abe --- /dev/null +++ b/self @@ -0,0 +1,65 @@ +స్వీయ-హోస్టెడ్ PairDrop సర్వర్ డాక్యుమెంటేషన్ + +పేరు: మండవ నిఖిల్ +కాలేజ్: KL యూనివర్సిటీ +ఆపరేటింగ్ సిస్టమ్: Ubuntu 22.04 LTS + +1️⃣ పరిచయం +ఈ పత్రం Ubuntu లో Self-Hosted PairDrop Server ను సెట్‌అప్ చేయడం మరియు నిర్వహించడం గురించి వివరంగా వివరిస్తుంది. +PairDrop అనేది Snapdrop నుండి ప్రేరణ పొందిన ఒక open-source, peer-to-peer ఫైల్ ట్రాన్స్ఫర్ టూల్. +ఇది cloud storage అవసరం లేకుండా — ఇంటర్నెట్ లేదా లోకల్ నెట్‌వర్క్ (LAN) ద్వారా పరికరాల మధ్య నేరుగా, వేగంగా, సురక్షితంగా ఫైళ్లను పంచుకునే సౌకర్యం ఇస్తుంది. +ఈ సెటప్ ఉద్దేశం ఏమిటంటే — ఫైల్ బదిలీలను స్వంత నియంత్రణలో, ప్రైవేట్ మరియు సురక్షిత వాతావరణంలో నిర్వహించడం. + +2️⃣ సిస్టమ్ అవసరాలు +PairDrop సర్వర్‌ని హోస్ట్ చేయడానికి ముందు మీ సిస్టమ్ ఈ క్రింది అవసరాలను తీర్చాలి: +- ఆపరేటింగ్ సిస్టమ్: Ubuntu 20.04 లేదా ఆపై (సిఫార్సు: Ubuntu 22.04 LTS) +- ప్రాసెసర్: Dual-core CPU లేదా అంతకంటే ఎక్కువ +- మెమరీ (RAM): కనీసం 2 GB +- స్టోరేజ్: కనీసం 10 GB ఖాళీ స్థలం +- నెట్‌వర్క్: స్థిరమైన ఇంటర్నెట్ కనెక్షన్ లేదా లోకల్ LAN +- సాఫ్ట్‌వేర్ డిపెండెన్సీలు: + - Node.js (v16 లేదా అంతకంటే పైగా) + - npm (Node Package Manager) + - Git + - PM2 (ప్రాసెస్ మేనేజ్‌మెంట్ కోసం) + +3️⃣ ఇన్‌స్టాలేషన్ మరియు సెటప్ +Ubuntu లో PairDrop ను హోస్ట్ చేయడానికి ఈ స్టెప్పులు అనుసరించండి: + +1. సిస్టమ్‌ను అప్డేట్ చేయండి: + sudo apt update && sudo apt upgrade -y +2. Node.js మరియు npm ఇన్‌స్టాల్ చేయండి: + sudo apt install nodejs npm -y +3. PairDrop రిపోజిటరీని క్లోన్ చేయండి: + git clone https://github.com/schlagmichdoch/PairDrop.git + cd PairDrop +4. డిపెండెన్సీలు ఇన్‌స్టాల్ చేయండి: + npm install +5. సర్వర్‌ను ప్రారంభించండి: + npm start +6. PairDrop ను యాక్సెస్ చేయండి: + బ్రౌజర్ ఓపెన్ చేసి, http://localhost:3000 లేదా మీ సర్వర్ యొక్క IP అడ్రెస్ కు వెళ్ళండి. + +4️⃣ సర్వర్ మేనేజ్‌మెంట్ మరియు కాన్ఫిగరేషన్ +సర్వర్ ఎప్పుడూ రన్ అవుతూ ఉండేలా చేయడానికి PM2 వంటి ప్రాసెస్ మేనేజర్ వాడటం ఉత్తమం. +PM2 ను గ్లోబల్‌గా ఇన్‌స్టాల్ చేయండి: + sudo npm install -g pm2 +PairDrop సర్వర్‌ను PM2 ద్వారా ప్రారంభించండి: + pm2 start npm --name pairdrop -- start +సిస్టమ్ రీబూట్ తర్వాత ఆటోమేటిక్‌గా రీస్టార్ట్ కావాలంటే: + pm2 startup + pm2 save +PairDrop ను HTTPS తో సెక్యూర్ చేయాలంటే, Nginx reverse proxy ఉపయోగించి సర్టిఫికేట్ సెట్ చేయవచ్చు. + +5️⃣ టెస్టింగ్, ట్రబుల్‌షూటింగ్ మరియు ముగింపు +సెటప్ తర్వాత, రెండు లేదా ఎక్కువ పరికరాల మధ్య ఫైళ్లను పంపి PairDrop సరిగా పనిచేస్తుందో పరీక్షించండి. +పరికరాలు ఒకదానిని ఒకటి గుర్తించకపోతే ఈ అంశాలను పరిశీలించండి: +- అన్ని పరికరాలు ఒకే నెట్‌వర్క్ లో ఉన్నాయా? +- ఫైర్‌వాల్ లేదా రౌటర్ WebRTC / WebSocket కనెక్షన్లను బ్లాక్ చేస్తున్నాయా? +- లాగ్స్ చూడటానికి ఈ కమాండ్ వాడండి: pm2 logs pairdrop + +🔚 ముగింపు +ఈ పత్రం Ubuntu లో PairDrop ను సొంతంగా హోస్ట్ చేయడానికి దశల వారీ మార్గదర్శకాన్ని అందిస్తుంది. +ఇది ద్వారా యూజర్లు తమ డేటాపై పూర్తి నియంత్రణ పొందుతారు మరియు ఫైల్ బదిలీ వేగం మరియు సెక్యూరిటీ మెరుగుపడతాయి. +ఈ సెటప్‌ను Mahi Venkat Pavan (KL University) ప్రాక్టికల్‌గా అమలు చేసి, peer-to-peer టెక్నాలజీని వాస్తవ ప్రపంచంలో ఎలా ఉపయోగించాలో ప్రదర్శించారు. + From 798654c31b34a9ad64b9aacd16d3d869de684e69 Mon Sep 17 00:00:00 2001 From: 0NIKHIL0 Date: Wed, 26 Nov 2025 18:00:02 +0530 Subject: [PATCH 2/2] added report of 2400040162_M.NIKHIL --- 2400040162_M.NIKHIL/2400040162.tex | 413 +++++++++++++++++++++++++++++ 2400040162_M.NIKHIL/ose.pdf | Bin 0 -> 74002 bytes selfhosted/nikhil.md | 64 +++++ 3 files changed, 477 insertions(+) create mode 100644 2400040162_M.NIKHIL/2400040162.tex create mode 100644 2400040162_M.NIKHIL/ose.pdf create mode 100644 selfhosted/nikhil.md diff --git a/2400040162_M.NIKHIL/2400040162.tex b/2400040162_M.NIKHIL/2400040162.tex new file mode 100644 index 0000000..7528f6d --- /dev/null +++ b/2400040162_M.NIKHIL/2400040162.tex @@ -0,0 +1,413 @@ +\documentclass[12pt,a4paper]{article} + +% Essential packages +\usepackage[utf8]{inputenc} +\usepackage[margin=1in]{geometry} +\usepackage{graphicx} +\usepackage{xcolor} +\usepackage{listings} +\usepackage{fancyhdr} +\usepackage{titlesec} +\usepackage{enumitem} +\usepackage{hyperref} +\hypersetup{ + hidelinks +} + +% ==== THEME COLORS ==== +\definecolor{themeBlue}{HTML}{0047AB} +\definecolor{lightGray}{HTML}{F5F5F5} + +% ==== FONT CHANGE TO MODERN SANS-SERIF ==== +\renewcommand{\familydefault}{\sfdefault} +\usepackage{helvet} + +% ==== CODE BLOCK THEME ==== +\lstset{ + basicstyle=\ttfamily\small, + breaklines=true, + frame=single, + numbers=left, + numberstyle=\tiny, + backgroundcolor=\color{lightGray}, + keywordstyle=\color{themeBlue}\bfseries +} + +% ==== HEADER/FOOTER THEME ==== +\pagestyle{fancy} +\fancyhf{} +\rhead{\textcolor{themeBlue}{Open Source Report}} +\lhead{\textcolor{themeBlue}{Mandava Nikhil}} +\rfoot{\textcolor{themeBlue}{Page \thepage}} +\renewcommand{\headrulewidth}{1pt} +\renewcommand{\headrule}{\hbox to\headwidth{\color{themeBlue}\leaders\hrule height \headrulewidth\hfill}} + +% ==== SECTION STYLE ==== +\titleformat{\section} + {\Large\bfseries\color{themeBlue}} + {\thesection}{1em}{} + +\titleformat{\subsection} + {\large\bfseries\color{black}} + {\thesubsection}{1em}{} + +\titleformat{\subsubsection} + {\normalsize\bfseries\color{themeBlue}} + {\thesubsubsection}{1em}{} + +\begin{document} + +% ============ FRONT PAGE ============ +\begin{titlepage} + \centering + \vspace*{1cm} + + {\Huge\bfseries\color{themeBlue} Open Source Software Report\\[0.5cm] \par} + + \vspace{2cm} + + {\Large\bfseries Student Details\par} + \vspace{1cm} + + \begin{tabular}{ll} + \textbf{Name:} & MANDAVA NIKHIL \\[0.3cm] + \textbf{Roll Number:} & 2400040162 \\[0.3cm] + \textbf{Department:} & ELECTRONICS AND COMMUNICATION ENGINEERING \\[0.3cm] + \textbf{University:} & KL University \\[0.3cm] + \textbf{Course:} & Open Source \\[0.3cm] + \textbf{Semester:} & ODD SEMESTER\\[0.3cm] + \end{tabular} + + \vfill + + {\large Submitted to:\\[0.3cm] + \textbf{Dr. Sripath Roy}\\ + Department of Computer Science and Engineering\\ + KL University\par} + + \vspace{1cm} +\end{titlepage} + +\newpage +\tableofcontents +\newpage + +% ================================ +% 1. LINUX DISTRO +% ================================ +\section{Linux Distribution} + +\subsection{Distribution Used: Ubuntu 22.04 LTS} + +Ubuntu 22.04 LTS is a widely used Linux operating system that provides Long Term Support, stability, and security updates for 5 years, making it ideal for development and server hosting. + +\subsection{Why Ubuntu?} + +\begin{itemize} + \item \textbf{User-Friendly}: Easy to install and use + \item \textbf{Stable and Secure}: Long-term support + \item \textbf{Developer Tools}: Supports Git, Node.js, Python, GCC + \item \textbf{Server Ready}: Commonly used for cloud deployments +\end{itemize} + +\subsection{System Specifications} + +\begin{itemize} + \item OS: Ubuntu 22.04 LTS + \item Kernel: Linux 5.15 + \item Architecture: x86\_64 + \item Shell: Bash 5.1 +\end{itemize} + +\newpage + +% ================================ +% 2. ENCRYPTION AND GPG +% ================================ +\section{Encryption and GPG} + +\subsection{What is Encryption?} + +Encryption converts readable data into ciphertext so that only authorized users with the correct key can read it. + +\subsection{Types of Encryption} + +\subsubsection{Symmetric Encryption} +\begin{itemize} + \item Same key for encryption and decryption + \item Fast and efficient + \item Examples: AES, DES +\end{itemize} + +\subsubsection{Asymmetric Encryption} +\begin{itemize} + \item Uses a public and private key + \item Commonly used for secure communication + \item Example: RSA +\end{itemize} + +\subsection{What is GPG?} + +GPG (GNU Privacy Guard) is an open-source encryption tool used to: +\begin{itemize} + \item Encrypt data + \item Decrypt messages + \item Digitally sign documents +\end{itemize} + +\subsection{Installing GPG} +\begin{lstlisting}[language=bash] +sudo apt update +sudo apt install gnupg +\end{lstlisting} + +\subsection{Generating Keys} + +\begin{lstlisting}[language=bash] +gpg --full-generate-key +\end{lstlisting} + +\newpage + +% ================================ +% 3. ENCRYPTED EMAIL +% ================================ +\section{Sending Encrypted Email} + +\subsection{Why Encrypt Email?} + +Emails can be intercepted across networks. Encryption ensures privacy, integrity, and authenticity. + +\subsection{Tool Used: Mozilla Thunderbird} + +Thunderbird supports OpenPGP encryption for secure communication. + +\subsection{Steps to Send Encrypted Email} + +\begin{enumerate} + \item Install Thunderbird + \item Add email account + \item Import GPG keys + \item Enable encryption before sending +\end{enumerate} + +\newpage + +% ================================ +% 4. PRIVACY TOOLS +% ================================ +\section{Privacy Tools from Prism-Break.org} + +\subsection{1. Signal} + +\begin{itemize} + \item End-to-end encrypted messaging + \item Open source and secure +\end{itemize} + +\subsection{2. Tor Browser} + +\begin{itemize} + \item Anonymous browsing + \item Protects against tracking and surveillance +\end{itemize} + +\subsection{3. Tutanota} + +\begin{itemize} + \item Encrypted email service + \item Open-source clients +\end{itemize} + +\subsection{4. KeePassXC} + +\begin{itemize} + \item Password manager + \item Stores data locally in encrypted format +\end{itemize} + +\subsection{5. OnionShare} + +\begin{itemize} + \item Share files anonymously over Tor + \item No central server required +\end{itemize} + +\newpage + +% ================================ +% 5. OPEN SOURCE LICENSE +% ================================ +\section{Open Source License} + +\subsection{License Used: MIT License} + +The MIT License is a permissive open-source license that allows anyone to use, copy, modify, and distribute the software as long as the original license is included. + +\begin{lstlisting} +MIT License +Copyright (c) 2025 +Permission is hereby granted... +\end{lstlisting} + +\newpage + +% ================================ +% 6. SELF-HOSTED SERVER +% ================================ +\section{Self-Hosted Server: PairDrop} + +\subsection{What is PairDrop?} + +PairDrop is a peer-to-peer file sharing tool that allows devices on the same network to transfer files directly using WebRTC, without internet or user accounts. + +\subsection{Why I Selected PairDrop} + +\begin{itemize} + \item Lightweight and fast + \item No signup or cloud storage + \item Perfect for LAN file sharing +\end{itemize} + +\subsection{Installation on Ubuntu} + +\textbf{Step 1: Install Node.js and npm} +\begin{lstlisting}[language=bash] +sudo apt update +sudo apt install nodejs npm -y +\end{lstlisting} + +\textbf{Step 2: Clone Repository} +\begin{lstlisting}[language=bash] +git clone https://github.com/schlagmichdoch/PairDrop.git +cd PairDrop +\end{lstlisting} + +\textbf{Step 3: Install Dependencies} +\begin{lstlisting}[language=bash] +npm install +\end{lstlisting} + +\textbf{Step 4: Start Server} +\begin{lstlisting}[language=bash] +npm start +\end{lstlisting} + +\subsection{Accessing PairDrop} + +\begin{lstlisting} +http://localhost:3000 +http://:3000 +\end{lstlisting} + +\subsection{PairDrop Web Interface} + +\begin{figure}[h] + \centering + \includegraphics[width=0.95\linewidth]{pairdrop_web.png} + \caption{PairDrop Web Interface} +\end{figure} + +\subsection{Self-Hosted Demonstration at KL University} + +\begin{figure}[h] + \centering + \includegraphics[width=0.95\linewidth]{pairdrop_demo.jpg} + \caption{PairDrop Demonstration at KL University} +\end{figure} + +\subsection{Localization (Telugu Translation)} + +To make PairDrop accessible to Telugu users, I translated key documentation sections. + +\subsubsection{Translated Title} + +\textbf{PairDrop ఫైల్ షేరింగ్ డాక్యుమెంటేషన్} + +\subsubsection{Translated Terms} + +\begin{itemize} + \item Installation – ఇన్‌స్టాలేషన్ + \item Server – సర్వర్ + \item Network – నెట్‌వర్క్ + \item File Transfer – ఫైల్ ట్రాన్స్‌ఫర్ +\end{itemize} + +\subsection{Poster Overview} +GitHub + +GitHub - schlagmichdoch/PairDrop: PairDrop: Transfer Files Cross-Platform. No Setup, No Signup. + +PairDrop: Transfer Files Cross-Platform. No Setup, No Signup. - schlagmichdoch/PairDrop +A poster was designed to showcase: +\begin{itemize} + \item What is PairDrop + \item How it works + \item Key features + \item Benefits of self-hosting +\end{itemize} + +\newpage + +% ================================ +% 7. OPEN SOURCE CONTRIBUTIONS +% ================================ +\section{Open Source Contributions (PRs)} + +\subsection{Repositories Contributed} + +\begin{enumerate} + \item \textbf{fineanmol/hacktoberfest} – Added quick guide + \item \textbf{yfosp/start-here} – Added name and profile + \item \textbf{zero-to-mastery/start-here-guidelines} – Contributor update + \item \textbf{firstcontributions/first-contributions} – Added name +\end{enumerate} + +\subsection{Summary} + +\begin{itemize} + \item Total PRs: 4 + \item Merged: 4 + \item Open: 0 +\end{itemize} + +\newpage + +% ================================ +% 8. LINKEDIN POSTS +% ================================ +\section{LinkedIn Posts} + +\subsection{Post 1: First Open Source Contribution} +\url{https://www.linkedin.com/feed/update/urn:li:activity:7399151134055055360} + +\subsection{Post 2: Self-Hosting PairDrop} +\url{https://www.linkedin.com/in/mahi-korrapati-a24773369/} + +\subsection{Post 3: Open Source Journey} +\url{https://www.linkedin.com/feed/update/urn:li:activity:7399163090891587584} + +\newpage + +% ================================ +% 9. CONCLUSION +% ================================ +\section{Conclusion} + +This report helped me explore: +\begin{itemize} + \item Linux and command-line usage + \item GPG and secure communication + \item Privacy tools + \item Open-source licensing + \item Hosting a real application + \item GitHub collaboration +\end{itemize} + +It strengthened my understanding of open-source culture, security, and real-world deployment. + +\end{document} +Linkedin + +Just completed my first open-source contribution on GitHub! Really happy about this achievement. https://lnkd.in/dvz5ehvF | Mandava Nikhil + diff --git a/2400040162_M.NIKHIL/ose.pdf b/2400040162_M.NIKHIL/ose.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3b613c003f46b15b1818868ef56aaa404a66630f GIT binary patch literal 74002 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 literal 0 HcmV?d00001 diff --git a/selfhosted/nikhil.md b/selfhosted/nikhil.md new file mode 100644 index 0000000..d3087aa --- /dev/null +++ b/selfhosted/nikhil.md @@ -0,0 +1,64 @@ +స్వీయ-హోస్టెడ్ PairDrop సర్వర్ డాక్యుమెంటేషన్ + +పేరు: మండవ నిఖిల్ +కాలేజ్: KL యూనివర్సిటీ +ఆపరేటింగ్ సిస్టమ్: Ubuntu 22.04 LTS + +1️⃣ పరిచయం +ఈ పత్రం Ubuntu లో Self-Hosted PairDrop Server ను సెట్‌అప్ చేయడం మరియు నిర్వహించడం గురించి వివరంగా వివరిస్తుంది. +PairDrop అనేది Snapdrop నుండి ప్రేరణ పొందిన ఒక open-source, peer-to-peer ఫైల్ ట్రాన్స్ఫర్ టూల్. +ఇది cloud storage అవసరం లేకుండా — ఇంటర్నెట్ లేదా లోకల్ నెట్‌వర్క్ (LAN) ద్వారా పరికరాల మధ్య నేరుగా, వేగంగా, సురక్షితంగా ఫైళ్లను పంచుకునే సౌకర్యం ఇస్తుంది. +ఈ సెటప్ ఉద్దేశం ఏమిటంటే — ఫైల్ బదిలీలను స్వంత నియంత్రణలో, ప్రైవేట్ మరియు సురక్షిత వాతావరణంలో నిర్వహించడం. + +2️⃣ సిస్టమ్ అవసరాలు +PairDrop సర్వర్‌ని హోస్ట్ చేయడానికి ముందు మీ సిస్టమ్ ఈ క్రింది అవసరాలను తీర్చాలి: +- ఆపరేటింగ్ సిస్టమ్: Ubuntu 20.04 లేదా ఆపై (సిఫార్సు: Ubuntu 22.04 LTS) +- ప్రాసెసర్: Dual-core CPU లేదా అంతకంటే ఎక్కువ +- మెమరీ (RAM): కనీసం 2 GB +- స్టోరేజ్: కనీసం 10 GB ఖాళీ స్థలం +- నెట్‌వర్క్: స్థిరమైన ఇంటర్నెట్ కనెక్షన్ లేదా లోకల్ LAN +- సాఫ్ట్‌వేర్ డిపెండెన్సీలు: + - Node.js (v16 లేదా అంతకంటే పైగా) + - npm (Node Package Manager) + - Git + - PM2 (ప్రాసెస్ మేనేజ్‌మెంట్ కోసం) + +3️⃣ ఇన్‌స్టాలేషన్ మరియు సెటప్ +Ubuntu లో PairDrop ను హోస్ట్ చేయడానికి ఈ స్టెప్పులు అనుసరించండి: + +1. సిస్టమ్‌ను అప్డేట్ చేయండి: + sudo apt update && sudo apt upgrade -y +2. Node.js మరియు npm ఇన్‌స్టాల్ చేయండి: + sudo apt install nodejs npm -y +3. PairDrop రిపోజిటరీని క్లోన్ చేయండి: + git clone https://github.com/schlagmichdoch/PairDrop.git + cd PairDrop +4. డిపెండెన్సీలు ఇన్‌స్టాల్ చేయండి: + npm install +5. సర్వర్‌ను ప్రారంభించండి: + npm start +6. PairDrop ను యాక్సెస్ చేయండి: + బ్రౌజర్ ఓపెన్ చేసి, http://localhost:3000 లేదా మీ సర్వర్ యొక్క IP అడ్రెస్ కు వెళ్ళండి. + +4️⃣ సర్వర్ మేనేజ్‌మెంట్ మరియు కాన్ఫిగరేషన్ +సర్వర్ ఎప్పుడూ రన్ అవుతూ ఉండేలా చేయడానికి PM2 వంటి ప్రాసెస్ మేనేజర్ వాడటం ఉత్తమం. +PM2 ను గ్లోబల్‌గా ఇన్‌స్టాల్ చేయండి: + sudo npm install -g pm2 +PairDrop సర్వర్‌ను PM2 ద్వారా ప్రారంభించండి: + pm2 start npm --name pairdrop -- start +సిస్టమ్ రీబూట్ తర్వాత ఆటోమేటిక్‌గా రీస్టార్ట్ కావాలంటే: + pm2 startup + pm2 save +PairDrop ను HTTPS తో సెక్యూర్ చేయాలంటే, Nginx reverse proxy ఉపయోగించి సర్టిఫికేట్ సెట్ చేయవచ్చు. + +5️⃣ టెస్టింగ్, ట్రబుల్‌షూటింగ్ మరియు ముగింపు +సెటప్ తర్వాత, రెండు లేదా ఎక్కువ పరికరాల మధ్య ఫైళ్లను పంపి PairDrop సరిగా పనిచేస్తుందో పరీక్షించండి. +పరికరాలు ఒకదానిని ఒకటి గుర్తించకపోతే ఈ అంశాలను పరిశీలించండి: +- అన్ని పరికరాలు ఒకే నెట్‌వర్క్ లో ఉన్నాయా? +- ఫైర్‌వాల్ లేదా రౌటర్ WebRTC / WebSocket కనెక్షన్లను బ్లాక్ చేస్తున్నాయా? +- లాగ్స్ చూడటానికి ఈ కమాండ్ వాడండి: pm2 logs pairdrop + +🔚 ముగింపు +ఈ పత్రం Ubuntu లో PairDrop ను సొంతంగా హోస్ట్ చేయడానికి దశల వారీ మార్గదర్శకాన్ని అందిస్తుంది. +ఇది ద్వారా యూజర్లు తమ డేటాపై పూర్తి నియంత్రణ పొందుతారు మరియు ఫైల్ బదిలీ వేగం మరియు సెక్యూరిటీ మెరుగుపడతాయి. +ఈ సెటప్‌ను Mahi Venkat Pavan (KL University) ప్రాక్టికల్‌గా అమలు చేసి, peer-to-peer టెక్నాలజీని వాస్తవ ప్రపంచంలో ఎలా ఉపయోగించాలో ప్రదర్శించారు.