All Projects → syphon-org → Syphon

syphon-org / Syphon

Licence: agpl-3.0
⚗️ a privacy centric matrix client

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to Syphon

Onionr
Private Decentralized Communication Network 🎭 🧅
Stars: ✭ 84 (-65.71%)
Mutual labels:  privacy, encryption
Tessera
Tessera - Enterprise Implementation of Quorum's transaction manager
Stars: ✭ 135 (-44.9%)
Mutual labels:  privacy, encryption
0fc
Anonymous web chat server, built on top of Themis/WebThemis
Stars: ✭ 98 (-60%)
Mutual labels:  privacy, encryption
Drops
opmsg p2p transport network
Stars: ✭ 58 (-76.33%)
Mutual labels:  privacy, encryption
Shhh
Share sensitive info without leaving a trace in your chat logs or email accounts.
Stars: ✭ 159 (-35.1%)
Mutual labels:  privacy, encryption
Zbox
Zero-details, privacy-focused in-app file system.
Stars: ✭ 1,185 (+383.67%)
Mutual labels:  privacy, encryption
Databunker
Secure storage for personal records built to comply with GDPR
Stars: ✭ 122 (-50.2%)
Mutual labels:  privacy, encryption
Peergos
A p2p, secure file storage, social network and application protocol
Stars: ✭ 895 (+265.31%)
Mutual labels:  privacy, encryption
Emberclear
Encrypted Chat. No History. No Logs.
Stars: ✭ 157 (-35.92%)
Mutual labels:  privacy, encryption
Discordcrypt
End-To-End File & Message Encryption For Discord
Stars: ✭ 150 (-38.78%)
Mutual labels:  privacy, encryption
Silence
PROJECT MOVED: https://git.silence.dev/Silence/Silence-Android/ (GitHub is just a mirror.)
Stars: ✭ 1,019 (+315.92%)
Mutual labels:  privacy, encryption
Web Client
Cryptee's web client source code for all platforms.
Stars: ✭ 174 (-28.98%)
Mutual labels:  privacy, encryption
Sephia Five
A secure and PGP enabled webmail module for Phosphorus Five
Stars: ✭ 21 (-91.43%)
Mutual labels:  privacy, encryption
Brandis
Brandis: End-to-end encryption for everyone
Stars: ✭ 77 (-68.57%)
Mutual labels:  privacy, encryption
Lyra
A lightweight encryption tool designed for ease of use.
Stars: ✭ 22 (-91.02%)
Mutual labels:  privacy, encryption
Zeyple
Postfix filter/hook to automatically encrypt outgoing emails with PGP/GPG
Stars: ✭ 122 (-50.2%)
Mutual labels:  privacy, encryption
Opmsg
opmsg message encryption
Stars: ✭ 704 (+187.35%)
Mutual labels:  privacy, encryption
Sdk Js
Tanker client-side encryption SDK for JavaScript
Stars: ✭ 786 (+220.82%)
Mutual labels:  privacy, encryption
Encpipe
The dum^H^H^Hsimplest encryption tool in the world.
Stars: ✭ 135 (-44.9%)
Mutual labels:  privacy, encryption
Magicpad
MagicPad is an encryption suite for beginners. It is designed to be run standalone via the browser or executable (Electron).
Stars: ✭ 174 (-28.98%)
Mutual labels:  privacy, encryption

a privacy centric matrix client - now in open alpha*

Get it on Google Play Download on the App Store


Syphon is still in alpha and we do not recommend
using it where proven and independently verified security is required.


🤔 Why

Syphon aims to be built on the foundations of privacy, branding, and user experience
in an effort to pull others away from proprietary chat platforms to the matrix protocol.

Matrix has the potential to be a standardized peer-to-peer chat protocol, and in a way already is, that allows people to communicate and control their conversation data. Email has been standardized in this way for a long time. For example, someone using Outlook can still email someone using Gmail. Most popular proprietary chat platforms do not adhere to a federated or decentralized protocol, and as a result have too much control over users data.

If the goal for Matrix is adoption, a network effect is required for this paradigm shift. Syphon makes the bet that the best way to attract new users is through strong branding and user experience. I hope that contributing and maintaining Syphon will help kick start this process and help those in need.

