All Projects → gnodi → Danf

gnodi / Danf

Licence: other
Danf is a Node.js full-stack isomorphic OOP framework allowing to code the same way on both client and server sides. It helps you to make deep architectures and handle asynchronous flows in order to help in producing scalable, maintainable, testable and performant applications.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Danf

Awesome Nextjs
📔 📚 A curated list of awesome resources : books, videos, articles about using Next.js (A minimalistic framework for universal server-rendered React applications)
Stars: ✭ 6,812 (+11644.83%)
Mutual labels:  framework, universal, isomorphic
Celestite
Beautifully reactive, server-side rendered Svelte apps w/ a Crystal backend
Stars: ✭ 185 (+218.97%)
Mutual labels:  framework, universal, isomorphic
Catberry
Catberry is an isomorphic framework for building universal front-end apps using components, Flux architecture and progressive rendering.
Stars: ✭ 793 (+1267.24%)
Mutual labels:  framework, universal, isomorphic
Nuxt.js
The Intuitive Vue(2) Framework
Stars: ✭ 38,986 (+67117.24%)
Mutual labels:  framework, universal, isomorphic
Hackernews
HackerNews clone built with Nuxt.js
Stars: ✭ 758 (+1206.9%)
Mutual labels:  universal, isomorphic
Opulence
A simple, secure, and scalable PHP application framework
Stars: ✭ 723 (+1146.55%)
Mutual labels:  framework, dependency-injection
Recoil
Asynchronous coroutines for PHP 7.
Stars: ✭ 765 (+1218.97%)
Mutual labels:  asynchronous, event
Adapt
Advanced Developer Async Programming Toolkit
Stars: ✭ 26 (-55.17%)
Mutual labels:  event, framework
Vortigern
A universal boilerplate for building web applications w/ TypeScript, React, Redux, Server Side Rendering and more.
Stars: ✭ 647 (+1015.52%)
Mutual labels:  universal, isomorphic
Usus
Webpage pre-rendering service. ⚡️
Stars: ✭ 804 (+1286.21%)
Mutual labels:  universal, isomorphic
Isomorph
Shared utilities for browsers and Node.js
Stars: ✭ 9 (-84.48%)
Mutual labels:  universal, isomorphic
Apk Dependency Graph
Android class dependency visualizer. This tool helps to visualize the current state of the project.
Stars: ✭ 675 (+1063.79%)
Mutual labels:  architecture, dependency-injection
Universal
Seed project for Angular Universal apps featuring Server-Side Rendering (SSR), Webpack, CLI scaffolding, dev/prod modes, AoT compilation, HMR, SCSS compilation, lazy loading, config, cache, i18n, SEO, and TSLint/codelyzer
Stars: ✭ 669 (+1053.45%)
Mutual labels:  universal, isomorphic
Inchat
一个轻量级、高效率的支持多端(应用与硬件Iot)的可分布式、异步网络应用通讯框架
Stars: ✭ 654 (+1027.59%)
Mutual labels:  asynchronous, framework
Webpack Isomorphic Dev Middleware
The webpack-dev-middleware, but for isomorphic applications
Stars: ✭ 38 (-34.48%)
Mutual labels:  universal, isomorphic
Snowball
Android Clean Code Sample Project
Stars: ✭ 26 (-55.17%)
Mutual labels:  architecture, dependency-injection
Core
Package core is a service container that elegantly bootstrap and coordinate twelve-factor apps in Go.
Stars: ✭ 34 (-41.38%)
Mutual labels:  framework, dependency-injection
Push Starter
React Redux Starter with SSR 🤖
Stars: ✭ 43 (-25.86%)
Mutual labels:  universal, isomorphic
Frint
Modular JavaScript framework for building scalable and reactive applications
Stars: ✭ 608 (+948.28%)
Mutual labels:  framework, dependency-injection
Universal React Demo
ES6 demo of a simple but scalable React app with react-router, code splitting, server side rendering, and tree shaking.
Stars: ✭ 50 (-13.79%)
Mutual labels:  universal, isomorphic

Danf

NPM Version NPM Downloads Build Status Dependency Status

