frill v0.6.20
Yet another FLUX starter kit
Features
- Creating an isomorphic, FLUX application using frill-core, React and hapi
- Configrations, i18n, file-loading using frill-utils
- Automatically creates API using dogwater (waterline from sails) and footprints
- Supports local authentication.
- Supports JSON Web Tokens and OAuth for authentication using hapi-auth-jwt2.
- Watch and automatic builds using gulp, webpack, and Babel
- Auto-reload using Browsersync, and nodemon
- Documentation using ESDoc, and hapi-swagger for the API
- Lints using ESLint, alternatively JSHint
- Testing with Mocha, Chai, Sinon.js, and jsdom
- Styles using Stylus
- Example of a model using Sequelize
- Deployments using Shipit
- and many more!
You can always implement anything yourself.
Getting Started
$ npm install -g frillNOTE: use
sudoif necessary
then, the command below creates a new project from your current directory:
$ frill new appNameif you only want the front-end (for creating isomorphic flux app), use:
$ frill frontend appNameif you only want the back-end (for creating APIs with hapi), use:
$ frill backend appNameBuilding your app
$ npm run buildor
$ gulp buildbuilding your app for release, use:
$ npm run build-releaseor
$ gulp build --releaseRun app and watch for changes
$ npm startor
$ npm run watchor
$ gulpRun your app as a daemon
Start app
$ npm run service-startStop app
$ npm run service-stopRestart app
$ npm run service-restartSee forever for more information.
Deploying your app
Install Shipit
$ npm install -g shipitConfigure deployments inside ./config/default.js to your environment, then
For production
$ shipit production deployFor staging
$ shipit staging deployshipit (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 testexports
NODE_ENV=testautomatically
or
$ NODE_ENV=test gulp testIMPORTANT: You should always use
testfor yourNODE_ENVenvironment 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 tasksNOTE: The project structure changes when using the
$ frill frontend appNamecommand and the$ frill backend appNamecommand.
Questions or Bugs?
Please send us an issue, or a chat in gitter.
License
MIT
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago