MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers

Related tags

Web Frameworks derby
Overview

Test

Derby

The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers.

Derby includes a powerful data synchronization engine called Racer that automatically syncs data among browsers, servers, and a database. Models subscribe to changes on specific objects, enabling granular control of data propagation without defining channels. Racer supports offline usage and conflict resolution out of the box, which greatly simplifies writing multi-user applications.

Derby applications load immediately and can be indexed by search engines, because the same templates render on both server and client. In addition, templates define bindings, which instantly update the view when the model changes and vice versa. Derby makes it simple to write applications that load as fast as a search engine, are as interactive as a document editor, and work offline.

See docs here: http://derbyjs.com/

Examples here: https://github.com/derbyjs/derby-examples

Getting in touch

Create an issue or reach out to the derbyjs team.

Further resources: https://derbyjs.com/resources

MIT License

Copyright (c) 2011-2020 by Nate Smith

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.

Comments
  • Fresh project does not work.

    Fresh project does not work.

    $ uname -a
    Darwin <...> 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64
    $ node -v
    v0.8.14
    $ /usr/local/share/npm/bin/derby --version
    0.3.13
    
    $ cd /tmp/testapp
    $ /usr/local/share/npm/bin/derby new
    <...>
    $ node server.js
    

    Open http://localhost:3000/ in Firefox 17. Console:

    TypeError: module.require is undefined
    <...> localhost:3000 (line 70)
    ReferenceError: DERBY is not defined
    <...> localhost:3000 (line 70)
    

    Same for Chrome.

    As a side note, do you do TDD for the framework? The last commit in lib is 2 days old while the last commit in test is 5 months old.

    opened by kaukas 41
  • sometimes the server just crashes

    sometimes the server just crashes

    i think this is racer related. not exactly sure why, but the server just crashes sometimes.

    also, you've got a ton of issues and some of them are long standing. it definitely leaves a bad impression for people who are considering to use derby for their application. just sayin'.

    opened by razic 22
  • Derby 0.5.7:

    Derby 0.5.7: "Uncaught Error: Server and client page renders do not match"

    OS: Win8 Derby: 0.5.7 Node: 0.10.12 Redis: 2.6.12 MongoDB: 2.2.2

    I recently tried to port a project to derby 0.5.7, but ran into lots of problems. I then created an example app to examine how the new version behaves in various circumstances, and ran into a problem immediately.

    I created the example app using "new derby test", and when I now try to run it I receive the error "Uncaught Error: Server and client page renders do not match".

    The app doesn't crash, but it behaves weirdly. For instance, fetches/subscribes taking place in a route during serverside render returns 'undefined' for each object found, but when I navigate to another page and back again (thus triggering a clientside render) , the fetch/subscribe works as expected.

    I assume this behaviour is caused by the previously mentioned error, but thought it worth pointing out just in case.

    opened by aommm 20
  • TEMPLATE ERROR

    TEMPLATE ERROR

    Hi guys! I got the following error after updating app dependencies to the master branch:

    TEMPLATE ERROR
    TypeError: Cannot read property 'history' of undefined
        at EventEmitter.Component (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\component.js:79:30)
        at createComponent (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:680:19)
        at partialBlock (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:847:16)
        at c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:631:48
        at renderer (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:196:12)
        at render (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:199:12)
        at Object.get (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.js:263:30)
        at Object.View._render (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.server.js:310:23)
        at View.render (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.server.js:278:10)
        at Array.View._init [as 0] (c:\Users\Ivan Garavito\Documents\GitHub\GBD\node_modules\derby\lib\View.server.js:291:5)
    

    My package.json file is:

    {
      "name": "MyApp",
      "description": "MyApp",
      "version": "0.0.0",
      "main": "./server.js",
      "dependencies": {
        "bootstrap": "git://github.com/twitter/bootstrap#master",
        "browserify": "1.13.3",
        "racer": "git://github.com/codeparty/racer#master",
        "derby": "git://github.com/codeparty/derby#master",
        "derby-ui-boot": "git://github.com/codeparty/derby-ui-boot#master",
        "express": "*",
        "gzippo": "*",
        "racer-db-mongo": ">=0.3.13",
        "underscore": "*"
      },
      "private": true
    }
    
    opened by IvanGaravito 17
  • Blank application doesn't work

    Blank application doesn't work

    NodeJS 0.10.0 DerbyJS 0.3.14 Debian 6

    Created blank application usind command 'derby new testapp' trying to start 'node server.js' and access site 'http://localhost:3000/'

    Get following error:

    TEMPLATE ERROR
    Error: write after end
        at writeAfterEnd (_stream_writable.js:125:12)
        at Gzip.Writable.write (_stream_writable.js:170:5)
        at ServerResponse.res.write (/opt/testapp/node_modules/express/node_modules/connect/lib/middleware/compress.js:81:18)
        at ServerResponse.res.write (/opt/testapp/node_modules/express/node_modules/connect/lib/middleware/compress.js:82:17)
        at Object.View._render (/opt/testapp/node_modules/derby/lib/View.server.js:114:9)
        at /opt/testapp/node_modules/derby/lib/View.server.js:76:10
        at resolve (/opt/testapp/node_modules/derby/lib/View.server.js:188:7)
        at /opt/testapp/node_modules/derby/lib/View.server.js:203:5
        at /opt/testapp/node_modules/derby/lib/View.server.js:302:11
        at /opt/testapp/node_modules/derby/lib/files.js:258:5
        at /opt/testapp/node_modules/derby/lib/files.js:236:7
        at Object.oncomplete (fs.js:93:15)
    
    events.js:72
            throw er; // Unhandled 'error' event
                  ^
    Error: write after end
        at writeAfterEnd (_stream_writable.js:125:12)
        at Gzip.Writable.write (_stream_writable.js:170:5)
        at ServerResponse.res.write (/opt/testapp/node_modules/express/node_modules/connect/lib/middleware/compress.js:81:18)
        at ServerResponse.res.write (/opt/testapp/node_modules/express/node_modules/connect/lib/middleware/compress.js:82:17)
        at Object.View._render (/opt/testapp/node_modules/derby/lib/View.server.js:130:9)
        at /opt/testapp/node_modules/derby/lib/View.server.js:76:10
        at resolve (/opt/testapp/node_modules/derby/lib/View.server.js:188:7)
        at /opt/testapp/node_modules/derby/lib/View.server.js:203:5
        at /opt/testapp/node_modules/derby/lib/View.server.js:302:11
        at /opt/testapp/node_modules/derby/lib/files.js:258:5
        at /opt/testapp/node_modules/derby/lib/files.js:236:7
        at Object.oncomplete (fs.js:93:15)
    

    no page is rendered at all.

    When commenting 2 lines:

    .use(gzippo.staticGzip(publicPath, {maxAge: ONE_YEAR}))
    .use(express.compress())
    

    Get another error:

    /opt/testapp/node_modules/derby/node_modules/racer/lib/bundle/bundle.Model.js:67
      throw new Error('Model mutation performed after bundling for clientId: ' + t
            ^
    Error: Model mutation performed after bundling for clientId: 8b4e64be-51d6-47bf-b289-ee453b001fdf
        at Model.errorOnCommit [as _commit] (/opt/testapp/node_modules/derby/node_modules/racer/lib/bundle/bundle.Model.js:67:9)
        at commitTxn (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:169:19)
        at next (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:7:26)
        at addInsertMetadata (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:164:16)
        at next (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:7:26)
        at evalTxn (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:150:16)
        at next (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:7:26)
        at logTxn (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:145:16)
        at next (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:7:26)
        at normalizeTxn (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:136:16)
        at next (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:7:26)
        at Object.run (/opt/testapp/node_modules/derby/node_modules/racer/lib/middleware.js:10:12)
        at Model.module.exports.proto._sendToMiddleware (/opt/testapp/node_modules/derby/node_modules/racer/lib/txns/txns.Model.js:494:30)
        at Model.module.exports.proto.del.fn [as del] (/opt/testapp/node_modules/derby/node_modules/racer/lib/mutators/mutators.Model.js:115:21)
        at Object.View._render (/opt/testapp/node_modules/derby/lib/View.server.js:147:9)
        at /opt/testapp/node_modules/derby/lib/View.server.js:76:10
        at resolve (/opt/testapp/node_modules/derby/lib/View.server.js:188:7)
        at /opt/testapp/node_modules/derby/lib/View.server.js:203:5
        at /opt/testapp/node_modules/derby/lib/View.server.js:302:11
        at /opt/testapp/node_modules/derby/lib/files.js:258:5
        at /opt/testapp/node_modules/derby/lib/files.js:236:7
        at Object.oncomplete (fs.js:93:15)
    

    but this time page is rendered.

    opened by amirotin 16
  • Security issue. Exposing all model to client

    Security issue. Exposing all model to client

    Problem

    1

    Let's look at chat example

    2

    If I set breakpoint on line 45 in browser (I mean equal line in compiled js)

    42        ## CONTROLLER FUNCTIONS ##
    43
    44        ready (model) ->
    45          months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
    46          displayTime = (time) ->
    

    3

    I can do window.model = model in console

    And continue script execution

    4

    In console

    for (i in model.get('users'))
      model.set('users.'+i+'.name', 'lolz')
    

    5

    Name of every user is lolz

    P.S.

    Even in production environment, when js is uglified. I can do code reformat in chrome and put a breakpoint on function that has closure for model variable. And make that function happen. Like

    c.postMessage = function() {
      return a.push("_room.messages", {userId: a.get("_session.userId"),comment: a.get("_newComment"),time: +(new Date)}), a.set("_newComment", "")
    }
    

    Where a is the model

    I catch that breakpoint when I post a new message

    Feature request 
    opened by re1ro 16
  • Some rendering issues (date, timezone)

    Some rendering issues (date, timezone)

    These are so frequent, that I thought they must be known, but they have persisted for some time.

    issue 1

    When doing an edit in html/css and then reloading browser, this happens a lot:

    image

    Stack trace:

    image

    saddle/index.js:955 image

    This issue generally goes away:

    • if I restart the app, close the browser window and try again. Sometimes have to do this restart a couple of times until it works.
    • if I do just a client side reload.

    issue 2 (fixed, I think)

    When starting an app and reloading browser until everything has finished on the server, I get this:

    image

    Has to do something with App.prototype.writeScripts() I think.

    The browser reload has to happen right after "listening" but before "something else".

    opened by ile 13
  • [0.6] textarea value binding doesn't work

    [0.6] textarea value binding doesn't work

    When attempting to bind a value into a textarea, it doesn't appear to work. See below:

    <textarea>{{#card.title}}</textarea>
    

    It sets the #card.title into the textarea just fine, but changes are never persisted to the model.

    opened by eleung 13
  • SASS Support

    SASS Support

    I know we have Stylus and LESS support, but how hard would it be to implement SASS support? I know there's a node module for handling this and it seems like it would be pretty easy to add support for this:

    https://github.com/andrew/node-sass

    Thanks!

    opened by michael-lawrence 13
  • Apps created using 'derby new appname' dont work

    Apps created using 'derby new appname' dont work

    I've created a derby app using 'derby new test' and tried to run it but got an error after requesting...

    Details here: http://stackoverflow.com/questions/13475899/derby-app-created-using-derby-new-test-not-working

    opened by VanCoding 12
  • undefined mode when starting derby and error when navigating to localhost:3000

    undefined mode when starting derby and error when navigating to localhost:3000

    I'm using Mac OS X Lion, node v0.8.2, npm v1.1.36

    After installing derby (sudo npm install -g derby) everything went smooth, no errors with installing.

    Created my first app (derby new project-name) everything went smooth, Project created!

    I go to folder and start server (node server.js)

    I get this: info - socket.io started Starting cluster with 1 workers in undefined modekill -s SIGUSR2 741to force cluster reload Go to: http://localhost:3000/ path.exists is now calledfs.exists. path.existsSync is now calledfs.existsSync. info - socket.io started path.exists is now calledfs.exists. path.existsSync is now calledfs.existsSync.

    Not sure what that means, so then I navigate to http://localhost:3000 and I get this: /Users/joebartels/project-name/node_modules/gzippo/lib/staticGzip.js:108 staticSend(req, res, next, o); ^ TypeError: undefined is not a function at pass (/Users/joebartels/project-name/node_modules/gzippo/lib/staticGzip.js:108:4) at module.exports (/Users/joebartels/project-name/node_modules/gzippo/lib/staticGzip.js:177:12) at Object.oncomplete (fs.js:297:15)

    opened by joebartels 11
  • [Bug] {{if @content}} breaks parent reference in conditionals when using

    [Bug] {{if @content}} breaks parent reference in conditionals when using "within"

    Short summary: When using within with custom content that has {{if parent.method()}}, the parent reference is wrong when the inner component surrounds the content usage with {{if @content}}. The parent reference incorrectly resolves to the inner component under those two exact conditions, when it should resolve to the outer component.

    I wrote failing test cases in Derby that demonstrate this bug, on the branch bug-within-if-content-parent: https://github.com/derbyjs/derby/commit/b4f45da5099f55ac64f97729498725db45937a07


    Say you have a picture-frame component that allows the inclusion of custom {{content}}. When using picture-frame from another component, say showcase, the default is that the "passed-in" custom content uses the context of showcase, where the custom content is declared.

    It is possible to use the within attribute to have the custom content use the context internal to picture-frame, instead of the default of showcase. If the custom content also needs to use controller methods from the outer showcase, it can refer to them by {{parent.method()}}.

    That all works fine, but there is a bug when both these are true:

    1. The custom content uses a {{if parent.method()}} binding.
      • The text binding{{parent.method()}} works regardless of the second point.
    2. picture-frame surrounds the content with {{if @content}} {{content}} {{/if}}.
      • {{if content}} (model path instead of attribute path) allows the first point to work fine.

    Full example below.

    showcase.html:

    <index:>
    <view is="picture-frame" within>
      {{frameInternalPath}}
      <!-- This works fine in both cases -->
      {{parent.showcaseName()}}
      <!-- This breaks when picture-frame uses {{if @content}} -->
      {{if parent.showcaseName()}} Uh oh! {{/if}}
    </view>
    

    showcase.js:

    class Showcase {
      showcaseName() { return 'The Showcase'; }
    }
    

    picture-frame.html:

    <index:>
    {{if @content}}
      {{content}}
    {{/if}}
    

    picture-frame.js:

    class PictureFrame {
      init() {
        this.model.set('frameInternalPath', 'Hello');
      }
    }
    
    opened by ericyhwang 0
  • [Bug] OR does not works with arrays in templates

    [Bug] OR does not works with arrays in templates

    if or statement in templates does not works when first argument is empty array and second is true (or truthy variable).

    Derby version is 0.10.28. Not last, but 29 does not fix this as i see in releases.

    model.set('some.list', []);
    model.set('varTrue', true);
    
    {{if some.list || true}}
    Never reached
    {{/if}}
    
    {{if some.list || varTrue}}
    Never reached
    {{/if}}
    
    {{if true || some.list}}
    This works
    {{/if}}
    
    {{if varTrue || some.list}}
    This works too
    {{/if}}
    
    opened by IAkumaI 0
  • [Bug] Query ref does not works in scoped models

    [Bug] Query ref does not works in scoped models

    1. Create some component
    import {Component} from 'derby';
    
    export class MyComp extends Component {
        static readonly is = 'my-comp';
        static readonly view = __dirname;
    
        create() {
            let $query = this.model.query('collection', {query:1});
            $query.subscribe();
            $query.ref('list'); // Now list will always empty array, but $query.get() contains items
    
            let $query = this.model.root.query('collection', {query:1});
            $query.subscribe();
            this.model.ref('list', $query); // But root-variant works
        }
    }
    
    opened by IAkumaI 0
  • [Bug] Derby tries to rewrite model with external bindings when templates updated in dev mode

    [Bug] Derby tries to rewrite model with external bindings when templates updated in dev mode

    1. I have a component with search-by-query. Something like this:
    <input value="{{ query }}" />
    
    import {Component} from 'derby';
    
    export class UserSearchForm extends Component {
        static readonly is = 'user-search-form';
        static readonly view = __dirname;
    
        create() {
            this.model.on('all', 'query', () => {
                this.onSearch();
            });
    
            this.onSearch();
        }
    
        onSearch() {
            // Omitting unsubscribe old query and other stuff. It does no matter, i tested
            let $query = this.model.root.query('user', {some: this.model.get('query')});
            $query.subscribe(() => {
                    this.model.ref('users', $query); // Important to create ref to reproduce the bug
            });
        }
    }
    
    1. And page template. Important to create binding with name as-ref (users) and bing it to __page
    <view is="user-search-form" users="{{ _page.users }}" />
    {{each _page.users as #user}}
    {{ #user.id }}<br/>
    {{/each}}
    
    1. Now run and make some searches - it works. Then change index.html template (let add some symbol) in dev mode with live-update. And search again. And change template and search again and etc.

    After several iterates derby will try to write to users, but there is no sets in code. I guess this is because it tries to rewrite old items in _page.users with new search results ot someting like this.

    opened by IAkumaI 0
Releases(v2.0.1)
  • v2.0.1(Dec 15, 2022)

    What's Changed

    • Add test checking deferred destroy by @craigbeck in https://github.com/derbyjs/derby/pull/613

    Full Changelog: https://github.com/derbyjs/derby/compare/v2.0.0...v2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Dec 12, 2022)

    What's Changed

    • Use eslint instead of jshint by @craigbeck in https://github.com/derbyjs/derby/pull/604
    • Fix binding binding.eventmodels initialization by @craigbeck in https://github.com/derbyjs/derby/pull/608
    • Update dependencies by @craigbeck in https://github.com/derbyjs/derby/pull/606
    • Add behavioral test for binding bug with view function calls on array items by @ericyhwang in https://github.com/derbyjs/derby/pull/609
    • Extract browserify code by @craigbeck in https://github.com/derbyjs/derby/pull/607
    • Derby2 pre-webpack changes by @craigbeck in https://github.com/derbyjs/derby/pull/610
    • Derby 2 by @craigbeck in https://github.com/derbyjs/derby/pull/612

    Full Changelog: https://github.com/derbyjs/derby/compare/v1.1.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Nov 15, 2022)

    What's Changed

    • Stop testing EOL node versions 8 and 10 by @craigbeck in https://github.com/derbyjs/derby/pull/603
    • Safe requestAnimationFrame and nextTick methods by @craigbeck in https://github.com/derbyjs/derby/pull/611

    Full Changelog: https://github.com/derbyjs/derby/compare/v1.0.1...v1.1.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Mar 31, 2022)

    What's Changed

    • Add context to error on Unexpected token error by @craigbeck in https://github.com/derbyjs/derby/pull/599

    New Contributors

    • @craigbeck made their first contribution in https://github.com/derbyjs/derby/pull/599

    Full Changelog: https://github.com/derbyjs/derby/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jun 14, 2021)

    This is a major release of Derby, however it should largely be backwards compatible. The included changes from Racer were to refactor existing functionality for performance, so this version bump gives consumers of the library a chance to test the changes first before updating.

    Source code(tar.gz)
    Source code(zip)
  • v0.10.31(May 25, 2021)

    • https://github.com/derbyjs/derby/pull/595 - test-utils .to.render assertion: Reset page/component state between each render pass (@ericyhwang)
      • This solely changes test util code and should have zero effect on production code.
    Source code(tar.gz)
    Source code(zip)
  • v0.10.30(Feb 9, 2021)

    • https://github.com/derbyjs/derby/pull/593 - Fix typo in changeImmediate listener for event.passed (@ericyhwang)
      • This fixes an issue using derby <= 0.10.29 with [email protected], where highlighting some bound text and typing over it (replacing it) causes the cursor to jump to the end of the input field.
    Source code(tar.gz)
    Source code(zip)
  • v0.10.29(Jun 24, 2020)

    Bugfixes

    • https://github.com/derbyjs/derby/pull/583 - Fix a Component#destroy error when no components on the page use bindings. (@ericyhwang)
      • The fixed issue should have only affected very small test cases, since most real Derby apps will have at least one {{...}} binding.

    test-util updates

    • https://github.com/derbyjs/derby/pull/583 - ComponentHarness now tracks the pages it creates, and the DomTestRunner then uses that to destroy the created pages in an afterEach. (@ericyhwang)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.28(Apr 21, 2020)

    https://github.com/derbyjs/derby/pull/581 - Improve test-utils assertions (@ericyhwang)

    • In failure messages, state whether it was the HTML or DOM rendering that failed.
      • This makes it easier to debug test failures.
    • .to.render() - Compare DOM rendering to the HTML before components' create() methods are called.
      • This fixes an issue where the assertion was improperly failing when a component modified its DOM in create().
    • Normalize HTML before comparisons.
      • This fixes an issue where .to.render() assertions would fail when templates used HTML entities like &nbsp;.
    Source code(tar.gz)
    Source code(zip)
  • v0.10.27(Jan 23, 2020)

    • https://github.com/derbyjs/derby/pull/576 - Fix ShareDB "Invalid or unknown message" warnings when using auto-refresh (@IAkumaI, @ericyhwang)
      • Auto-refresh is generally only used in development environments
    Source code(tar.gz)
    Source code(zip)
  • v0.10.26(Dec 11, 2019)

  • v0.10.11(Aug 26, 2019)

    • https://github.com/derbyjs/derby/pull/560 - fix: Fix auto-refresh for views and styles when running multiple Derby apps in a single Node server (@IAkumaI)
    Source code(tar.gz)
    Source code(zip)
Owner
DerbyJS
DerbyJS is an application framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers
DerbyJS
Component based MVC web framework for nodejs targeting good code structures & modularity.

Component based MVC web framework for nodejs targeting good code structures & modularity. Why fortjs Based on Fort architecture. MVC Framework and fol

Ujjwal Gupta 47 Sep 27, 2022
Realtime.js - a fast frontend framework based on Web-Components.

Realtime.js is a fast frontend framework based on Web-Components and Proxies. It has a lot of features to simplify your way of live as a vanillajs developer. The framework is programmed in such a way, that you can edit it yourself if you need additional features.

Kilian Hertel 7 Nov 1, 2022
A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8) 🚀

A progressive Node.js framework for building efficient and scalable server-side applications. Description Nest is a framework for building efficient,

nestjs 53.2k Dec 31, 2022
Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.

Functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS. Ecosystem Name Description @marblejs/core F

Marble.js 2.1k Dec 16, 2022
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks

Actionhero The reusable, scalable, and quick node.js API server for stateless and stateful applications NPM | Web Site | Latest Docs | GitHub | Slack

Actionhero 2.3k Jan 4, 2023
🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈

Midway - 一个面向未来的云端一体 Node.js 框架 English | 简体中文 ?? 欢迎观看 Midway Serverless 2.0 发布会回放: https://www.bilibili.com/video/BV17A411T7Md 《Midway Serverless 发布

Midway.js 6.3k Jan 8, 2023
LoopBack makes it easy to build modern API applications that require complex integrations.

LoopBack makes it easy to build modern applications that require complex integrations. Fast, small, powerful, extensible core Generate real APIs with

StrongLoop and IBM API Connect 4.4k Jan 4, 2023
A framework for real-time applications and REST APIs with JavaScript and TypeScript

A framework for real-time applications and REST APIs with JavaScript and TypeScript Feathers is a lightweight web-framework for creating real-time app

Feathers 14.3k Jan 1, 2023
Use full ES2015+ features to develop Node.js applications, Support TypeScript.

ThinkJS Use full ES2015+ features to develop Node.js applications, Support TypeScript. 简体中文文档 Installation npm install -g think-cli Create Application

ThinkJS 5.3k Dec 30, 2022
A well documented set of tools for building node web applications.

Perk Framework Perk is a well documented set of tools for building node web applications. The goal of Perk is first and foremost to provide a well doc

Aaron Larner 179 Oct 26, 2022
API Services Made Easy With Node.js

Nodal API Services Made Easy with Node.js View the website at nodaljs.com. Nodal is a web server and opinionated framework for building data manipulat

Keith Horwood 4.5k Dec 26, 2022
Fast and low overhead web framework, for Node.js

An efficient server implies a lower cost of the infrastructure, a better responsiveness under load and happy users. How can you efficiently handle the

Fastify 26k Jan 2, 2023
🚀 The Node.js Framework highly focused on developer ergonomics, stability and confidence

Sponsored by FOSS United is a non-profit foundation that aims at promoting and strengthening the Free and Open Source Software (FOSS) ecosystem in Ind

AdonisJS Framework 13.4k Dec 31, 2022
Fast, unopinionated, minimalist web framework for node.

Fast, unopinionated, minimalist web framework for node. const express = require('express') const app = express() app.get('/', function (req, res) {

null 59.5k Jan 5, 2023
:rocket: Progressive microservices framework for Node.js

Moleculer Moleculer is a fast, modern and powerful microservices framework for Node.js. It helps you to build efficient, reliable & scalable services.

MoleculerJS 5.5k Jan 4, 2023
Node.js framework

Node.js framework Total.js framework is a framework for Node.js platfrom written in pure JavaScript similar to PHP's Laravel or Python's Django or ASP

Total.js 4.2k Jan 2, 2023
:evergreen_tree: Modern Web Application Framework for Node.js.

Trails is a modern, community-driven web application framework for Node.js. It builds on the pedigree of Rails and Grails to accelerate development by

Trails 1.7k Dec 19, 2022
A serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gateway, Lambda)

---- Sorry, this project is not maintained anymore. ---- dawson is a serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gate

dawson 717 Dec 30, 2022
Build Amazon Simple Queue Service (SQS) based applications without the boilerplate

sqs-consumer Build SQS-based applications without the boilerplate. Just define an async function that handles the SQS message processing. Installation

BBC 1.4k Dec 26, 2022