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

Related tags

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
  • [Docs] Use of `literal` in templates undocumented

    [Docs] Use of `literal` in templates undocumented

    Hello,

    I recently discovered template partials using literal (e.g., <some-partial-template: literal> but could not find any documentation to describe what it does. By experimentation, I found that it will strip white space from the partial, but not sure if there are other implications.

    Can this be added to the documentation?

    opened by booc0mtaco 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
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
Super minimal MVC library

Espresso.js Espresso.js is a tiny MVC library inspired by Backbone and React with a focus on simplicity and speed. We've aimed to bring the ideas of u

TechLayer 534 Dec 11, 2022
HTML Framework that allows you not to write JavaScript code.

EHTML (or Extended HTML) can be described as a set of custom elements that you can put on HTML page for different purposes and use cases. The main ide

Guseyn Ismayylov 171 Dec 29, 2022
🌟 DataFormsJS 🌟 A minimal JavaScript Framework and standalone React and Web Components for rapid development of high quality websites and single page applications.

?? Welcome to DataFormsJS! Thanks for visiting! ?? ?? ?? ?? ?? ?? 中文 (简体) 欢迎来到 DataFormsJS Español Bienvenido a DataFormsJS Português (do Brasil) Bem

DataFormsJS 156 Dec 8, 2022
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.2k Dec 28, 2022
Ember.js - A JavaScript framework for creating ambitious web applications

Ember.js is a JavaScript framework that greatly reduces the time, effort and resources needed to build any web application. It is focused on making yo

Ember.js 22.4k Jan 8, 2023
The tiny framework for building hypertext applications.

Hyperapp The tiny framework for building hypertext applications. Do more with less—We have minimized the concepts you need to learn to get stuff done.

Jorge Bucaran 18.9k Jan 4, 2023
A JavaScript Framework for Building Brilliant Applications

mithril.js What is Mithril? Installation Documentation Getting Help Contributing What is Mithril? A modern client-side JavaScript framework for buildi

null 13.5k Dec 26, 2022
JavaScript UI library for data-driven web applications

Road to 2.0 The master branch has new, in-progress version of w2ui. You might want to consider 1.5 branch that is stable and supports older browsers.

Vitali Malinouski 2.4k Jan 3, 2023
An HTML5/CSS3 framework used at SAPO for fast and efficient website design and prototyping

Welcome to Ink Ink is an interface kit for quick development of web interfaces, simple to use and expand on. It uses a combination of HTML, CSS and Ja

SAPO 1.9k Dec 15, 2022
The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.

Bootstrap Sleek, intuitive, and powerful front-end framework for faster and easier web development. Explore Bootstrap docs » Report bug · Request feat

Bootstrap 161.1k Jan 4, 2023
An open-source, self-hosted, low-code framework to build internal tools, web apps, admin panels, BI dashboards, workflows, and CRUD apps with YAML or JSON.

An open-source, self-hosted, low-code framework to build internal tools, web apps, admin panels, BI dashboards, workflows, and CRUD apps with YAML or JSON.

Lowdefy 2k Jan 4, 2023
Supabase client initialization and encapsulation in fastify framework

fastify-supabase Supabase client initialization and encapsulation in fastify framework. Install Install the package with: npm i fastify-supabase --sav

null 19 Aug 2, 2022
Brail is a framework built on NextJS for developing email templates in React, and returning HTML that is compatible with major email clients.

Brail is a framework built on NextJS for developing email templates in React, and returning HTML that is compatible with major email clients. It aims to seperate the concerns of generating the emails and delivering them.

null 121 Jan 2, 2023
The worlds smallest fully-responsive css framework

FLUIDITY A fully responsive css framework that is impossibly small HTML is almost 100% responsive out of the box. This stylesheet patches the remainin

murmurs 1.1k Sep 24, 2022
One framework. Mobile & desktop.

Angular - One framework. Mobile & desktop. Angular is a development platform for building mobile and desktop web applications using Typescript/JavaScr

Angular 85.7k Jan 4, 2023
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Supporting Vue.js Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of these awesome ba

vuejs 201.7k Jan 8, 2023
A framework for building native apps with React.

React Native Learn once, write anywhere: Build mobile apps with React. Getting Started · Learn the Basics · Showcase · Contribute · Community · Suppor

Facebook 106.8k Jan 3, 2023
The Backbone Framework

Marionette.js The Backbone Framework Marionette v5 Marionette is dropping its dependency on Backbone. That library is available here: https://github.c

Marionette.js 7.1k Jan 5, 2023