<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Teleport</title>
    <description>The latest articles on Forem by Teleport (@telepor22239085).</description>
    <link>https://forem.com/telepor22239085</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F557570%2F0c4fb230-f618-4757-8578-f83adbd902ce.jpg</url>
      <title>Forem: Teleport</title>
      <link>https://forem.com/telepor22239085</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/telepor22239085"/>
    <language>en</language>
    <item>
      <title>Plans for Teleport  #Part-5</title>
      <dc:creator>Teleport</dc:creator>
      <pubDate>Mon, 11 Jan 2021 07:38:02 +0000</pubDate>
      <link>https://forem.com/telepor22239085/plans-for-teleport-194k</link>
      <guid>https://forem.com/telepor22239085/plans-for-teleport-194k</guid>
      <description>&lt;p&gt;P2P is nice, it's free right?&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/499087346" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;From the video, P2P starts off being connected to a central broker server which helps negotiate network details to connect. Once the network details have arrived, each peer establishes a P2P pipe to the other peer and cuts its dependency with the broker server. It's like the 'chicken and the egg' problem - You have to be connected with a server to get a serverless connection XD.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ricIKjz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://obesitycanada.ca/wp-content/uploads/2019/05/Screen-Shot-2019-04-26-at-1.27.54-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ricIKjz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://obesitycanada.ca/wp-content/uploads/2019/05/Screen-Shot-2019-04-26-at-1.27.54-PM.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we need a highly available WebSocket server to be hosted in the cloud and this does not come for free. For now, Teleport's WebSocket server is hosted in a single click through Digital ocean's app platform with the free credits provided from DO.  P2P works most of the time, but let's say in 20% of the cases direct if the users live under a complex network setup or symmetric NATs, direct P2P might fail. As a backup, we need a turn server, think of it as a central router that helps in delivering the files if P2P fails, which does not store the files, just routes it to the receiver. This is not free again as turn servers come at a cost. Most of the open-source projects above don't have a turn service for the same reason, leaving a section of users unattended.&lt;/p&gt;

&lt;p&gt;Regardless of winning the hack or not, Teleport will be &lt;strong&gt;free to use forever&lt;/strong&gt; in terms of &lt;strong&gt;unlimited&lt;/strong&gt; file transfer, clipboard share and CLI(excluding premium features that would need funds). Since real money is involved, we have no plans as of now to run Teleport opensource. There are multiple reasons for this. Before Teleport, we used tools like Snapdrop or Sharedrop. We often just love the problem it solves and wants to use it but don't have time to look into the code and contribute. Most of the issues in Snapdrop can be summed up as it works in X device but not in the Y device and it works in this X browser and not in Y browser, in this platform and so on. &lt;/p&gt;

&lt;p&gt;Implementing a new feature or even a UI design change always breaks something somewhere because of webRTC in some other browser and API's we use don't have the same behavior/support in all platforms. This problem is directly connected to having a comprehensive automated selenium test suite in BrowserStack and obviously. BrowserStack doesn't come for free as well it's around 26$/month. Not only that, the dev time for unpaid work, it is also pretty huge as it took 6 months to get a POC pr to be raised for a really important issue posted 7 months ago. This is perfectly explained by &lt;strong&gt;Havoc Pennington&lt;/strong&gt; in his article &lt;a href="https://blog.tidelift.com/open-source-has-a-working-for-free-problem"&gt;Open source has a working-for-free problem&lt;/a&gt;, where we particularly endorse the quote. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sEFvbWMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqmbs2chk/image/upload/v1610339749/hi_vdq2qs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sEFvbWMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dqmbs2chk/image/upload/v1610339749/hi_vdq2qs.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We as developers will put our blood and sweat into building more features for Teleport for our users in record time and provide a reliable and quality service for individuals and organizations. We have great plans for Teleport in solving many problems in many areas not only as a personal file transfer tool but the mission is also to easily move files from point A to point B by ensuring security and privacy at both ends. This could be solving a particular problem in a video production company, working remote and sending videos instantly to peers for reviews, etc. We have discovered potential is from India where the education system still requires a photocopies for every single assignment, project or document from schools to colleges. Teleport can eliminate the usage of USB's in these shops which inturn prevents malicious files/virus being injected to the printer machine. This also introduces the convenience where users can pay online and schedule their photocopies or just scan a QR code in the shop to drop the files directly P2P via Teleport to the printer machine. We have also want to customize the Teleport to provide them some unique features including one were once they click the leave room button, the file is automatically erased from the Desktop which performed the photocopy to ensure there is no misuse of the documents.&lt;/p&gt;

