Skip to content
/ app Public

ChatBot Pocket Manager for Android & Ios, Powred by Ionic & Angular

License

Notifications You must be signed in to change notification settings

Chatie/app

Repository files navigation

CHATIE APP

Chatie App for Android & Ios & Web

Chatie.io - Make your own ChatBot in no language, in minutes.

Powered by Ionic & Angular

Picture Credit: https://blog.ionicframework.com/angular-2-ionic/

FEATURES

  • Passwordless Auth
  • Serverless Deploy
  • Languageless Programing

DEVELOPMENT

Linux

OS: Ubuntu 17.10

Install Android SDK

sudo apt install \
  adb \
  android-platform-tools-base \
  android-sdk \
  android-sdk-platform-23 \
  android-sdk \
  android-sdk-platform-tools

cd $ANDROID_HOME
# download link comes from https://developer.android.com/studio/index.html
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
sudo unzip -n sdk-tools-linux-3859397.zip
sudo chmod +x \
  tools/bin/sdkmanager \
  tools/bin/avdmanager

# XXX: make sure the following line is required...?
sudo ./tools/bin/sdkmanager "build-tools;27.0.3"

# IMPORTANT: Accept all the licenses
./tools/bin/sdkmanager --licenses

Build Android APK

./scripts/android.sh

Mac

Install ...

# Ios: https://cocoapods.org/
$ sudo gem install cocoapods

Build iOS IPA

./scripts/ios.sh

Browser

Build

ionic cordova platform add browser
ionic cordova build browser --prod

APP PUBLISHING

Google Play

Apple Store

  1. Xcode -> Product ->
    1. Build
    2. Archive

Web

Develop

Debug Switch

By adding ?BROLOG_LEVEL=silly to URL, you can enable full debug output messages in the console.

For example:

Learning Resources

Copy Cat Clone

Angular

Material

Auth0

<<<<<<< HEAD

RxJS

=======

Rxjs

ec6237233f54b2f152977a6b8964732ce6f054c4

How to use Observable.

Build from Scratch

Others

Machine Learning

Progressive Web Apps

A Progressive Web App(PWA) uses modern web capabilities to deliver an app-like user experience.

Database

1. GraphQL

2. PouchDB

Testing

Open API Specification

Push

UI

TODO

  1. Use Lighthouse to improve quality
    1. GitHub: https://github.com/ebidel/lighthouse-ci
    2. Try: https://lighthouse-ci.appspot.com/try
  • Hostie Event Page
  • Hostie QR Code Push
  • Store Publish
  • Other
    • Feedback enable Wilddog & Scrollglue
    • Gavatar in menu with Matrix CSS

SEE ALSO

CHANGELOG

v0.3 (master) Apr, 2018

  1. Promote Auth service as a solo npm package auth-angular

v0.2 Feb, 2018

  1. Upgrade to Ionic 3 & Angular 5
  2. GraphQL DB Integration

v0.1 Apri, 2017

  1. Auth0 Integration
  2. FastLane.tools Integration
  3. Ionic DB Integration

v0.0 Dec 16, 2016

  1. Build with Ionic/Angular 2
  2. Prototype with Ionic Creator

AUTHOR

Huan LI <[email protected]>

profile for zixia on Stack Exchange, a network of free, community-driven Q&A sites

COPYRIGHT & LICENSE

  • Code & Docs © 2017-2018 Huan LI <[email protected]>
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons

MEMO

title: "Welcome to the Platform!", description: "The Ionic Component Documentation showcases a number of useful components that are included out of the box with Ionic.",

title: "What is platform?", description: "Ionic Framework is an open source SDK that enables developers to build high quality mobile apps with web technologies like HTML, CSS, and JavaScript.",

title: "What isPlatform?", description: "The Ionic Platform is a cloud platform for managing and scaling Ionic apps with integrated services like push notifications, native builds, user auth, and live updating.",

ALPHA DESIGN

import { Giftie } from '@chatie/giftie'
import { Botie } from '@chatie/botie'

const botie = new Botie()
const botie = new Botie('token')

try {
  await botie.init()
  await botie.test().pipe(
    tap(progress => {
      console.log('on progress...', progress)
    })
  ).toPromise()
  wechaty.addBotie(botie)
} catch (e) {
  if ( e.instanceof(UnitTestingException )) {
    // botie test fail
  } else {
    // other exception
  }
}

function addBotie(botie: Botie): Promise<void> {
  // const eventNameList     = botie.eventNameList()
  // const eventListenerList = botie.eventListenerList()

  // for (const i in eventNameList) {
  //   this.addListener(eventNameList[i], eventListenerList[i])
  // }

  botie.bind(this)

  botie.listener.subscribe.pipe(
    tap(
      (event, listener) => this.addListener(event, listener),
    ),
  ).toPromise()
}

function removeBotie(botie: Botie) Promise<void> {
  botie.listener.subscribe.pipe(
    tap(
      (event, listener) => this.removeListener(event, listener),
    ),
  ).toPromise()
}

const wechaty = Wechaty.instance()
wechaty.setPuppet(new HostiePuppet('token'))
wechaty.start()