action

A multiplayer web application for building smarter, more agile teams.

Action

Slack Status CircleCI codecov

New Beta!

Sign up for Action Beta & be first in line to try it out!

Overview

An open-source SaaS application for operating Agile business teams.

Action Screencap Image by Parabol, Inc

Curious what this is all about? Each week we publish a distillation of our progress, philosophy, and more in Parabol Focus.

Live demo: http://action-staging.parabol.co/

Quick Links

Stack Information

Action is a Node.js application based upon the Meatier stack:

Concern Solution
Server Node 7
Server Framework Express
Database RethinkDB
Data Transport GraphQL
Sockets socketcluster
Client State Redux
Client Data Cache Cashay
Front-end Views React
Styling aphrodite
Unit Testing jest

Action is programmed in ECMAscript ES6/7 (including async/await). Transpilation is provided by babel.

Setup

Installation

Prerequisites

Action requires Node.js >=7.6.0 (we’re using 7.6.0 in development). We recommend using n to install and manage your node versions.

Action also depends on RethinkDB. Make sure you have it installed. If you have OSX, we recommend homebrew so upgrades are as easy as brew update && brew upgrade rethinkdb

Action also uses yarn which can be installed by running npm install -g yarn

Source code

$ git clone https://github.com/ParabolInc/action.git
$ cd action
$ rethinkdb # in a separate window
$ yarn
$ npm run quickstart

Remember: if RethinkDB is running locally, you can reach its dashboard at http://localhost:8080 by default.

The majority of Action’s Javascript files are written using the emerging ECMAScript ES6 and ES7 standards. If you open a source file and see syntax errors, you may have to configure your editor differently. Our team’s editors (Atom and Webstorm) have plugins which parse our project’s Javascript transpilation options directly from .babelrc. If your editor has this option, it’s the best way to go.

Client-side development

In this mode, webpack will hot swap your updated client modules without needing to restarting the development server.

$ npm run build
$ npm run dev

http://localhost:3000/

Server-side development

In this mode, the server will build client bundle and start a production server with the fresh code.

$ npm run bs

http://localhost:3000/

Database development

The database schema version is managed by rethink-migrate. Migrations scripts are stored in ./src/server/database/migrations.

If you make changes to the Action schema, make certain to create a new migration.

Bringing your database up to date

$ npm run db:migrate

Migrating backward and forward

The following commands are available to migrate your database instance forward and backward in time:

  • npm run db:migrate-up - migrate up one schema version
  • npm run db:migrate-up-all - migrate upward to latest schema
  • npm run db:migrate-down - migrate down one schema version
  • npm run db:migrate-down-all - migrate downward completely (will erase everything)

Exploring the data API:

While running the app in development mode, navigate to http://localhost:3000/graphql for testing out new queries/mutations

Exploring component design:

We’ve begun assembling a pattern library of all of the components we’ve created for the app. Too see them, navigate to http://localhost:3000/patterns

Getting Involved

Action is software built with the community for the community. We can’t do it without your help!

You’re contribution won’t go unrewarded: Parabol offers equity in our young company for qualified contributions to Action.

See CONTRIBUTING.md for more information on how to get involved and how to get compensated.

Releases

For details on all releases, refer to CHANGELOG.md.

About

Authored and maintained by Parabol.

Parabol Core Team

License

Copyright 2016 Parabol, Inc.

Action is dual-licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, Version 3.0 while holding, at its sole discretion, the right to create new licenses. For details please read LICENSE.

See CHANGELOG.md

Related Repositories

android-floating-action-button

android-floating-action-button

Floating Action Button for Android based on Material Design specification ...

flux-standard-action

flux-standard-action

A human-friendly standard for Flux action objects. ...

react-native-action-button

react-native-action-button

customizable multi-action-button component for react-native ...

essential-netty-in-action

essential-netty-in-action

It is a book about the Essentials of Norman Maurer's Netty in Action.《Netty 实战(精髓)》是对 Norman Maurer 的 《Netty in Action》的一个精简 ...

akka-in-action

akka-in-action

Accompanying source code for akka in action ...