&lt;p&gt;There are a lot of places like these where Teleport can change traditional ways of transferring files. But we want this to be a tool that is accessible to a wider range of audience, like where we were using free open source tools. We will be moving/developing exclusive or existing premium features like remembering portal links, private portals, persistent push notification convenience(even if users close the app, they could join a portal in a single click from their notification bar) and more in the near future to reward the users who pay for us through the business plan. We aim at running it at a very reasonable and affordable price, enough to help us run Teleport with a smile on our face. &lt;/p&gt;

&lt;p&gt;Our vision for Teleport is that 'Teleport me the files' gets added to people's vocab and becomes the new norm with constant help/support from the community. That's all folks!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Teleport's alpha version is up at [teleportme.in][&lt;a href="https://teleportme.in"&gt;https://teleportme.in&lt;/a&gt;], we have been very transparent with everything we did and we hope people try it and give us feedback/suggestions to improve. Thank you!&lt;/p&gt;

</description>
      <category>dohackathon</category>
    </item>
    <item>
      <title>Technical Breakdown ⚒️ #Part-4
</title>
      <dc:creator>Teleport</dc:creator>
      <pubDate>Mon, 11 Jan 2021 07:35:25 +0000</pubDate>
      <link>https://forem.com/telepor22239085/technical-breakdown-6p0</link>
      <guid>https://forem.com/telepor22239085/technical-breakdown-6p0</guid>
      <description>&lt;p&gt;We have gone through all the flaws in the existing solutions and innovated the following features to help address them. This article provides a deep breakdown of all the features. &lt;/p&gt;

&lt;h3&gt;
  
  
  🎯Dynamically switches between topologies
&lt;/h3&gt;