Introduction

Danf is a Node.js full-stack isomorphic OOP framework allowing to code the same way on both client and server sides. It helps you to make deep architectures and handle asynchronous flows in order to help in producing scalable, maintainable, testable and performant applications.

Why use node Node.js instead of another technology?

You certainly can find lots of reasons but there are 2 which make the success of Node.js before all others:

  • use the same language on both client and server sides
  • handle I/O in an asynchronous way to maximize your CPU load thanks to the main event loop

Why use Danf?

Danf reinforces the promises of Node.js:

  • use the same code on both client and server sides (in a classic node.js style)
  • maximize the power of asynchronicity thanks to a nice and innovative abstraction layer (built upon Async.js)

Why use Danf instead of another framework?

Danf is not better as any other existing framework or library but it has its own proposal. Danf is an agnostic framework: it will not force you to use sockets or this or that database or a big client library phagocyting all the others (with heavy impact on architecture, bookmarquing, security, ...). In fact, it just provides a layer to help in making strong architectures and use the power of Node.js in an easy way. You can still use all your prefered client or server libraries/packages with Danf!

Here is a fast description of its 3 layers architecture:

  • Model: implement your code in "classes" and use a dynamic dependency injection (SOA) to make a low coupling between your components
  • Sequencing: abstract parallel and series synchronous and asynchronous executions of methods of your model instances
  • Event: plug events on your sequences (HTTP requests, socket messages, commands, DOM events, ...)

You can make a lot of different applications with Danf:

  • Single page website (AJAX, sockets)
  • REST API
  • Task executor
  • Utility module (on client or/and server side) for modular achitecture
  • ...

You can code big (and small!) performant and modular applications with a deep and strong architecture in an easy way and share your code thanks to a transparent module mechanism only requiring to use npm in the most standard way.**

Installation

Create a proto application

The better way to create a new application/danf module (in Danf an application is a danf module and conversely) is to let Yeoman do it for you!

First, install Yeoman:

$ npm install -g yo

Then, install the specific generator for Danf applications:

$ npm install -g generator-danf

Finally, create an application using:

$ yo danf

Start the server

After creating your application, you should be able to start the server in this way:

$ node danf serve

This will create a server and process client side files automatically rebuilding each time a file is changed. At the end of this processing, a welcome message will be available at http://localhost:3080!

Use node danf serve --env prod to start the server in prod environment (less debugging, more performances!).

Run the tests

You can run the tests of your application thanks to:

$ make test

Architecture

Here is a diagram of the macro architecture of Danf:

architecture

Features

Here is a list of the major features proposed by Danf:

  • An object-oriented programming layer (with ensured interfaces).
  • An inversion of control design (dependency injection via configuration files).
  • A perfect isomorphism allowing to use the same code on both client and server sides (in a standard node.js coding style).
  • A homogeneous way to handle all kind of events (HTTP requests, socket messages, commands, DOM events, ...).
  • An original abstraction layer over Async.js to manage asynchronicity.
  • A helper to develop ultra performant AJAX and "real time" applications supporting deep linking.
  • A natural approach to share your modules and use others just using npm.
  • Some other helpful sub features to easily manage cookies, session, ...

Danf is stable and is already used by some applications in production.

Community

Danf is a young framework and the community is still small but active. You can post your issues on github or on stack overflow with the tag danf and you will get an answer as quickly as possible.

If you want to contribute, here is a not limited list of how to do:

  • Fork the project on github and improve features, documentation, ...
  • Code your own module. In Danf, an application is a danf module and conversely. This way you can easily share your modules with other people simply using npm (here is a list of available danf modules).
  • Participate to the community in asking questions in the issues or on stack overflow.

Danf is always improving. Keep an eye on its new versions and features!

Documentation

Get a quick overview of the framework architecture and possibilities.

Learn more about the framework in the documentation.

Tests

You can run the tests of the framework using:

$ make test

License

Open Source Initiative OSI - The MIT License

http://www.opensource.org/licenses/mit-license.php

Copyright (c) 2014-2016 Thomas Prelot

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].