frill

0.6.20 • Public • Published

frill

Yet another FLUX starter kit

Circle CI Code Climate Test Coverage HAPI 9.3.0

dependencies devDependency Status

Gitter

Features

You can always implement anything yourself.

Getting Started

$ npm install -g frill

NOTE: use sudo if necessary

then, the command below creates a new project from your current directory:

$ frill new appName

if you only want the front-end (for creating isomorphic flux app), use:

$ frill frontend appName

if you only want the back-end (for creating APIs with hapi), use:

$ frill backend appName

Building your app

$ npm run build

or

$ gulp build

building your app for release, use:

$ npm run build-release

or

$ gulp build --release

Run app and watch for changes

$ npm start

or

$ npm run watch

or

$ gulp

Run your app as a daemon

Start app

$ npm run service-start

Stop app

$ npm run service-stop

Restart app

$ npm run service-restart

See forever for more information.

Deploying your app

Install Shipit

$ npm install -g shipit

Configure deployments inside ./config/default.js to your environment, then

For production

$ shipit production deploy

For staging

$ shipit staging deploy

shipit (environment) pwd, shipit (environment) start, shipit (environment) stop, shipit (environment) restart is configured by default.

See Shipit and shipit-deploy for more information.

Testing your app

$ npm test

exports NODE_ENV=test automatically

or

$ NODE_ENV=test gulp test

IMPORTANT: You should always use test for your NODE_ENV environment variable to make sure that your production/development database will not be affected by tests

Project directory structure

When using the new command:

.
├─ /docs/                   # Documentation files for the project
├─ /node_modules/           # 3rd-party libraries and utilities
├─ /public/                 # The folder for compiled output and serving
├─ /src/                    # The source code of the application
│  ├─ /actions/             # Actions that allow to trigger a dispatch to stores
│  ├─ /api/                 # REST API /api/ endpoints
│  │   ├─ /auth/            # Authentications
│  │   │  └─ /strategies/   # Authentication strategies
│  │   ├─ /footprints/      # Customize footprint routes
│  │   │  └─ /user.js       # An example for customizing footprint routes (filename must be identical with the model name)
│  │   ├─ /v1/              # Place your version 1 api routes here
│  │   └─ routes.js         # File to include all your API routes
│  ├─ /assets/              # Asset files should be placed here
│  │   └─ /images/          # Image files
│  ├─ /components/          # Place your Frill(or React) Components here
│  │   ├─ /Mediators/       # Components which watches the stores, dispatch actions, etc.
│  │   ├─ /Pages/           # Page components used in react-router (src/config/routes.jsx)
│  │   ├─ /UI/              # The 'dumb' (mainly)render-only components
│  │   └─ App.jsx           # A component which wraps around the app
│  ├─ /config/              # All configuration files are placed here
│  │   ├─ /env/             # Environment-specific configurations are placed here
│  │   │  ├─ /development/  # Configurations used in NODE_ENV = 'development'
│  │   │  └─ /production/   # Configurations used in NODE_ENV = 'production'
│  │   ├─ /locales/         # Language files are placed here
│  │   ├─ api.js            # Configurations for API routes
│  │   ├─ cache.js          # Configurations for hapi's caching
│  │   ├─ config.js         # Configurations for configurations
│  │   ├─ cors.js           # Configurations for CORS(Cross-Origin Resource Sharing)
│  │   ├─ deployment.js     # Configurations for deployments
│  │   ├─ footprints.js     # Configurations for footprints (Builds routes automatically from models)
│  │   ├─ i18n.js           # Configurations for internationalizations
│  │   ├─ logs.js           # Configurations for hapi's logging
│  │   ├─ models.js         # Configurations for models (Using 'dogwater' by default)
│  │   ├─ routes.jsx        # Routes for 'react-router'
│  │   ├─ server.js         # Basic configurations for hapi
│  │   ├─ session.js        # Configurations for sessions
│  │   └─ strategies.js     # Configurations for authentication strategies
│  ├─ /helpers/             # All helper methods/classes should be placed here
│  ├─ /models/              # Dogwater (waterline) models to use inside API
│  ├─ /stores/              # Stores that allow to emit changes to components
│  ├─ /styles/              # CSS(Stylus) files should be placed here
│  ├─ /templates/           # Template files should be placed here
│  ├─ /bootstrap.js         # Bootstraps client and server codes
│  ├─ /client.js            # Entrypoint for Client bundle
│  └─ /server.js            # Entrypoint for server-side application
├─ /tasks/                  # Gulp task scripts
├─ /test/                   # Test scripts (using Mocha)
├─ .gitignore               # List of files to exclude from git repository
├─ .eslintrc                # Configuration for ESLint
├─ .jshintrc                # Configuration for JSHint
├─ README.md                # The README file
├─ esdoc.json               # Configuration for ESDoc
├─ app.js                   # Entrypoint for server-side without using gulp
├─ gulpfile.babel.js        # Used for configuring gulp (in ES6 syntax)
├─ package.json             # List of 3rd party libraries using NPM
├─ webpack.config.js        # Webpack configuration for bundling client scripts
├─ shipitfile.js            # Enables ES6 syntax for shipitfile.babel.js
└─ shipitfile.babel.js      # Configuration for deployment tasks

NOTE: The project structure changes when using the $ frill frontend appName command and the $ frill backend appName command.

Questions or Bugs?

Please send us an issue, or a chat in gitter.

License

MIT

Package Sidebar

Install

npm i frill

Weekly Downloads

1

Version

0.6.20

License

MIT

Last publish

Collaborators

  • nanopx