&lt;p&gt;Teleport can dynamically switch its topology which makes it first of its kind. Why is this switch necessary? How does it make it better? Before answering these let's know the pros and cons of existing individual topology.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File streamed directly from sender&lt;/th&gt;
&lt;th&gt;File shared using Web torrent API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;All the receivers request files from only the sender and data is streamed via Webrtc.&lt;/td&gt;
&lt;td&gt;It allows a torrent like a download in the browser where every peer helps each other to download files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero wait time. Since there is no pre-processing, file transfer begins the moment the connection establishes.&lt;/td&gt;
&lt;td&gt;Scale as receiver list increases. For every new peer added it can receive files from n-1 other receivers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No file limit, since file is streamed(broken into chunks, only that is loaded in main memory and sent). Perfect if users want to send medium / large files (files greater than 100MB) from their phones to PC. The receiver count is only 1, why use a torrent network and pay for the CPU processing + waiting time when all you want is to send a file to one or two peers.&lt;/td&gt;
&lt;td&gt;Download rate increases with rising in peers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does not scale as the receiver list increases. At one point there is a throttle on the sender side as it has to cater to too many requests and fails. Won't work for a large no of users.&lt;/td&gt;
&lt;td&gt;Considerable waiting time according to the CPU, mobile phones suffer a lot with webTorrent than a PC. Before a torrent can come into action, there is a pre-processing step known as &lt;strong&gt;&lt;em&gt;torrent creation time.&lt;/em&gt;&lt;/strong&gt; This varies based on file size and processing power. For an estimate, it takes more than around 2mins to create a torrent for a 500Mb file on OnePlus 7T which has a considerably good CPU for a mobile phone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The download rate reduces since only the sender shares the files with receivers.&lt;/td&gt;
&lt;td&gt;It has a limit on file size. For the seeding process, the file should be loaded into main memory,   since it is a web-app that runs in a browser. So for any file more than 700MB when tried to send a file in a phone browser, browser crashes occur due to out of memory reasons. Even low-end PC's which have a pretty bad CPU suffers a lot of waiting time, not to mention sending a file greater than 2GB in pc is not possible with web torrent as the entire file has to be loaded into your ram.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;strong&gt;hybrid approach&lt;/strong&gt; towards this is what makes Teleport scalable and gets the best of both worlds. Initially, when file-sharing is initiated, the files are shared from sender to receivers through streaming mode(zero wait time) while torrent-creation is parallelly operated in a worker thread. If the peer count increases let's say more than 2 users and the worker thread has completed the torrent-creation, Teleport shifts to the torrent network where peers help each other. Existing peers who have downloaded files partially using streaming mode download what's left using the torrent protocol( this feature of memoizing chunk stores is something we added to web torrent's internals). Also, these peers seed their data, thereby helping newly joined peers download from existing peers and new peers to come. Thus we solve the initial waiting time faced in the torrent network by streaming the file from the master node and the receivers gracefully switch to web torrent at the right time through a hot memoization swap. We have our own forked modified version of webTorrent to achieve this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is this performant?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Assume 3 users are trying to download a 400MB file through their mobile devices, in a typical webTorrent scenario it takes 1.30 to 2mins waiting time and maybe another 1.30min to download from each other. With teleport, users receive 40% percent of the file in streaming mode instantly before the torrent creation time ends (1.30min). So now we download only the rest of the pieces in the webTorrent by swapping the new Store initialization with our existing partially downloaded store. Because of this web torrent doesn't start with 0% from scratch rather verifies the existing store with the hashes and moves on to download only the rest of the pieces which gets downloaded in 40 seconds. We save 50 seconds of transfer through this.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯Smart Environment Sensing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The torrent switch happens only if the room has more than 2 peers, otherwise, it works in streaming mode peacefully perfect for the phone to pc scenario mentioned above&lt;/li&gt;
&lt;li&gt;If the file size is greater than 2GB, and a portal is created in the browser. We never initiate or use the torrent network rather just use the streaming mode. Take advantage of the hybrid topology for files greater than 2GB, by using teleport's CLI as we don't have any limitations of the browser there.&lt;/li&gt;
&lt;li&gt;If a specific portal has switched to torrent mode, and let's assume the file size is greater than 700MB and a new phone joins, teleport knows that the phone won't be able to participate in seeding the file cause of main memory limitations. The phone now becomes a &lt;strong&gt;&lt;em&gt;leecher&lt;/em&gt;&lt;/strong&gt; and downloads the file directly to disk.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;leecher - a peer who downloads from everyone but will not contribute back by uploading. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🎯Secure Private Portal Transfer with Authorization
&lt;/h3&gt;

&lt;p&gt;In public mode, the portal is exposed to all peers in the local network. Anyone can join the portal. Whereas in the private mode, we provide the user with a personalized profile of settings and some extra features. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly, the room name is updated to prevent earlier users from entering the portal.&lt;/li&gt;
&lt;li&gt;Secondly, peers entering the portal get authorized via Google and since we enable the receiver prompt by default only desired people can enter the room.&lt;/li&gt;
&lt;li&gt;Finally,  these portals are not discoverable in the local network, meaning it provides anonymity to the sender.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Teleport - DO Hackathon submission #Part-1</title>
      <dc:creator>Teleport</dc:creator>
      <pubDate>Mon, 11 Jan 2021 07:29:39 +0000</pubDate>
      <link>https://forem.com/telepor22239085/teleport-do-hackathon-submission-3jib</link>
      <guid>https://forem.com/telepor22239085/teleport-do-hackathon-submission-3jib</guid>
      <description>&lt;h2&gt;
  
  
  💡 &lt;strong&gt;What I built&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A fully decentralized cross-platform P2P file sharing tool with unlimited capacity. Send files/clipboard across and between CLIs and browsers. Between? Yep start a file transfer in the CLI and receive it in your phone's browser! The CLI and the browser are just a frontend to teleport's core and they can connect between themselves or between each other. Teleport is a productivity tool built for users with security, privacy, and convenience in mind.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Category Submission:&lt;/strong&gt; &lt;em&gt;Built for business&lt;/em&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  📹 &lt;strong&gt;App Link&lt;/strong&gt; : &lt;a href="https://teleportme.in"&gt;teleportme.in&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  🎬 &lt;strong&gt;Video demo&lt;/strong&gt; : &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nZuJ5u-zo-Q"&gt;
