Parabol is a free open-source SaaS application for operating a distributed organization.
We're hiring!
Curious to learn where this all came from? Each week we publish a distillation of our progress, philosophy, and more in Parabol Focus.
Action is a Node.js application based upon the Meatier stack:
Concern | Solution |
---|---|
Server | Node 8.5 |
Server Framework | Express |
Database | RethinkDB |
Data Transport | GraphQL |
Sockets | socketcluster |
Client State | Redux |
Client Data Cache | Relay |
Front-end Views | React |
Styling | aphrodite |
Unit Testing | jest |
Action is coded using ECMAscript ES6/7 (including async/await). Transpilation is provided by babel.
Action requires Node.js >=8.5.0 (we're using 8.5.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
Additional dependencies include redis, and watchman (optional for relay).
$ git clone https://github.com/ParabolInc/action.git
$ cd action
$ cp .env.example .env # be sure to verify the API keys have useful values
$ 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.
In this mode, webpack will hot swap your updated client modules without needing to restarting the development server.
$ npm run build
$ npm run dev
In this mode, the server will build client bundle and start a production server with the fresh code.
$ npm run bs
The database schema version is managed by
migrate-rethinkdb.
Migration scripts are stored in ./src/server/database/migrations
.
If you make changes to the Action schema, make certain to create a new migration.
$ npm run db:migrate-testing # Only needs to be run once
$ npm run test # Runs all tests
Currently, many of the config files are written for a Unix based shell like bash. If you plan on contributing (awesome!), but are working on a Windows machine, you can follow these steps to get started. Note this is just one way of setting up the environment for Windows, but it is the least likely to give you trouble down the road.
- Follow the instructions to install bash for windows
- Open cmd and type
bash
- Install node >= 8.5.0 inside of your bash instance
- Install the dependencies for watchman
- Install watchman from source
- Start an instance of rethinkDB
- Start an instance of redis
- Navigate to the directory of your choice
-
$ git clone https://github.com/ParabolInc/action.git $ cd action $ yarn $ npm run quickstart
If you run into problems, run each of these commands separately and watch for errors.
npm run db:migrate
npm run build:dll
npm run build:relay
npm run dev
$ npm run db:migrate
The following commands are available to migrate your database instance forward and backward in time:
npm run db:migrate-up
- migrate up one schema versionnpm run db:migrate-up-all
- migrate upward to latest schemanpm run db:migrate-down
- migrate down one schema versionnpm run db:migrate-down-all
- migrate downward completely (will erase everything)
While running the app in development mode, navigate to http://localhost:3000/graphql for testing out new queries/mutations
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
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.
For details on all releases, refer to CHANGELOG.md.
Authored and maintained by Parabol.
Copyright 2016, 2017, 2018 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