/xayn_discovery_app

Primary LanguageDartApache License 2.0Apache-2.0

Xayn Discovery

License


Get it on App Store Get it on Google Play


Xayn Discovery is your news assistant that discovers an endless stream of news, articles and other content for you. Ad-free, loaded with privacy features and highly personalised.


Endless content
Discover a stream of continuous reading recommendations that you will love. News, articles and other content from great sources are just one scroll away.

Full on privacy
Everything you do and read with Xayn stays on your device. We’ve also made our product completely ad-free, so that you can't be retargeted by anyone. On top of that, we block cookies & third-party trackers, so that you stay completely anonymous.

Your personalised news assistant
Our powerful edge AI learns all about your interests and searches the internet for content recommendations you will love. Powered by great content sources from around the world and individually curated for you.


Component overview ⚙️

You can check more details about the code structure we follow here.

top ⤴️

Analytics 📈

Our understanding of a privacy-friendly discovery app is that, as a rule, we aim not to process any of your personal data you input in the App. Once you delete the App from your device, all your personal data should be deleted. Even though it's our long term goal, for our beta version, we track certain user actions to understand the collective user behavior. For full transparency, you can check an up-to-date list of tracked events and properties that is sent to the analytics platforms we utilize.

top ⤴️

How to run 🛠️

Locally

  1. Fork the repository.

  2. Add environment files .env.debug and .end.pod to application directory. An example of what to include in these files can be found in env.example.

  3. Provide your own keys and URLs to the newly created .env.debug and .end.pod files. Alternatively, you can use our fastlane configuration to automatically fill the secrets by answering some wizard questions in the command line, just run on your terminal: $ fastlane build_runner.

  4. In case you chose to run $ fastlane build_runner, you can skip this step.
    4.1. In case you want to run on Android, add to application/android/custom.properties the following

    INSTABUG_TOKEN=YOUR INSTABUG TOKEN

    4.2. Run on the root project terminal:

    $ cd application
    $ flutter pub get
    $ flutter pub run build_runner build --delete-conflicting-outputs
  5. Run the app during the development on simulators/emulators by simply executing on the terminal: $ flutter run.

Real iOS device

In order to run and debug the app on a real iOS device a provisioning profile, and a developer certificate is necessary. A default development profile for development is part of this repository. To install it run:

$ open ios/profiles/Xayn_Discovery_Internal_Develop_Profile.mobileprovision

Or open the profile in the finder, then install the development certificate found under ios/profiles/Certificates-internal.p12 the encryption key can be found in 1password.

If you want to use another profile follow this steps:

  1. Create a development certificate in XCode (Settings -> Accounts -> Xayn AG Team -> Manage Certificates -> "+" Button -> Apple Development)
  2. Create a "iOS App Development" provisioning profile under Certificates, Identifiers & Profiles
  3. Be sure that it matches the default team id and app id found in ios/fastlane/Appfile and that it contains your created certificate in step 1
  4. Edit the ios/Flutter/UserDefaults.xcconfig to contain
USER_PROVISIONING_PROFILE=YOUR PROFILE NAME
USER_CERTIFICATE=YOUR CERTIFICATE NAME 
  1. Now plugin your iOS device (be sure it is accepted as a development device XCode -> Window -> Devices )
  2. Run flutter run

NOTE: The ios/Flutter/Dartdefines.xcconfig can contain overrides for USER_PROVISIONING_PROFILE/ CERTIFICATE (when running fastlane publish) so be sure that this is not the case!!!

top ⤴️

Dependencies 📦

Code dependencies

Read more about the dependencies we use in Xayn Discovery here.

Build dependencies

fastlane

fastlane makes it easy to automate beta deployments and releases for your iOS and Android apps.

First, check fastlane's get started section in the documentation to make sure you install it locally.

We have custom fastlane scripts that you can run locally to make your life easier:

  • $ fastlane build_runner ensures that all dependencies are created, and property files are correctly set-up.
  • $ fastlane check setup all dependencies then checks if the code is properly formatted, does not have any dart analysis issues, and all tests are passing.

Gitleaks

Gitleaks is a tool for detecting and preventing hardcoded secrets in git repos. The tool scans the repo using a set of regex rules. We have our custom set of rules implemented in the .gitleaks.toml file, located at the root folder of the project.

Steps to follow for scanning the repo:

  • Get started with gitleaks
  • Navigate to the root folder of the project.
  • Run the terminal command $ gitleaks detect -l debug --verbose. For more information about the usage, please check Gitleaks documentation. _ Please note: in order to use our custom set of rules, the location where the command is run must be the same of where the .gitleaks.toml is located. _
  • Check the output on the terminal and look for any hardcoded secrets.

top ⤴️

License 📜

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

top ⤴️