&lt;/iframe&gt;

&lt;/h3&gt;

&lt;h3&gt;
  
  
  📸 &lt;strong&gt;Screenshots&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UfydF-Sv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5if6w7x37oui4t0uwpwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfydF-Sv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5if6w7x37oui4t0uwpwj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rioWN6xA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mcv5pjbcu62uwdd5pzu1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rioWN6xA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mcv5pjbcu62uwdd5pzu1.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ApCN1kpa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zzpild4if1q765an2bcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ApCN1kpa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zzpild4if1q765an2bcz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vv0Ti08K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/63jiac2so98kc5zh3rmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vv0Ti08K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/63jiac2so98kc5zh3rmu.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mp67t1VU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/599movruf3wasyq2aaxd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mp67t1VU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/599movruf3wasyq2aaxd.jpeg" alt="Alt Text"&gt;&lt;/a&gt;                                         &lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 &lt;strong&gt;Description&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Why build Teleport?
&lt;/h4&gt;

&lt;p&gt;Everyone loves Apple's Airdrop, a tech that allows users to drag files onto devices in your local network/wifi. The problem with Airdrop is that it is only available for the Apple ecosystem. We envisioned a tool that could be as cool and convenient as Airdrop but had no boundaries like your device or platform. You could just transfer a file from your Mac to Windows, Windows to Mac, Mac to Android, and so on, making it truly cross-platform. What if this file-sharing mechanism worked beyond your wifi? Airdrop does it with Bluetooth and under your wifi, so we wanted to achieve something like that on the world wide web using WebRTC for remote peers. We started working on this P2P file sharing client that is going to make everyone's lives easier.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Here is the list of features that sets us apart from other traditional file-sharing tools :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamically Switching Topologies&lt;/li&gt;
&lt;li&gt;Local Network Detection&lt;/li&gt;
&lt;li&gt;Unlimited Files Capacity&lt;/li&gt;
&lt;li&gt;Unlimited peers - When peers grow teleport goes into the torrent mode&lt;/li&gt;
&lt;li&gt;Secure Private Portals&lt;/li&gt;
&lt;li&gt;Automatic Recommendation of Previous Portals&lt;/li&gt;
&lt;li&gt;Real-time CLI Support&lt;/li&gt;
&lt;li&gt;Clipboard and Text Content Sharing&lt;/li&gt;
&lt;li&gt;PWA Support&lt;/li&gt;
&lt;li&gt;Smart Environment Sensing&lt;/li&gt;
&lt;li&gt;Highly Customizable&lt;/li&gt;
&lt;li&gt;Cross-platform Support&lt;/li&gt;
&lt;li&gt;Optimized for Instant Rapid File Transfer&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📜 &lt;strong&gt;Link to Source Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Teleport-js/Frontend-Teleport/tree/dev"&gt;Source Code&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 &lt;strong&gt;Permissive License&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Common Clause&lt;/p&gt;

