GithubHelp home page GithubHelp logo

frederickjansen / csci-e-71_imm_slacker_cordova_plugin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from internationalmixmob/csci-e-71_imm_slacker_cordova_plugin

0.0 1.0 0.0 6.36 MB

Final project for CSCI-E-71 International Mix Mob group

License: MIT License

CSS 9.70% HTML 6.47% JavaScript 25.52% Java 28.98% Objective-C 29.34%

csci-e-71_imm_slacker_cordova_plugin's Introduction

Slack Services plugin for Apache Cordova

Final project for the group International Mix Mob

Slacker Client

Slacker Cordova Plugin ReviewNinja Coverage Status

  • iOS Build Status
  • Android Circle CI
  • iOS Build Status
  • Android Circle CI

Project demos

##Product Vision Create Cordova plugins for iOS and Android to enable Slack services within development of any hybrid mobile application. The plugin includes:

  • Authorization service
  • Identity Information
  • Selecting Channels
  • Posting Messages
  • Presence Awareness
  • Advance Content sharing via Slash Commands
  • An example Cordova application to demostrate the plugin's features.

Team members

Scrum Team

  • Cornell Wright, iOS Developer
  • Alpana Barua, Scrum Master & part-time iOS Developer
  • Jeffry Pincus, Android Developer
  • Frederick Jansen, Android & Hybrid Developer
  • Manoj Shenoy, iOS Developer
  • Justin Sanford, Android & Hybrid Developer
  • Evan Borysko, Product Owner & part-time iOS Developer

Product owner

Evan Borysko

Scrum Master

Alpana Barua

Definition of Done

  • Builds without errors.
  • All public methods are documented.
  • All classes are documented.
  • Build and deployment steps are documented.
  • Code is committed to Github.
  • Code is reviewed by at least one other team member (pair/mobs need no other review) before committed to master.
  • All existing unit tests pass, and new ones are written for new code.
  • Additional unit tests code reviewed by 2 other team members (pair/mobs need one other review).
  • Code coverage is > 85%.
  • Code targets 4 platforms: iOS, Android, JS API and reference application.
  • Ticket must be closed after a story is finished.
  • Time is logged in Jira for all closed tickets.
  • All commits must reference a ticket number.
  • The product owner signs off on a closed ticket.
  • Product has matched or exceeded the expectation of stake holders after product review.

Stakeholders

  • Mobile App Developer - Nora from Evan's Staff - needs a small lightweight plugin that allows easy integration into their app to authenticate in Slack, must have high levels of code readability and transparency and the documentation needs to be clear and logical.
  • Mobile Hybrid Web Developer - Ajay from Evan's Staff- needs a plugin that is platform agnostic, authentication should be fast and reliable with clear error descriptions.
  • Product Owner - Evan - needs something that is fast to implement, needs to have few impediments to getting a product to market and enhances the productivity of the developer team.

Resources

Project / Agile Tools

Development Tools

Git workflow

The idea is to follow a story branch pattern very similar to the one outlined here, with the main difference being that no interactive rebase is required to squash commits. The steps are thus as follows:

Pull in latest content when on master.

git pull origin master

Create and checkout story branch. Use the ticket number as the start of the branch name

git checkout -b 80-git-workflow

Rebase from master often to keep up to date with changes. Fix any merge conflicts as they come along.

git fetch origin master
git rebase origin/master

When all work is done on this story, issue a pull request against master from your branch. This will initiate the CI builds, and allow others to review the pull requests prior to merging it to master.

Once the CI builds pass, including all tests, and the code has been reviewed, you can merge the PR to master.

When followed correctly, no merge conflicts should ever appear on the master branch.

Preparing Development Environment

Android

Installing Cordova and running Cordova HelloWorld App

