Coder Social home page Coder Social logo

erinite's Introduction

Erinite

A hydrous arseniate of copper, of an emerald-green color; -- so called from Erin, or Ireland, where it occurs

Erinite is a web framework for interactive web applications. Erinite allows the development of both server and client in Clojure(Script) as highly decoupled, reactive, composable components.

WARNING: Erinite is pre-alpha and should be considered experimental

Rationale

Most of the existing web frameworks follow the "traditional" MVC-like models and while they work very well for what they were designed to do, the reactive models used by frameworks such as Hoplon and Pedestal appear to more closely follow the Clojure philosophies of decomplection and simplicity. Erinite is modelled after these concepts and looks similar to Pedestal. Where Erinite hopes to set itself apart from Pedestal is through a composable mix-and-match component-based architecture and heavier emphasis on functional-reactive messaging.

Design Goals

  • Loose coupling between components
  • Easy independent testing of components
  • Simulate components; support recording and playback of execution
  • Designer friendly development of UI templates
  • Reactive user interaction logic
  • Empower interactive development

The following secondary goals exist to enable to above:

  • Data-centric design
  • Reloadable, restartable compontents
  • Communication through functional-reactive messaging
  • Ease of hooking in interactive tools
  • REPL friendly API

An auxiliary goal of Erinite is to make use of existing libraries and tools where possible, to avoid duplication of effort and to allow libraries to be replaced or removed as appropriate. A core philosophy of Clojure is to write small composable libraries and Erinite should embrace this philosophy whenever possible.

These goals were chosen so that applications written using Erinite are easy to develop, easy to test, easy to think about, easy to modify and easy to extend, even when implementing complex logic or operating at scale. It is dificult to know future requirements, so enabling quick, safe (breaking changes are caught early) and convenient modification is the only way to stay ahead of the competition.

Design Overview

Erinite provides a layered architecture, splitting an application into Logic and Services. Services are components that talk to the outside world (client/server, third party services, databases, user interfaces) while Logic are functions that transform the application state.

Both the server and client follow an identical architecture (and most of the implementation is shared code).

License

Copyright © 2014 Actionable Insight Software Ltd.

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

erinite's People

Contributors

danielytics avatar

Watchers

 avatar James Cloos avatar

Forkers

eoinhurrell

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.