&lt;h3&gt;
  
  
  🛤 &lt;strong&gt;Background&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We have been working with WebRTC and file-sharing algorithms for more than a year. After experimenting on some small projects we decided to implement a P2P video streaming application in VR for &lt;a href="https://devpost.com/software/virtual-galaxy-gf4dxi"&gt;Facebook’s Developer Circle Community Challenge in 2019&lt;/a&gt;. We were elated to win first place in India(regionals)🎉. This gave us the impetus to continue updating ourselves with all there is to know in the field.&lt;/p&gt;

&lt;p&gt;Being undergraduates who constantly competed at hackathons or were involved in pair programming for projects related to our course, we often found it inconvenient to transfer files or simple code snippets. Moreover, things like links and clipboard content also required the use of apps like WhatsApp or Slack because google meet &amp;amp; zoom truncates text and formats code (removes linebreaks, etc) weirdly when sent through them. We wanted to build a tool that would help us achieve all this without having to leave the development environment from our VS Code's integrated terminal.&lt;/p&gt;

&lt;p&gt;So we moved ahead to create &lt;a href="https://github.com/KuroLabs/airshare"&gt;&lt;em&gt;Airshare&lt;/em&gt;&lt;/a&gt; an open-source python CLI based file client limited to the local network. It was released in PIP as a module that has over 15K downloads and is now available for use @ homebrew. &lt;/p&gt;

&lt;p&gt;Although we got a good response from the community, there is always room for improvement. This inspired us to build a new file-sharing tool. Like any other project, we dedicated ourselves to explore all the currently existing solutions in the field and created Teleport consequently.&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 &lt;strong&gt;How we built it&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Digital Ocean App Platform made it very easy and reliable to host our website and server in one place retaining complete control over our sites underlying infrastructure. All this was done within a few clicks and made our life simpler. &lt;br&gt;
Also, it was fascinating to see that it could automatically update our project when we push changes to our code which would help us concentrate more on upgrading and building on teleport without worrying about the deployment and scaling.&lt;/p&gt;

&lt;p&gt;Thanks to Digital Ocean for making our work easier and as a developer, I would love to continue using Digital Ocean in my future projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧾 &lt;strong&gt;Additional Resources/Info&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;🎥 &lt;a href="https://youtu.be/nZuJ5u-zo-Q"&gt;Demo&lt;/a&gt;&lt;br&gt;
🎬 &lt;a href="https://vimeo.com/499063906"&gt;Walkthrough&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://teleportme.in/"&gt;Website&lt;/a&gt; &lt;/p&gt;

</description>
      <category>dohackathon</category>
      <category>react</category>
      <category>node</category>
      <category>webrtc</category>
    </item>
    <item>
      <title>Features of Teleport #Part-3</title>
      <dc:creator>Teleport</dc:creator>
      <pubDate>Mon, 11 Jan 2021 07:25:41 +0000</pubDate>
      <link>https://forem.com/telepor22239085/teleport-34n0</link>
      <guid>https://forem.com/telepor22239085/teleport-34n0</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Teleport&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Teleport has a variety of features that make it the next best tool for file transfer.&lt;/p&gt;

&lt;h4&gt;
  
  
  🎬 Walkthrough of teleport and its features:
&lt;/h4&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/499063906" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Dynamically Switching Topologies
&lt;/h4&gt;

&lt;p&gt;Unlike traditional file sharing clients which have a fixed topology that either works on a streaming mode like sharedrop/snapdrop or uses webTorrent's API like blaze, Teleport can switch its nature dynamically which makes it first of its kind. We built a hybrid module that can dynamically switch between topologies to provide the best possible file transfer mechanism. This helps solve two major problems in the existing solutions - &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Traditional bandwidth issues when more peers join&lt;/li&gt;
&lt;li&gt;Zero wait time
&lt;iframe src="https://player.vimeo.com/video/499057282" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  CLI to Browser Synergy 🖥️ ❤️ 🌐
&lt;/h4&gt;

