eliud_core 1.0.5 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.
- Html allows you to construct webpages. However, html requires some level of technical knowledge about building webpages.
- 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 | |
---|---|---|---|---|
Juuwle - An online store for jewels | Juuwle on the App Store | Juuwle on Google Play | https://juuwle.net | |
Minkey - Community making apps online | This type of app is not allowed on apple store | Minkey on Google Play | https://minkey.io | |
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 #
- Goto https://www.google.com/account/about/
- Select "Create an account"
- Follow on screen instructions (recommended to use default settings)
|
Step 2: Create a new firebase project #
- Goto https://console.firebase.google.com
- Select "Create a project"
- And follow on screen instructions (recommended to use default settings)
|
Step 3: Configure your project #
- Goto https://console.firebase.google.com
- Select your project
- Select Project Overview > Project settings
- Select support email, which should be specified in step 1: Google account
Step 4: Setup Firebase database #
- Goto https://console.firebase.google.com
- Select your project
- Select Build > Firebase database
- Select "Create database"
- And follow on screen instructions (recommended to use default settings, start in production mode)
- With Cloud Firestore open, click on Rules and copy/paste the contents of firestore.rules
Step 5: Setup Firebase storage #
- Goto https://console.firebase.google.com
- Select your project
- Select Build > Storage
- Select "Get started"
- And follow on screen instructions (recommended to use default settings, start in production mode)
- With Storage open, click on Rules and copy/paste the contents of storage.rules and publish
Step 6: Setup Google Authentication #
- Goto https://console.firebase.google.com
- Select your project
- Select Authentication
- Select Sign-in method
- Select Google from Sign-in providers
- Enable the Google sign-in
Step 7: Generate key #
- 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
-
Then follow onscreen instructions. Then store the key-file in a safe place. You will have to use it multiple times in the future.
-
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
- https://developers.google.com/android/guides/client-auth
- https://coderwall.com/p/r09hoq/android-generate-release-debug-keystores
Step 8: Add Firebase Android App #
- Goto https://console.firebase.google.com
- Select your project
- Click 'Add app' and select platform 'Android'"
- Specify your android package name
- Specify your android app nickname
- Paste the SHA-1 key from step 7: Your keystore SHA1
- Press "Register app"
- Then download the file google-services.json
|
Step 9: Create Android Studio project #
-
Start Android studio
-
Select File > New > New Flutter Project
-
Specify
- Flutter SDK path and press Next
-
Specify
- Project name: e.g. thoma5_app
- Project location: e.g. C:\src\apps\thoma5_app
- Description: e.g. Thoma5 app
- Project type: Should be "Application"
- Organization: e.g. com.thoma5
- Android language: Should be Java
- iOS language: Should be Swift
- 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
-
Press finish
|
Step 10: Copy google_services.json #
- Switch to the Project view in Android Studio to see your project root directory.
- 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 #
- Goto https://console.firebase.google.com
- Select your project
- Find your app from "your apps" section, then press "See SDK instructions"
- You get to chance to re-download the google_services.json file, skip this by pressing next.
- 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 #
-
Create key.properties file in your android directory, e.g thoma5/android/key.properties
-
Populate it with the below keys and values as below. Find your values from step 7, i.e.
- storeFile=Your keystore filename
- storePassword=Your keystore storepass
- keyPassword=Your keystore keypass
- keyAlias=Your keystore alias
e.g.
storePassword=abc keyPassword=cde keyAlias=thoma5key storeFile=c:/Users/thomas/.android/thoma5.keystore
-
Add the following lines to your android apps build.gradle file, e.g. thoma5/android/app/build.gradle
- 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 ...
- 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 { ... } }
- 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 #
- Delete test directory, which contains widget_test.dart
Step 16: minSdkVersion #
-
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
-
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:
links #
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 |