All Projects → feedhenry-raincatcher → raincatcher-core

feedhenry-raincatcher / raincatcher-core

Licence: MIT License
Mobile Application Platform for WorkForce Management

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects
HTML
75241 projects

Projects that are alternatives of or similar to raincatcher-core

webgui
Web Technologies based Crossplatform GUI Framework with Dark theme
Stars: ✭ 81 (+350%)
Mutual labels:  cordova
bpmn-js-token-simulation
A BPMN 2.0 specification compliant token simulator.
Stars: ✭ 130 (+622.22%)
Mutual labels:  bpmn
cordova-blackberry
[DEPRECATED] Apache Cordova blackberry
Stars: ✭ 26 (+44.44%)
Mutual labels:  cordova
cordova-plugin-apkupdater
This plugin allows your Android app to download and install compressed updates without the Google Play Store.
Stars: ✭ 46 (+155.56%)
Mutual labels:  cordova
cordova-plugin-ftp
A cordova plugin to use ftp (client) in web/js for both iOS and Android.
Stars: ✭ 32 (+77.78%)
Mutual labels:  cordova
cordevicljs
CorDeviCLJS - Cordova, Device and ClojureScript. Hybrid mobile app using Cordova with native device bridge, App connecting to backend (included) via websocket. UI based on OnsenUI and Facebook React, based on Enterlab Rente
Stars: ✭ 33 (+83.33%)
Mutual labels:  cordova
cordova-plugin-flurryanalytics
Adds support for all that Flurry Analytics flavored goodness to your Cordova based apps
Stars: ✭ 23 (+27.78%)
Mutual labels:  cordova
CNBlogApp
博客园Vue客户端
Stars: ✭ 51 (+183.33%)
Mutual labels:  cordova
cordova-plugin-tencent-liteav
A cordova plugin for video playing with Tencent's LiteAV SDK. Support RTMP/HLS/FLV/MP4.
Stars: ✭ 24 (+33.33%)
Mutual labels:  cordova
SimplePlacePicker
Android place picker module for searching and selecting a location on google maps
Stars: ✭ 42 (+133.33%)
Mutual labels:  modules
heiss
Hot module reloading prototype with native (almost) ES6 modules
Stars: ✭ 22 (+22.22%)
Mutual labels:  modules
daftarkaryaku
daftar beragam karyaku . . .
Stars: ✭ 26 (+44.44%)
Mutual labels:  cordova
camunda-bpm-camel
Community Extension to add Apache Camel support for Camunda BPM
Stars: ✭ 74 (+311.11%)
Mutual labels:  bpmn
cordova-plugin-xpay
💰 This is a app payment cordova-plugin, support wechat payment and alipay temporally.
Stars: ✭ 19 (+5.56%)
Mutual labels:  cordova
keyonic-v2
A Keycloak Mobile Implementation using Angular v4 and Ionic v3
Stars: ✭ 23 (+27.78%)
Mutual labels:  cordova
cordova-plugin-document-scanner
cordova plugin for document scan
Stars: ✭ 77 (+327.78%)
Mutual labels:  cordova
requireg
Resolve and require local & global modules in node.js like a boss
Stars: ✭ 45 (+150%)
Mutual labels:  modules
todo-list
TodoList using Ionic2/3 & Firebase: * PWA * SSO Google plus. * Share list via QRcode. * Upload image from Camera or Storage. * Speech Recognition.
Stars: ✭ 18 (+0%)
Mutual labels:  cordova
vue-app
vue-app
Stars: ✭ 20 (+11.11%)
Mutual labels:  cordova
bpmn-js-sketchy
A sketchy renderer for bpmn-js.
Stars: ✭ 19 (+5.56%)
Mutual labels:  bpmn

Logo

Workforce management platform

Build Status Coverage Status Gitter chat

About RainCatcher

RainCatcher is a Workforce Management platform with the main focus on delivering a set of modules and user interface for mobile developers who want to integrate WFM features into their application.

RainCatcher can be divided into following areas:

  • Workforce Management framework that provides mobile and website framework for building Workforce management solutions on top of all supported user interfaces.
  • Set of modules specific to Workforce management (signatures, scheduler etc.)
  • WFM specific integrations to provide authentication, storage, offline capabilities and server side synchronization.
  • User interface implemented in AngularJS and Angular

Main targets:

  • Hybrid mobile development using TypeScript(cordova/web/angular)
  • Node.js based server
  • Fully object oriented approach (classes and interfaces)
  • Focus on reusability and developer flexibility
  • All modules in single repository, multiple choice for user interfaces as separate repositories
  • Comprehensive documentation
  • Incorporates only open-source technologies