&lt;p&gt;This is one of the primary features that allows us to transfer files across CLIs and browsers seamlessly thus making the tool truly accessible to regular users and developers alike. We built a npm module &lt;a href="https://www.npmjs.com/package/@teleport-js/teleport"&gt;teleport&lt;/a&gt; which can be installed as a CLI tool. Now developers can send files from CLI to any browser and receive both file and clipboard content from browsers without exiting their development environment.&lt;br&gt;
&lt;iframe src="https://player.vimeo.com/video/499057846" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  CLI Usage 🖥️
&lt;/h4&gt;

&lt;p&gt;You can send and receive files and text/clipboard content using Teleport's npm module. Once you start Teleport in the CLI, it listens to portals created local rooms and dynamically refreshes on its own. This prevents users from closing and opening the tool again to see the changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Local Network Detection 🖧
&lt;/h4&gt;

&lt;p&gt;Teleport was built to provide productivity and convenience to every user and this feature helps deliver this to them. When a portal is created, other users in the local network are notified of the existing portal. This helps users directly connect to the portal without having to share their portal codes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Automatic Recommendation of Previous Portals 📝
&lt;/h4&gt;

&lt;p&gt;Once you join a peer's portal, their user name and portal code is saved to a suggestions list. During future interactions to connect with the same peer's portal, the name of the user can be used to recommend the previous peer's portal code.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RcsLt-pX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e0l5is40fxznh78tw4jn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RcsLt-pX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e0l5is40fxznh78tw4jn.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Secure Private Portals🕵🤫
&lt;/h4&gt;

&lt;p&gt;Sharing confidential files is possible using private portals which enables the sender to validate the authenticated receivers before entering the portal. Furthermore, private portals are invisible to other peers in the local network. &lt;/p&gt;
&lt;h4&gt;
  
  
  Clipboard and Text Content Sharing 📋
&lt;/h4&gt;

&lt;p&gt;Apart from files, &lt;em&gt;Teleport&lt;/em&gt; can also be used to transfer text and clipboard content. We also provide &lt;em&gt;auto clipboard copy&lt;/em&gt; feature which copies the clipboard content directly to the receivers, ensuring that a prompt doesn't hinder your productivity.&lt;br&gt;
&lt;iframe src="https://player.vimeo.com/video/499058581" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  PWA Support 📱
&lt;/h4&gt;

&lt;p&gt;Teleport is also available as PWA to emulate a native app environment for mobile users. Here is a list of the features available in PWA,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrated &lt;a href="https://github.com/richtr/NoSleep.js/"&gt;WakeLock API&lt;/a&gt; to prevents device screens from dimming or locking during file share to get a stable transfer speed.&lt;/li&gt;
&lt;li&gt;Added &lt;a href="https://web.dev/web-share-target/"&gt;Web Share Target&lt;/a&gt; to share any file directly from the gallery(or any native apps) via Teleport without actually opening the app.&lt;/li&gt;
&lt;li&gt;Implemented &lt;em&gt;push notifications&lt;/em&gt; that notify the user of certain events while the app runs in the background.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GPhrtTw5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j3r9eulaalnm767czspz.jpg" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9dKbVQMb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qc6bi528i942up172uqy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9dKbVQMb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qc6bi528i942up172uqy.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Highly Customizable ⚙️
&lt;/h4&gt;

&lt;p&gt;Our main goal is to boost productivity and provide convenience to our users. Hence we have provided a wide variety of options as shown in the diagram below.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VfWfg6HE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/du6tx7f5yj1gsqppio8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VfWfg6HE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/du6tx7f5yj1gsqppio8y.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Smart Environment Sensing 💡
&lt;/h4&gt;

&lt;p&gt;Sending files from one device to another always has many complications. We have successfully created our module to intelligently detect the environment and optimize the file transfer mechanism. All this is abstracted from the user to facilitate a rapid file transfer.&lt;/p&gt;

&lt;h6&gt;
  
  
  For more insights on Teleport and technical breakdown of various features and different use cases, read our follow up post, &lt;a href="https://dev.to/telepor22239085/technical-breakdown-6p0"&gt;&lt;em&gt;' Technical Breakdown ⚒️'&lt;/em&gt;&lt;/a&gt;.