The source of this brief instruction list is the Cordova Android Platform Guide.

  1. Install Node.js version 5.0.0.
  2. Install Java Development Kit.
  3. Install Android Studio.
  4. Open the Android SDK Manager (type android on console) and install:
  • Android SDK platform (Cordova Android Platform Guide suggests installing API 22 (v5.1.1)).
  • Tools/Android SDK Build-tools version 19.1.0 or higher (23.0.2 works).
  • Extras/Android Support Repository
  1. Set up Android emulator for development:
  • Install Intel x86 Atom System Image (from API 22) from Android SDK Manager.
    • Windows: Install Extras/Intel x86 Emulator Accelerator from Android SDK Manager.
    • Linux: Make sure kvm and virtio kernel modules are loaded:
      • $ lsmod | grep kvm and $ lsmod | grep virtio.
      • If either command gives no response, # modprobe kvm or # modprobe virtio will load the kernel modules.
  • Click Tools -> Manage AVDs... in the Android SDK Manager.
  • Click the Device Definitions tab.
  • Click on a device, e.g. Nexus 5 by Google, then click Create AVD... button.
    • Optionally modify the AVD name.
    • In the Target field, select the Android version.
    • In the CPU/ABI field, select Intel Atom (x86).
    • In the Skin field, select a skin (Skin with dynamic hardware controls works).
    • In Emulation Options, select Use Host GPU.
  1. If you plan to run the app in an Android device for development:
  • Install API matching the Android version on your device from Android SDK Manager.
  • Enable USB debugging on the device:
    • In Settings -> About phone, scroll down to the Build number field.
    • Tap the Build number field several times until Developer options are unlocked.
    • In Settings -> Developer options, enable USB debugging.
    • Connect the device to your computer via USB.
  1. Install Cordova:
    • $ npm install -g cordova
    • $ cordova --version should be 5.4.0.
    • $ npm install -g plugman
  2. Create a new project:
    • $ cordova create hello com.example.hello HelloWorld
    • $ cd hello
    • $ cordova platform add android
    • $ cordova build
  3. Deploy the app:
  • $ cordova run android --list displays the deployment options available.
  • $ cordvoa run android --target="target" to deploy to device or emulator of choice.
  • App should be pushed to device, and you should see a screen with the Apache Cordova logo and a pulsing button stating the device is ready.
  1. Open new project in Android Studio:
  • Launch Android Studio
  • Accept all the defaults from the startup wizard.
  • Select Import Project.
  • Select location where android platform is stored (hello/platforms/android)
  • Main activity is located at android/java/com.example.hello/MainActivity.java.
  • It should be possible to run the app from within Android Studio via Run -> 'android'.

iOS

Tools for development using XCode

  1. Mac with OS X 10.10.5 installed
  2. Install Xcode 7.1 from Mac App Store
  3. Install Xcode command line tools
  4. Install HomeBrew using below command in terminal
    • $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • Optionally $ brew tap homebrew/versions
  5. Install Node.js with HomeBrew:
    • $ brew install node
  6. Install Cordova using the below command
    • $ npm install -g cordova
    • $ cordova --version should be 5.4.0.
    • $ npm install -g plugman
  7. Create a new project:
    • $ cordova create harvardcscie71 com.example.hello HelloWorld
    • $ cd harvardcscie71
    • $ cordova platform add ios
    • $ cordova build Optional - Install Github desktop from https://desktop.github.com/ Optional - If you have multiple versions of node.js and need to switch between them using homebrew versions

Code Reviews

Review Ninja has been added to Github. Directions coming soon.

Example CI Projects

Example projects use NPM to get dependencies, run build, and run tests. After cloning, run the following commands:

  • /npm i
  • /npm test
  • /npm run build

I will enable more commands shortly. iOS project requires Mac OSX and Node 4.1.1 to function. Android build should run on OSX or Linux. If someone has a Windows environment to, please let me know.

Sprint Retrospective

Sprint 1 Retro Nov 16

  • Good/Continue doing:

    • Impressive lineup of tools
    • Great documentation of all the various procesess and tools
    • Review Ninja is awesome: should use it
  • Start doing:

    • Focus on minimum viable
    • More mob/pair sessions
    • Schedule pair/mob sessions on Calendar so people can join
    • More & consistant commitment from team members
  • Stop doing:

    • Long term goals/experimentation

Sprint 2 Retro Nov 29

  • Good/Continue doing:

    • Learning new things from technical challenges
    • Paired/Mob Sessions
    • Always have a backup when presenting
  • Start doing:

    • Better sharing of knowledge between members
    • Integration testing
    • Focus on making all the existing code rock solid
    • Focus on polishing
    • Nice presentation with Reveal.js or Prezi for final
  • Problems/Stop doing:

    • Lack of participation
    • Difficult to keep track of all the layers
    • Need to highlight the complexity of CI board and explain its nuances
    • Consider consolidating the 2 teams
    • Demo could look better - use mockups if necessary

csci-e-71_imm_slacker_cordova_plugin's People

Contributors

alpib avatar cornellbw3 avatar dbugmode avatar eborysko-harvard avatar frederickjansen avatar jsanford8 avatar pinkie1378 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.