Documentation

http://raincatcher.feedhenry.io/docs

Contributor Getting Started

To run demo application please follow instructions from our Reference User Interface repository.

To contribute your changes, check the Contribution Guide for instructions and also refer to the Code of Conduct document to understand the commitments done on the part of the contributors and the core team.

Developing core components

RainCatcher supports and is tested on node v 6.x LTS.

Check your Node.JS version running node -v

Setup

git clone https://github.com/feedhenry-raincatcher/raincatcher-core.git
cd raincatcher-core
npm install
npm run bootstrap

Note: Core server requires mongodb and redis to be running on machine.

Repository folder structure

This repository contains many subpackages managed through Lerna, and they're contained in the following directories:

client/
Front-end packages, from API clients to user interface modules
cloud/
Cloud app packages, intended to be run on an Node.JS environment
demo/
Full-fledged Demo applications, showcasing the usage of multiple modules
templates/
Templates and examples for other packages in the repository

Creating a new package

In order to create a new package, we recommend duplicating examples/base, which is a sample base that contains the skeleton expected of a new package. Refer to the linked README for more details.

Package structure

Directories

src/
Contains the TypeScript sources.
test/
The unit tests for the module. Should contain a `mocha.opts` file for configuring Mocha.
coverage/ and .nyc_output
Istanbul output, should be .gitignored.
example/
Example usage for module.

Module structure

RainCatcher modules are written in TypeScript.

The main files are modules that by default export a class containing the main implementation for the module's intent, with a named export containing a public interface that should be depended upon, and reimplemented.

import Implementation, { PublicInterface } from '@raincatcher/module';

See the Reusing unit tests section in order to know how to leverage the existing test suites on custom implementations.

Default exports

For each module, the default export is the main implementation itself, as the most common scenario is it being used by the requiring code.

Other RainCatcher modules depend only on the interfaces explained in the next section

Public interface

Along with the default export, all modules include a public interface definition that are depended upon by other RainCatcher modules instead of depending on the implementation itself. See the BaseModule for an example.

This is done so they can be more easily replaced or extended by custom implementations. Custom modules can skip this concern.

Unit test structure

For each module unit tests are present on the test/ folder, the Mocha default for storing the mocha.opts file as well.

Since code that requires a module's tests are most likely interested in a reusable test suite, the test/index.ts file's default export should be a function that receives all the required parameters for running the test suite on a given implementation of the interface.

import publicInterfaceTestSuite from '@raincatcher/module/test';
import { PublicInterface } from '@raincatcher/module';

class MyClass implements PublicInterface {
  // ...
}

// test/MyClass.ts
describe('MyClass', function() {
  publicInterfaceTestSuite(MyClass);
});

Tests for the module's specific implementation can be included as other files inside the same folder.

Using modules from JavaScript

We recommend users to write their code in TypeScript, especially if their new RainCatcher-based solution is a greenfield project, however JavaScript usage is partially supported by editor plugins that will still offer suggestions based on the TypeScript interfaces and access to jsdoc annotations:

JS completion through editor support

See the example on examples/js for more information also for reusing the unit test suites from JavaScript code.

Repository commands

  • npm run test - run unit tests
  • npm run bootstrap - perform boostrap for all modules
  • npm run build - execute the build command for all modules, compiling TypeScript sources to JavaScript
  • npm run start:ts - run top level applications from the TypeScript sources
  • npm run start - run top level applications from the compile JavaScript, you must run npm run build before this command
  • npm run lint - execute tslint for all modules
  • npm run cleanInstall - perform install without executing additional scripts
  • npm run update:check - check for updates in all the existing packages in the repository
  • npm run update:run - execute updates and rewrite the package.json in all the existing packages in the repository

Publishing

The repository also includes a set of commands for publishing both the standalone modules and the contained applications.

  • npm run publish:prepare - builds TS sources and setups dependencies for publishing packages
  • npm run publish:test - runs a test of publishing packages to a local npm registry via the Verdaccio project
  • npm run publish:full - prepares packages and tries to publish to the public registry, requires human input for confirming the version bumps, see the lerna publish documentation for more information.
  • npm run publish:dry - does a dry-run of the publish scripts for local test purposes, avoiding any permanent changes to git history or npm registries
  • npm run publish:demo-server - publishes the demo/server application to the feedhenry-templates repository as part of the project's inclusion in the Red Hat Mobile Application Platform
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].