Skip to content

glassbeadsoftware/snapmail

Repository files navigation

snapmail

SnapMail is an open-source P2P messaging app based on Holochain.
It is the latest iteration of Snapmail from Glass Bead Software.

sshot

This is the repository for the different native applications See snapmail-rsm for holochain backend source code.

Installation

Prerequisite

  • Linux: libssl package must be installed on your system (and possibly libssl-dev)

Steps

  1. Go to the release page
  2. Download the latest release file for your platform.
  3. Execute the downloaded installer.
  4. Launch the Snapmail executable.
  5. You will be prompted to select a network access key. This is required for discovering other peers on the network. You will only communicate with peers using the same network access key.
  6. You will be prompted to Set a username.
  7. Other users on the same network will appear in the bottom right list box.

Troubleshoot

Linux
  • Make sure the following executables have execution rights: Snapmail, snapmail-lair-keystore, snapmail-holochain.

Releasing

Steps required for updating version number:

  1. Set version number in top-level package.json
  2. npm run update-version

Steps for preparing a new release for all platforms on github:

  1. Tag a new release in the release page.
  2. Wait for CI to complete its workflow.

Steps for publishing the new release on Windows:

  1. npm run deploy-win

Steps for publishing the new release on Mac:

  1. npm run deploy-mac

Development

Steps for updating holochain version:

  1. Check snapmail-rsm repo has a branch for the new holochain version.
  2. Update hc-version field in the top-level package.json.
  3. Update the holochain-related dependencies in child package.json: 4. webcomponents: lit-happ & holochain-client-js 5. webapp: lit-happ & holochain-client-js 6. we-applet: holochain-client-js 6. electron: @lightningrodlabs/electron-holochain
  4. Check npm run install:zits: Make sure zits is compatible for the version of holochain & holochain-client-js.
  5. git commit

Toolchain

cargo, npm, rollup, typescript, eslint, electron-builder

Project structure

Directory Description
/assets/ Original media files used throughout the code base
/electron/ The electron app directory
    src/ The electron app source code
    web/ Final artifacts for the electron app (includes output from webapp)
    bin/ All the binaries we are dependent on and must ship with the app
/scripts/ Various shell scripts for building, testing, releasing
/submodules/ Temp folder for code dependencies
/we-applet/ We-applet source code
    webhapp.workdir/ "we-applet" webhapp work directory
/webapp/ Webapp source code. Used by electron app
    webhapp.workdir/ "Normal" webhapp work directory
/webcomponents/ Source code of the web components to be used by the webapps