eliud_core 1.0.5 copy "eliud_core: ^1.0.5" to clipboard
eliud_core: ^1.0.5 copied to clipboard

Eliud core

eliud #

Documentation for eliud is under construction. Please be patient.

  • Eliud technology is open source technology.
  • The technology allows to build apps and/or websites. Today, app content can include photo galleries, pages with videos and images (html), social media, chat with or between members, your shop / shopping cart, photo sliders, documents, and more. A complete list below.
  • Eliud is a layer on top of Flutter. Flutter is an open-source UI software development kit created by Google. Flutter allows to develop cross platform applications for iOS, Android and web. Flutter supports Linux, macOS, Windows and Google Fuchsia. This hasn't been tested with eliud packages yet.
  • For those who know Worpress: Eliud is to Flutter as Wordpress is to html:
    • Html allows you to construct webpages. However, html requires some level of technical knowledge about building webpages.
      • Wordpress and many other similar technologies allow people without knowledge of html to build webpages and websites.
    • Flutter allows to build websites and apps, or even Windows, Linux, macOS and Google Fuchsia apps. However, Flutter requires programming skills and technical knowledge.
      • Eliud allows people without programming skills and technical knowledge to build cross platform apps and websites.
  • Eliud is pluggable technology, allowing developers
    • to extend / add functionalities by means of plugins / packages.
    • to change look and feel through using styles.
  • A website / app built with Eliud consist of its core Eliud package + one or more Eliud plugins. The app is constructed by configuring it. Configuration, images and videos are stored in Firebase database and Firebase storage.

Example Eliud apps #

These are some example apps which demonstrate what eliud can give you. Everything used is open source, part of eliud project.

App Ios Android Web
Logo Juuwle - An online store for jewels Juuwle on the App Store Juuwle on Google Play https://juuwle.net
Logo Minkey - Community making apps online This type of app is not allowed on apple store Minkey on Google Play https://minkey.io
Logo Thoma5 - Profile of Thomas. Under construction In development In development https://thoma5.com

Quick start #

This guide are all steps to create a minimum android, iOS or web app with Eliud.

Whenever this pops up, make note of this for what this is in your case, as you'll need it at some later stage. In the below text we provided this information whilst creating thoma5. Obviously for sensitive information, like passwords, we've provided fake info.

Step 1: Create a new google account #

  1. Goto https://www.google.com/account/about/
  2. Select "Create an account"
  3. Follow on screen instructions (recommended to use default settings)

Step 2: Create a new firebase project #

  1. Goto https://console.firebase.google.com
  2. Select "Create a project"
  3. And follow on screen instructions (recommended to use default settings)

Step 3: Configure your project #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Select Project Overview > Project settings
  4. Select support email, which should be specified in step 1: Google account

Step 4: Setup Firebase database #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Select Build > Firebase database
  4. Select "Create database"
  5. And follow on screen instructions (recommended to use default settings, start in production mode)
  6. With Cloud Firestore open, click on Rules and copy/paste the contents of firestore.rules

Step 5: Setup Firebase storage #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Select Build > Storage
  4. Select "Get started"
  5. And follow on screen instructions (recommended to use default settings, start in production mode)
  6. With Storage open, click on Rules and copy/paste the contents of storage.rules and publish

Step 6: Setup Google Authentication #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Select Authentication
  4. Select Sign-in method
  5. Select Google from Sign-in providers
  6. Enable the Google sign-in

Step 7: Generate key #

  1. Run the following command at command prompt:
keytool -genkey -v -keystore your_keystore_filename -storepass your_keystore_storepass -alias your_keystore_alias -keypass your_keystore_keypass -keyalg RSA -keysize 2048 -validity 36524
  1. Then follow onscreen instructions. Then store the key-file in a safe place. You will have to use it multiple times in the future.

  2. Now run:

keytool -list -v -alias your_keystore_alias -keystore your_keystore_filename -storepass your_keystore_storepass -keypass your_keystore_keypass

For example:

keytool -genkey -v -keystore %USERPROFILE%\\.android\\thoma5.keystore -storepass abc -alias thoma5key -keypass cde -keyalg RSA -keysize 2048 -validity 36524
keytool -list -v -alias thoma5key -keystore %USERPROFILE%\\.android\\thoma5b.keystore -storepass abc -keypass cde

MORE INFO


Step 8: Add Firebase Android App #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Click 'Add app' and select platform 'Android'"
  4. Specify your android package name
  5. Specify your android app nickname
  6. Paste the SHA-1 key from step 7: Your keystore SHA1
  7. Press "Register app"
  8. Then download the file google-services.json

Step 9: Create Android Studio project #

  1. Start Android studio

  2. Select File > New > New Flutter Project

  3. Specify

    1. Flutter SDK path and press Next
  4. Specify

    1. Project name: e.g. thoma5_app
    2. Project location: e.g. C:\src\apps\thoma5_app
    3. Description: e.g. Thoma5 app
    4. Project type: Should be "Application"
    5. Organization: e.g. com.thoma5
    6. Android language: Should be Java
    7. iOS language: Should be Swift
    8. Platforms: Should be Android, iOS and Web

    IMPORTANT

    The android package name specified in step 8 Your Android app package name - e.g. com.thoma5.thoma5_app - should be equal to the concatenation of organisation - e.g. com.thoma5 - a dot and the project_name - e.g. thoma5_app

  5. Press finish


