Exseed
A highly extensible nodejs framework
Features
- Highly Extensible
- Easy to Use
- Full Stack
- ORM Integrated
- ES6/ES7 Syntax
- Isomorphic
Workflow & Implementation Details
Item | Choice |
---|---|
Build Tool | Webpack |
Automation | Gulp |
Backend | Node, Express(>=4.0.0) |
ORM | Waterline |
Frontend | React, Redux/Alt, React-Router |
Testing | Mocha |
CI | Travis CI |
Compare to Other Frameworks
Exseed | Express | Koa | Sails | Hapi | |
---|---|---|---|---|---|
Extensibility | ★★★★★ | ★★★★★ | ★★★★☆ | ★★★★☆ | ★★★★☆ |
Threshold | ★★★☆☆ | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ | ★★☆☆☆ |
Build Speed | ★★★★★ | ★☆☆☆☆ | ★☆☆☆☆ | ★★★★☆ | ★☆☆☆☆ |
Full Stack | ✔ | ✔ | |||
ORM | ✔ | ✔ | |||
Modern Syntax | ✔ | ✔ | |||
Isomorphic | ✔ |
Usage
- Install CLI
$ npm install -g exseed-cli
-
Clone the boilerplate project
-
Install dependencies
$ cd exseed-boilerplate
$ npm install
- Run it
$ sd build --watch
$ sd init
$ sd serve
Example - Todo List
- File Structure
- <project root>
----- settings.js
----- exseed.core/
----- todoapp/
--------- settings.js
--------- models.js
--------- routes.js
--------- flux/
------------- boot.js
------------- routes.js
------------- views/pages/MainPage.js
----- <other_app_1>/
----- <other_app_2>/
----- <other_app_n>/
- Update installed apps
Tell exseed what apps you want to use
// settings.js installedApps: './exseed.core' // other apps './todoapp' // other settings;
- The server side
// todoapp/settings.js name: 'todo';
// todoapp/models.js const todolist = identity: 'todolist' attributes: content: type: 'string' required: true ;
// todoapp/routes.js ; { app; app;}
- The client side
All react related files are inside todoapp/flux
folder
// todoapp/flux/boot.js ;;;; ;
// todoapp/flux/routes.js ;; ;; <Route path="/todo" component=MainPage EXSEED_APP_NAME=settingsname />;
// todoapp/flux/views/pages/MainPage.js ;from '../../../../exseed.core/flux/views/layouts/BaseLayout'; Component ... { const scripts = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js' '/todo/js/bundle.js' ; return <BaseLayout title="Exseed - Todo" scripts=scripts> <h1>Todo</h1> <input type="text" onKeyDown=thishandleKeyDown onChange=thishandleChange value=thisstatecontent /> <ul> thisstatetodos </ul> </BaseLayout> ; };
See the complete todo app