&lt;/h6&gt;

</description>
    </item>
    <item>
      <title>Exploring Existing Solutions🔍 #Part-2
</title>
      <dc:creator>Teleport</dc:creator>
      <pubDate>Mon, 11 Jan 2021 07:24:06 +0000</pubDate>
      <link>https://forem.com/telepor22239085/exploring-existing-solutions-18k3</link>
      <guid>https://forem.com/telepor22239085/exploring-existing-solutions-18k3</guid>
      <description>&lt;p&gt;Several existing tools provide file-sharing capabilities:&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;WeTransfer&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What it does?
&lt;/h2&gt;

&lt;p&gt;To move a file from point A to point B, organizations that use 'WeTransfer' wait to upload their files to weTransfer(third party). This is then transferred to the clients by weTransfer through email. The receivers get an email to download the file from weTransfer's server&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problems&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files are stored in WeTransfer servers which is a huge privacy concern for organizations.&lt;/li&gt;
&lt;li&gt;Restricted file size for free and pro users.&lt;/li&gt;
&lt;li&gt;Does not support instant file transfer, needs to be uploaded to the cloud before anyone can receive the files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://about.wetransfer.com/"&gt;weTransfer&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Persistence is not required in most use cases because most of the clients download the resources almost instantly or within that specific working day. Thus P2P makes more sense in this scenario as there is no need to upload. It's an instant share and the file is never sent to any third-party server. Thus making it efficient and inexpensive.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Opensource solutions&lt;/strong&gt; are really amazing; people have taken the time to build innovative projects. The problems with the existing solutions are already listed in the GitHub issues of each project. For instance, snapdrop doesn't work for remote peers and works only on LAN. If the user is planning to upload a file in a conference and send it to 50 - 60 users, the user has to individually click on every peer and send it which is not convenient. Moreover, files cannot preexist before the peers join and users can't send files to multiple devices at once. &lt;/p&gt;

&lt;p&gt;Most importantly snapdrop and sharedrop use &lt;strong&gt;(1-N)&lt;/strong&gt; streaming protocol as illustrated below:&lt;br&gt;
&lt;iframe src="https://player.vimeo.com/video/499095158" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The master who initiates the transfer performs the transfer to all clients. This becomes highly inefficient when the peer size and file size grow because one peer gets overloaded with requests and bandwidth gets significantly narrow. To counter this scenario, blaze used webTorrent's API which makes sure everyone who receives the file helps each other to download the file like a torrent (&lt;strong&gt;N-N&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/499094833" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Unfortunately in webtorrent, files are loaded in the memory which prevents the upload of files greater than 600Mb in a phone and a hard limit of 2GB for computers. This setback is attributed to the fact that the file has to exist in the ram. Choosing one topology over the other has its own merits and demerits. Choosing the streaming mode makes sure an unlimited file size and high performance when using mobile devices. Using webtorrent below 600Mb is advisable because the transfer speed is insane when multiple peers join the system which becomes performant and efficient but has a hard limit and torrent creation wait time. To put it in a single sentence, &lt;strong&gt;webTorrent is not mobile-friendly&lt;/strong&gt; as it imposes a significant load on the CPU and depends on the main memory.&lt;/p&gt;

&lt;p&gt;So seeing the existing problems we thought, what if we can combine both topologies, use the right topology at the right time, graciously switch progress between both topologies and use them efficiently?&lt;/p&gt;

&lt;p&gt;What if we can provide complete synergy between CLI and the browser?&lt;/p&gt;

&lt;p&gt;As developers ourselves, we spend most of our time using CLIs and having the ability to transfer files from your CLI(like &lt;em&gt;Airshare&lt;/em&gt;) to any other platform on any device would help boost productivity and provide convenience.&lt;/p&gt;

&lt;p&gt;Now we know what exists, let's see in the next part what teleport 👽 has!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
