<?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>DEV Community: Kai Chen</title>
    <description>The latest articles on DEV Community by Kai Chen (@kxchen).</description>
    <link>https://dev.to/kxchen</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%2F380392%2Fb1fad155-0c35-4128-864b-9887554210d0.png</url>
      <title>DEV Community: Kai Chen</title>
      <link>https://dev.to/kxchen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kxchen"/>
    <language>en</language>
    <item>
      <title>Read Reddit without an internet connection</title>
      <dc:creator>Kai Chen</dc:creator>
      <pubDate>Tue, 26 May 2020 05:37:41 +0000</pubDate>
      <link>https://dev.to/kxchen/graduation-project-2f2c</link>
      <guid>https://dev.to/kxchen/graduation-project-2f2c</guid>
      <description>&lt;h2&gt;
  
  
  My Final Project
&lt;/h2&gt;

&lt;p&gt;I built a desktop app for reading Reddit without an internet connection.&lt;/p&gt;

&lt;p&gt;Pre-download subreddits to read offline, including posts and their comments.&lt;/p&gt;

&lt;p&gt;I built it with &lt;a href="https://sidhyatikku.com"&gt;Sidhya Tikku&lt;/a&gt; who did the design, with the code being written by me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MpShdfPL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zp3w7c1tknjzre3hqqzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MpShdfPL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zp3w7c1tknjzre3hqqzf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bci7ww_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/est3hcr3gyjxyn37bkvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bci7ww_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/est3hcr3gyjxyn37bkvh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kx-chen"&gt;
        kx-chen
      &lt;/a&gt; / &lt;a href="https://github.com/kx-chen/Backpack"&gt;
        Backpack
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Backpack Reader - Read Reddit without an internet connection.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Backpack Reader&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://travis-ci.com/kx-chen/reddit-offline-desktop" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/660711f1646899b79782f0970bfabc823209093c/68747470733a2f2f7472617669732d63692e636f6d2f6b782d6368656e2f4261636b7061636b2e7376673f746f6b656e3d7368556475504b634c585152507035685a696871266272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Backpack Reader is a desktop app for downloading and reading Reddit while offline.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/main.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nKACifZg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/main.png%3Fraw%3Dtrue" alt="Dashboard view" title="Dashboard view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/sidebar.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mgFS_JWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/sidebar.png%3Fraw%3Dtrue" alt="Sidebar shrunk" title="Shrunk sidebar"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/search.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IasJiv3D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/search.png%3Fraw%3Dtrue" alt="Search for subreddit" title="Search for subreddit"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/post.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_HDvMFPo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/kx-chen/Backpack/master/resources/post.png%3Fraw%3Dtrue" alt="Post detail" title="Post detail"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Install&lt;/h2&gt;
&lt;p&gt;First, clone the repo via git.
And then install the dependencies with yarn.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ &lt;span class="pl-c1"&gt;cd&lt;/span&gt; Backpack
$ yarn&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Starting Development&lt;/h2&gt;
&lt;p&gt;Start the app in the &lt;code&gt;dev&lt;/code&gt; environment.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn dev&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Packaging for Production&lt;/h2&gt;
&lt;p&gt;To package apps for the local platform:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ yarn package&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
Running Tests&lt;/h3&gt;
&lt;p&gt;This project uses Jest as the test runner.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ yarn test&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
End to End Tests&lt;/h3&gt;
&lt;p&gt;Coming soon.&lt;/p&gt;
&lt;h2&gt;
Code Structure/Tech Stack&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;app/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Main JavaScript code for Backpack Reader. Components are built with React.&lt;/p&gt;
&lt;p&gt;Tech Stack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;Jest&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Contributions&lt;/h2&gt;
&lt;p&gt;All contributions, pull requests, and feedback welcome! Roasts of all kinds welcome&lt;/p&gt;
&lt;h2&gt;
Future Plans&lt;/h2&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 End to End tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Authors and Acknowledgement&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://sidhyatikku.com" rel="nofollow"&gt;Sidhya Tikku&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;Design work&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://kaixingchen.com" rel="nofollow"&gt;Kai Chen&lt;/a&gt;&lt;/strong&gt; - &lt;em&gt;Programming work&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See also the list of &lt;a href="https://github.com/kx-chen/Backpack/contributors"&gt;contributors&lt;/a&gt; who participated in this project.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kx-chen/Backpack"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;p&gt;Built with Electron, React, and Redux. Got more familiar with JavaScript, React, and Yarn along the way. &lt;/p&gt;

&lt;p&gt;It was interesting and fun to look at Reddit on one screen and try to recreate its CSS by eyeball on the other.&lt;/p&gt;

&lt;p&gt;Not too many fancy libraries were used, most of the code (like the navbar/sidebar) were created from scratch. Mostly using &lt;code&gt;node-fetch&lt;/code&gt; for API requests, and &lt;code&gt;node-fs-extra&lt;/code&gt; for managing files locally.&lt;/p&gt;

&lt;p&gt;One of the challenges that we faced was collaborating. I live in Canada and Sidhya lives in India, so we had to schedule our Zoom calls at late in the night.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Thoughts / Feelings / Stories
&lt;/h2&gt;

&lt;p&gt;If you think this is a cool idea, it would mean the world to us if you gave a star on GitHub!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kx-chen/Backpack"&gt;https://github.com/kx-chen/Backpack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>octograd2020</category>
      <category>devgrad2020</category>
    </item>
  </channel>
</rss>