Syphon will always be a not for profit, community driven application.

✨ Features

  • no analytics. period.
  • no proprietary third party services
    • iOS will have APNS support, but will be made clear to the user
  • all data is AES-256 encrypted at rest
  • E2EE for direct chats using Olm/Megolm
  • all indicators of presence are opt-in only (typing indicators, read receipts, etc)
  • customize themes and colors throughout the app

🚀 Goals

  • [x] desktop clients meet parity with mobile
  • [ ] screen lock and pin protected cache features
  • [ ] P2P messaging through a locally run server on the client
  • [ ] allow transfering user data from one homeserver to another, or from local to remote servers
  • [ ] cli client using ncurses and the same redux store contained here (common)

🏗️ Building

You may notice Syphon does not look very dart-y (for example, no _private variable declarations, or using redux instead of provider) in an effort to reduce the learning curve from other languages or platforms. The faster one can get people contributing, the easier it will be for others to maintain or oversee a tool that does not exploit the user.

general

  • you'll to do several things to setup the environment for Syphon
    • install flutter (stable channel for ios/android)
    • install android studio
    • install cmake version for workstation platform (for olm/megolm)
    • install libs needed for cmake
      • macos -> brew install ninja
      • linux -> sudo apt install ninja-build
    • clone repo and init submodules
      • git submodule update --init --recursive
    • run the following prebuild commands
      • flutter pub get
      • flutter pub run build_runner build

ios/android

  1. pull dependencies needed
    • flutter pub get
  2. generate json conversion for models
    • flutter pub run build_runner build --delete-conflicting-outputs
  3. generate json conversion for models
    • flutter run

macos

  1. add intl: ^0.17.0-nullsafety.2 under dependency_overrides (temporary step)
  2. flutter channel dev since desktop support is still considered alpha in flutter
  3. flutter config --enable-macos-desktop
  4. brew install libolm to install native olm dependencies
  5. follow instructions for linking the dylib generated from brew to the Syphon project
  1. flutter build macos to build the .app bundle

linux

  1. add intl: ^0.17.0-nullsafety.2 under dependency_overrides (temporary step)
  2. flutter channel dev since desktop support is still considered alpha in flutter
  3. flutter config --enable-linux-desktop
  4. apt install libolm3 libsqlite3-dev or pacman -S libolm or platform equivalent for libolm
  5. flutter build linux && flutter build bundle
  6. navigate to release at $SYPHON_ROOT/build/linux/release/bundle
  7. Confirm build works with running $SYPHON_ROOT/build/linux/release/bundle/syphon

windows

  • not currently supported, feel free to reach out if you can support making builds!

📐 Architecture

store

  • views (flutter)
  • state (redux)
  • cache (redux_persist + json_serializable + sembast)
  • storage (sembast + sqflite + codec cipher)

assets

  • Looking for branding or design files? They can all be found here, in the top level assets folder.

integrations

  • Notifications
    • utitlizes android_alarm_manager on Android to run the matrix /sync requests in a background thread and display notifications with flutter_local_notifications
    • no third party notification provider will ever be used outside Apples APNS for iOS only
  • Equatable
    • This library allows comparisons of objects within Flutter to tell if they have changed.
  • JsonSerializable
    • Unfortunately, Json is not integrated directly in Dart/Flutter for your own objects. Code generation is required, for now, and will convert Syphon's custom objects to a 'Map' of respective json fields
  • Freezed (future)
    • Because every object in Syphon is immutable, freezed will help create objects doing the same thing all the 'copyWith' helper functions do today, with the improvement of allowing 'null' values to overwrite non-null values
  • Fastline Directory
    • fastline is not used as tool, but is there to provide a schema of metadata to FDroid

references

decoration: BoxDecoration(
   border: Border.all(width: 1, color: Colors.white),
),
  • understanding why olm chose the world 'pickle' for serialization, its from python

📝 contributing

  • email [email protected] if you'd like to get involved. there's a lot to do.
  • donations are welcome, but not required. Syphon will always be a not for profit, community driven application not owned or sold by a corporation.

from those who made it possible

lub youu

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].