/instant-skeleton

Lift realtime functionality into the browser with insane productivity

Primary LanguageLiveScript

[![Instant Skeleton](https://dimensionsoftware.com/images/skull_keys.png)](https://dimensionsoftware.com)

Instant-Skeleton

![Gitter](https://badges.gitter.im/Join Chat.svg) Dimension Software

Build Bigger with Less

Best realtime framework to lift heavy functionality lightening quick with Node.JS

DOCUMENTATION . DEMO

Quick Start

$ git clone git@github.com:DimensionSoftware/instant-skeleton.git
$ cd instant-skeleton
$ npm install && npm test && npm start

Create Your First Page

Building your SEO-friendly, realtime 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 + Immutable.JS

  1. Add a Page Route

     $ vim shared/routes.ls
    
  2. Add a Page Handler for the Route

     $ vim server/pages.ls
    
  3. Add a Component for the Page

     $ vim shared/react/[ROUTE-NAME].ls
    

Environment & "npm config" Variables

  • NODE_ENV -- "development", "production" or "test"
  • NODE_PORT -- port to listen on
  • DOMAIN -- domain of site
  • CACHE_URL -- format for cache urls, eg: "//cache%n.%domain"

See all configurable variables in package.json and customize with a .env file!

References

SERVER

SHARED

CLIENT

Principles

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. Zero external service dependencies make deploying a cinch. Persistence is LevelDB. The rest is up to you!

With technologies like Famo.us and a savvy, cutting-edge HTML5 core, Instant Skeleton provides true first-class mobile 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 lifting heavy, realtime functionality into the browser with insane productivity. Unlock the potential of HTML5 and Node.JS. Start hacking now!

FAQ

  1. 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
    ```
    
  2. How is this different from Meteor.JS?

    + We &hearts; [NPM](http://npmjs.org).
    + Instant Skeleton is tiny, fast &amp; 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.
    
  3. 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/), useful stack traces &amp; source maps
    + Check out our [perf](https://github.com/DimensionSoftware/instant-skeleton/tree/perf) branch for runtime profiling
    
  4. How rapid is development?

    + [Instant "hot" live loads](https://www.youtube.com/watch?v=pw4fKkyPPg8)
    + Undo &amp; Redo for [FREE](https://github.com/omniscientjs/immstruct)
    + Source maps
    
  5. 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
    ```
    
  6. How can I add my own data store?

    Simply require &amp; hook it into your Page handler or Resource:
    
    ```sh
    vim server/pages.ls
    vim server/resources.ls
    ```
    
  7. How easy is session management?

    Sessions are streamed realtime with [LevelDB](https://github.com/google/leveldb) &amp; [Primus](https://github.com/primus/primus).
    
    ```sh
    vim server/pages.ls
    vim client/layout.ls
    vim shared/react/HomePage.ls
    ```
    
  8. What about cacheability?

    All Pages are completely cacheable!  Etags &amp; proper cache-control headers are automagically set on every Page and sessions stream in real-time on Page load.  The idea is to persist personalization in user sessions.
    
  9. Production deployment? We got you covered!

    Export a proper NODE_ENV and expect the correct behaviors with "npm start" and "npm stop".  We recommend [Systemd](http://www.certdepot.net/rhel7-get-started-systemd/) or [Upstart](https://blog.jalada.co.uk/simple-upstart-script-to-keep-a-node-process-alive/) to keep your process alive.  Production builds shrink tiny, bootstrapping a reduced set of modules and client dependencies.
    
  10. What about iOS/Droid & and mobile devices?

    Instant Skeleton is designed to drop right into a Cordova Container and NW.js! React Native support is on the horizon.

  11. Does this work with io.js?

    Absolutely.

Really digging our software architecture? Say Hello and let us know: keith@dimensionsoftware.com

Contributors & Idea Factories

Keith Hoerling . John Beppu . Matt Elder . Dave Seleno . Mark Huge

According to GitHub . Become a Contributor . Pull request friendly!

  • ADD: Famo.us+React
  • ADD: Viewdocs
  • ADD: Selenium and more tests
  • ADD: Coverage.js working with LiveScript
  • ADD: sum todos in Navigation
  • FIX: whitelist to ipv6 match

 

[![Fresh Software by Dimension](https://dimensionsoftware.com/images/software_by.png)](https://dimensionsoftware.com)