Skip to content

Flajt/decentproof-app

Decentproof Logo

tests release inlang translation stats

For general information please checkout the wiki tab . I will update the README soon!

About

Decentproof is an app to allow you to create media files and verify their integrity & authenticity afterwards. The app supports: aac, mp3, mkv and png files. File hashes are securely and privacy friendly stored in the Bitcoin and Etherium blockchain and can easily and independantly verified.

Not a Dev ? Check out the wiki

"Design Choices"

  • State Management: bloc + setState (the latter in some rare cases)
  • Dependency Injection: get_it
  • Architecture: Layered (not perfectly)
  • DB: None
  • Auth Service: None
  • Device Integrity: AppCheck (I'm considering replacing it with freerasp)
  • Translation Tool: Inlang
  • Env Var management: (TODO: Envied)

Getting Started

A guide on how to get started with everything.

Required tooling

The following things are required to get started:

  • Flutter sdk (see below to get it)
  • Android Studio & XCode (if MacOS)
  • A code editor (e.g. VSCode, JetBrains, Sublime, Vim) etc.
  • The backend repository

Let's Go

  1. Setup backend by following the README
  2. Install dependencies via: flutter pub get
  3. A firebase account with a project and appcheck enabled
  4. Create a .env file as seen below
  5. Checkout the CONTRIBUTING file
  6. Either you setup firebase appcheck with this project or comment out the code related to that while debugging AppCheck.dart
  7. Replace the public key with the one generated in the backend
  8. You are good to go just use: flutter run to run the app

Testing

The tests folder structure is the same as the one under lib. If you create new tests place them accordingly. All files needs to end in **_test.dart the _test part is important!

Integration tests need to be placed under integration_test folder ! And are run via flutter test integraton_test.

Running tests

  • Run: flutter test in your console and you should be good to go

.env

Point these to your urls

SIGN_URL=url-for-signature-requests
CHECK_KEY_URL=url-to-check-for-new-key
GET_KEY_URL=url-to-get-new-key
VERIFY_URL=url-to-verify-stuff
SENTRY_DSN=sentry-dsn-url

Helpfull Ressources

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.