Step 10: Copy google_services.json #

  1. Switch to the Project view in Android Studio to see your project root directory.
  2. Move your downloaded google-services.json file from step 8 into into your module (app-level) root directory, e.g. thoma5_app/android/app

Step 11: Apply firebase SDK instructions #

  1. Goto https://console.firebase.google.com
  2. Select your project
  3. Find your app from "your apps" section, then press "See SDK instructions"
  4. You get to chance to re-download the google_services.json file, skip this by pressing next.
  5. Now apply the suggestions provided. Make sure to select Groovy (build.gradle) and Java.

🤔

At the time of writing this document, the changes to make were:

file location add
1️⃣ thoma5_app/android/build.gradle buildscripts > dependencies classpath 'com.google.gms:google-services:4.3.15'
2️⃣ thoma5_app/android/app/build.gradle plugins id 'com.google.gms.google-services'

:three: Finally the below at the bottom of thoma5_app/android/app/build.gradle had to be added


dependencies {
    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:32.2.2')


    // TODO: Add the dependencies for Firebase products you want to use
    // When using the BoM, don't specify versions in Firebase dependencies
    implementation 'com.google.firebase:firebase-analytics'


    // Add the dependencies for any other desired Firebase products
    // https://firebase.google.com/docs/android/setup#available-libraries
}


Step 12: Add key store file to your project #

  1. Create key.properties file in your android directory, e.g thoma5/android/key.properties

  2. Populate it with the below keys and values as below. Find your values from step 7, i.e.

    1. storeFile=Your keystore filename
    2. storePassword=Your keystore storepass
    3. keyPassword=Your keystore keypass
    4. keyAlias=Your keystore alias

    e.g.

    storePassword=abc
    keyPassword=cde
    keyAlias=thoma5key
    storeFile=c:/Users/thomas/.android/thoma5.keystore
    
  3. Add the following lines to your android apps build.gradle file, e.g. thoma5/android/app/build.gradle

    1. Load the properties
    plugins {
       ...
    }
       
    // add this after plugins
    def keystoreProperties = new Properties()
    def keystorePropertiesFile = rootProject.file('key.properties')
    if (keystorePropertiesFile.exists()) {
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    }
    
    // the rest of the file   
    ...
    
    1. Use the keystore for signinConfigs
    android {
        defaultConfig {
           ...
        }
    
        // add this after defaultConfig and before buildTypes
        signingConfigs {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
                storePassword keystoreProperties['storePassword']
            }
        }
    
        buildTypes {
           ...
        }
    }
    
    1. Make sure your buildTypes is pointing to the releasing signingConfigs
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release
        }
    }   
    

Step 13: Update pubspec.yaml #

-> see file pubspec.yaml in thoma5 project

and press Pub get


Step 14: Update main.dart #

-> see file main.dart in thoma5 project


Step 15: Clean up #

  1. Delete test directory, which contains widget_test.dart

Step 16: minSdkVersion #

  1. Goto your Flutter SDK path, specified in step 9, subdirectory packages\flutter_tools\gradle\src\main\groovy and edit the file flutter.groovy and open it

  2. Update the value for minSdkVersion to be 21

    class FlutterExtension {
        ...
    
        /** Sets the minSdkVersion used by default in Flutter app projects. */
        static int minSdkVersion = 21
    
        ...
    }
    

    REMARK

    We only need to make this change to the minSdkVersion for the SDK 1 time, i.e. do not repeat this step for future projects / apps.


Step 15: Run #

TODO: change the behavior... If the app doesn't exist, login, and create the simplest default app. How? See await MinkeyApp().wipeAndReinstall();

Then show how the user can add a page and then refer to minkey for further steps. Or we could use the minkey-how-to.html and minkey-tech.html files, cleanup, make it more specific for eliud and reference from here.


Cookbook #

In this cookbook we will create a new app from scratch. We continue from the quick start. We assume you're building an app for web, android and ios. Skip what doesn't apply to you.

preparations #

1. decide on the following

2. buy domain

example: squarespace.com

4. setup email forwarding

5. register for free gcp

6. Setup OAuth Client

7. Apple setup

8. Sendgrid setup

firebase #

1. create project

2. firebase database

3. firebase storage

4. authentication

5. functions

android studio #

1. android app

2. web app

3. ios app

run and deploy to app store #

1. android app

2. web app

3. ios app

overview packages / dependencies #

typical #

A typical app, here Minkey, uses the following dependencies:

Dependency diagram

Package Description
eliud_core This package
eliud_generator Eliud generator
eliud_pkg_apps Eliud package for creating apps through code, not gui
eliud_pkg_chat Eliud chat package
eliud_pkg_create Eliud create package
eliud_pkg_etc Eliud etc package
eliud_pkg_feed Eliud feed package
eliud_pkg_follow Eliud follow package
eliud_pkg_fundamentals Eliud fundamentals package
eliud_pkg_medium Eliud medium package
eliud_pkg_membership Eliud membership package
eliud_pkg_notifications Eliud notifications package
eliud_pkg_pay Eliud pay package
eliud_pkg_shop Eliud shop package
eliud_pkg_text Eliud text package
eliud_pkg_wizards Eliud wizards package
eliud_pkg_workflow Eliud workflow package
eliud_stl_mona Eliud mona style