Realtime framework to lift heavy functionality lightening quick with Node.JS & RethinkDB!
$ git clone [email protected]:DimensionSoftware/instant-skeleton.git
$ cd instant-skeleton
$ npm install && npm test && npm start
Building your SEO-friendly, secure, realtime streaming application is simple! Instant Skeleton cobbles together the best of functional React.JS into a single, routable concept that makes your on-screen productivity incredible:
Page | declarative, isomorphic bits of React + Omniscient + RethinkDB
-
Add a Page Route & Handler
$ vim shared/routes.ls $ vim server/pages.ls
-
Add a React Component for the Page
$ vim shared/react/[ROUTE-NAME].ls
NODE_ENV
-- "development", "production" or "test"NODE_PORT
-- port to listen onDOMAIN
-- domain of siteCACHE_URL
-- format for cache urls, eg: "//cache%n.%domain"
See all configurable variables in package.json and customize with a .env file!
SERVER
- Gulp -- http://gulpjs.com
- nodemon -- https://github.com/JacksonGariety/gulp-nodemon
- webpack -- https://github.com/shama/gulp-webpack
- Koa -- http://koajs.com
- helmet -- https://github.com/venables/koa-helmet
- rate limit -- https://github.com/tunnckoCore/koa-better-ratelimit
- static cache -- https://github.com/koajs/static-cache
- rethinkdbdash -- https://github.com/neumino/rethinkdbdash
- DotEnv -- https://github.com/motdotla/dotenv
- PM2 -- https://github.com/Unitech/pm2
SHARED
- LiveScript -- https://livescript.net
- React -- http://facebook.github.io/react/docs/getting-started.html
- react router component -- https://github.com/STRML/react-router-component
- immutable.js -- https://github.com/facebook/immutable-js
- omniscient -- https://omniscientjs.github.io/
- hot-loader -- http://gaearon.github.io/react-hot-loader/
- RethinkDB -- http://rethinkdb.com
- rethinkdb sessions -- https://github.com/mikemintz/react-rethinkdb
CLIENT
- Stylus -- https://learnboost.github.io/stylus
- nib -- https://github.com/tj/nib
How much does your stack weigh? Keeping Instant Skeleton light as possible means true agility and speed. This no-compromise, SEO-friendly stack is fast, functional and streaming in realtime. RethinkDB is the single dependency to install and a cinch to scale your needs forward. The rest is up to you!
Build bigger with less: a cutting-edge HTML5 core and true first-class mobile web experiences. Got realtime physics at 60fps? Real offline? High-speed, secure websockets? We do.
From nothing, you have potential to build greatness; only-- with Instant Skeleton, you start way ahead with the best curated tools for securely lifting heavy, realtime functionality into the browser with insane productivity. Unlock the potential of HTML5 and Node.JS. Start hacking now!
-
What is "develop.com" and why am I seeing a blank page?
Prefer to specify your own domain for local development and deployment? Simply [specify that DOMAIN in a .env file](https://github.com/motdotla/dotenv) or export the DOMAIN environment variable; otherwise, append your /etc/hosts to include the develop & cache domains: ```sh read -r -d '' MYDOMAINS <<'EOF' 127.0.0.1 develop.com 127.0.0.1 cache.develop.com 127.0.0.1 cache2.develop.com 127.0.0.1 cache3.develop.com 127.0.0.1 cache4.develop.com EOF echo $MYDOMAINS >> /etc/hosts ```
-
How is this different from Meteor.JS?
+ We ♥ [NPM](http://npmjs.org). + Instant Skeleton is tiny, fast & secure. + We are streaming functional [LiveScript](http://livescript.net): write less code with fewer bugs. + Isomorphic Web Components leveraging [React](http://facebook.github.io/react/docs/getting-started.html) for data-binding.
-
How easy is this to debug & reason about?
+ Variables are **const**ants + [Immutable.JS](https://github.com/facebook/immutable-js) persistent data structures + [ES6](http://tc39wiki.calculist.org/es6/), friendly stack traces & source maps + [PM2](http://pm2.keymetrics.io/) instrumentation & process supervision for the 99.999%
-
How rapid is development?
+ [Instant "hot" live loads](https://www.youtube.com/watch?v=pw4fKkyPPg8) + Undo & Redo for [FREE](https://github.com/omniscientjs/immstruct) + Source maps
-
How can I enable & disable features with zero impact for those unused?
We've implemented [The Famous TODO Example](https://todo.powerbulletin.com) for you to demonstrate building high-level functionality with Instant Skeleton. Don't need it anymore? Disable it--easy: ```sh vim shared/features.ls ```
-
What about cacheability?
All Pages are completely cacheable! Etags & proper cache-control headers are automagically set on every Page and sessions stream in real-time on load. The idea is to persist personalization in user sessions, backed by HTML5 local storage.
-
Production deployment? We got you covered!
Export a proper NODE_ENV and expect the correct behaviors with "npm start", "npm stop" & "npm restart". Production builds shrink tiny, bootstrapping a reduced set of modules and client dependencies. [Tweak ecosystem.json](https://github.com/DimensionSoftware/instant-skeleton/blob/master/ecosystem.json) to configure [PM2](http://pm2.keymetrics.io/) production. For highly secure, end-to-end SSL, prefer termination infront of Node.JS.
-
What about Native Desktop, iOS/Droid & and mobile devices?
Instant Skeleton is engineered to drop right into a [Electron](http://electron.atom.io/), [Cordova](https://cordova.apache.org/) and [NW.js](http://nwjs.io/). Of course, [React Native](https://facebook.github.io/react-native/) provides the best native experience for mobile. Use realtime, secure WebSockets for communication back to your Instant Skeleton application!
Really digging our software architecture? Say Hello and let us know-- Instant Skeleton is battle-tested, having bootstrapped many of our most successful client projects.
We are pull-request-friendly, contribute today!
[![Fresh Software by Dimension](https://dimensionsoftware.com/static/images/github/software_by.png)](https://dimensionsoftware.com)