Skip to content

Latest commit

 

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diverk

nix

Get it on Google Play

Diverk is a simple app that allows you to browse a GitHub repository on your Android device. It renders markdown files and is thus mainly used to access personal notes or documentation written in this format.

It is available on Google Play and on the web.

It is able to access private repositories when given a valid access token. We recommend using fine-grained access tokens for this purpose.

Note that the app uses the GitHub API and is thus subject to rate limiting. Without a token, the rate limit is 60 requests per hour. It roughly corresponds to 60 pages per hour. It should be enough for quickly looking up something. But for more intensive use, we recommend using a token.

Using a token increases the rate limit to 5,000 requests per hour. More information about rate limits is available in the GitHub documentation. Additionally, to be able to search in a repository, a token is mandatory. This uses the search code feature of the GitHub API. For this specific feature, the rate limit is 10 searches per hour.

Building

The app is written in Haskell with Reflex and compiled to WebAssembly using the GHC WebAssembly backend. It is a fully client-side single-page app. There is no backend. The toolchain (wasm32-wasi-ghc, wasm32-wasi-cabal, node, ...) is provided by a Nix flake wrapping ghc-wasm-meta.

Dev workflow - native GHC for fast iteration

The default shell uses a native GHC toolchain with jsaddle-warp to run the app directly in the browser without a WebAssembly compile step. ghcid watches for source changes and reloads the server automatically.

$ nix develop .#native
$ just native-dev

This builds the CSS (Tailwind + FontAwesome) and starts a hot-reloading server at http://localhost:3000. Note that this doesn't work with Firefox, only Chrome.

Dev workflow - WebAssembly

To test the production code path (compiled to WebAssembly):

$ nix develop .#wasm
$ just wasm-run

This builds the CSS, compiles the frontend to WebAssembly, and starts a server at http://localhost:3000. To recompile only the Haskell and skip the CSS step: just wasm-dev.

Nix build

$ nix build

Produces an optimised, self-contained web app in result/. From the .#wasm shell, serve it with:

$ node serve.mjs result

Android

Set up mobile/android/keystore.properties (see mobile/android/keystore.properties.example) for release signing, then:

$ nix develop .#wasm
$ just android-debug    # debug APK, auto-signed, installable via adb
$ just android-release  # release APK, requires keystore.properties

just android-debug outputs to mobile/android/build/android/app/outputs/apk/debug/app-debug.apk. Install with adb install -r <path>.

To build a release AAB for the Play Store:

$ nix build .#android-release-aab

About

An Android app to browse GitHub repositories

Topics

Resources

Stars

15 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages