README.mdView |
---|
1 | | -# production-todomvc |
| 1 | +# craftworks-todomvc |
2 | 2 | |
3 | 3 | ** work in progress ** |
4 | 4 | |
5 | | -production-quality TodoMVC |
| 5 | +real-world, production-quality TodoMVC for [Craftworks](http://craftworks.enspiral.com) |
6 | 6 | |
7 | 7 | ## stack |
8 | 8 | |
9 | 9 | - task runner: [npm scripts](http://substack.net/task_automation_with_npm_run) |
10 | 10 | - client bundler: [browserify](https://github.com/substack/browserify-handbook) |
11 | 11 | - es6/jsx transform: [babelify](https://www.npmjs.com/package/babelify) |
12 | 12 | - css transform: [sheetify](https://www.npmjs.com/package/sheetify) |
| 13 | + - configuration: [evalify](https://www.npmjs.org/package/evalify) |
| 14 | + - bulk require: [bulkify](https://www.npmjs.org/package/bulkify) |
13 | 15 | - utility functions: [ramda](http://ramdajs.com/docs/) |
14 | 16 | - directory structure: |
| 17 | + - `/config/` |
| 18 | + - `/config/defaults.js` |
| 19 | + - `/config/{ NODE_ENV }.js` |
15 | 20 | - `/app/` |
16 | 21 | - symlink `/app` to `/node_modules/app` |
17 | 22 | - e.g. |
18 | 23 | - `/app/package.json` |
19 | 24 | - `/app/client.js` |
20 | 25 | - `/app/server.js` |
21 | | - - `/app/thing/schema.js` |
22 | | - - `/app/thing/service.js` |
23 | | - - `/app/thing/client.js` |
24 | | - - `/app/thing/routes.js` |
25 | | - - `/app/thing/views/thing-list.js` |
26 | | - - `/app/thing/views/thing-list.css` |
27 | | - - `/app/thing/tests/views/thing-list.js` |
28 | | - - `/app/list-view/index.js` |
29 | | - - always require top-down (`require('things/schema')`) instead of relative. |
30 | | -- configuration: `app/config.js` and [evalify](https://www.npmjs.org/package/evalify) |
31 | | - - `/config/{ NODE_ENV }.js` |
| 26 | + - `/app/routes.js` |
| 27 | + - `/app/store.js` |
| 28 | + - `/app/models/todo.js` |
| 29 | + - `/app/services/todos.js` |
| 30 | + - `/app/clients/todos.js` |
| 31 | + - `/app/actions/todos.js` |
| 32 | + - `/app/action-types/todos.js` |
| 33 | + - `/app/reducers/todos.js` |
| 34 | + - `/app/getters/todos.js` |
| 35 | + - `/app/containers/todos.js` |
| 36 | + - `/app/components/todos/index.js` |
| 37 | + - `/app/components/todos/index.css` |
| 38 | + - always require top-down (`require('app/models/todo')`) instead of relative. |
| 39 | + - `/spec/` |
| 40 | + - e.g. |
| 41 | + - `/spec/services/todos.js` |
| 42 | + - `/spec/components/todos.js` |
| 43 | + - `/features/` |
| 44 | + - e.g. |
| 45 | + - `/features/steps.js` |
| 46 | + - `/features/todos.feature` |
32 | 47 | - data model: [tcomb](https://github.com/gcanti/tcomb) |
33 | 48 | - database: [knex](https://www.npmjs.com/package/knex) |
34 | 49 | - data validator: [tcomb-validator](https://github.com/gcanti/tcomb-validation) |
35 | 50 | - api service: [feathers-knex](https://www.npmjs.com/package/feathers-knex) |