Realtime MVC Framework for Node.js

Related tags

Web Frameworks sails
Overview

Sails.js logo

Website   Get Started   Docs   News   Submit Issue

NPM version   Gitter   Twitter Follow

Sails.js is a web framework that makes it easy to build custom, enterprise-grade Node.js apps. It is designed to resemble the MVC architecture from frameworks like Ruby on Rails, but with support for the more modern, data-oriented style of web app & API development. It's especially good for building realtime features like chat.

Since version 1.0, Sails supports await out of the box. This replaces nested callbacks (and the commensurate error handling) with simple, familiar usage:

var orgs = await Organization.find();

Installation  

With node installed:

# Get the latest stable release of Sails
$ npm install sails -g
Upgrading from an earlier version of Sails?

Upgrade guides for all major releases since 2013 are available on the Sails website under Upgrading.

Your First Sails Project

Create a new app:

# Create the app
sails new my-app

Lift sails:

# cd into the new folder
cd my-app

# fire up the server
sails lift

Screenshot from the original Sails video

For the most up-to-date introduction to Sails, get started here.

Compatibility

Sails is built on Node.js, Express, and Socket.io.

Sails actions are compatible with Connect middleware, so in most cases, you can paste code into Sails from an existing Express project and everything will work-- plus you'll be able to use WebSockets to talk to your API, and vice versa.

The ORM, Waterline, has a well-defined adapter system for supporting all kinds of datastores. Officially supported databases include MySQL, PostgreSQL, MongoDB, Redis, and local disk / memory. Community adapters exist for CouchDB, neDB, SQLite, Oracle, MSSQL, DB2, ElasticSearch, Riak, neo4j, OrientDB, Amazon RDS, DynamoDB, Azure Tables, RethinkDB and Solr; for various 3rd-party REST APIs like Quickbooks, Yelp, and Twitter, including a configurable generic REST API adapter; plus some eclectic projects.

Powered by MySQL                                

For the latest core adapters and notable community adapters, see Available Adapters.

Tutorial Course

Books

Support

Need help or have a question?

Issue Submission

Please read the submission guidelines and code of conduct before opening a new issue. Click here to search/post issues in this repository.

Contribute

There are many different ways you can contribute to Sails:

Please carefully read our contribution guide and check the build status for the relevant branch before submitting a pull request with code changes.

Links

Team

Sails is actively maintained with the help of many amazing contributors. Our core team consists of:

Mike McNeil Rachael McNeil John Abrams Madison Hicks Eric Shaw
Mike McNeil Rachael McNeil John Abrams Madison Hicks Eric Shaw

Our company designs/builds Node.js websites and apps for startups and enterprise customers. After building a few applications and taking them into production, we realized that the Node.js development landscape was very much still the Wild West. Over time, after trying lots of different methodologies, we decided to crystallize all of our best practices into this framework. Six years later, Sails is now one of the most widely-used web application frameworks in the world. I hope it saves you some time! :)

License

MIT License Copyright © 2012-present, Mike McNeil

Sails is built around so many great open-source technologies that it would never have crossed our minds to keep it proprietary. We owe huge gratitude and props to Ryan Dahl (@ry), TJ Holowaychuk (@tj), Doug Wilson (@dougwilson) and Guillermo Rauch (@rauchg) for the work they've done, as well as the stewards of all the other open-source modules we use. Sails could never have been developed without your tremendous contributions to the JavaScript community.

A squid peering inside a book, halation and cosmic Sails.js knowledge emanating from the pages of the substantial tome

Comments
  • Associations

    Associations

    Update:

    Sails v0.10.0-rc3 is now available on npm.

    Upgrading to Sails v0.10 beta:

    Install: $ sudo npm install -g sails@beta -g

    Docs: beta.sailsjs.org

    Also see: https://github.com/balderdashy/waterline-docs

    Migration Guide for v0.9.x apps: https://github.com/balderdashy/sails-docs/blob/master/Migration-Guide.md

    We're working on improving docs in general, but we could really use your help- please feel free to submit pull requests to https://github.com/balderdashy/sails-docs. The changes go live to beta.sailsjs.org (and eventually sailsjs.org proper, when we set the latest tag on v0.10)

    opened by mikermcneil 254
  • [FEATURE REQUEST] Recursively populate

    [FEATURE REQUEST] Recursively populate

    I'm on Sails 0.10. I have a Model which has a collection of Model which in turn has more Model. I know how to populate the first child but how do I recursively populate the rest of the children?

    opened by pixelfreak 103
  • Move to gulp instead of grunt

    Move to gulp instead of grunt

    Hey, All the cool guys are moving to gulp :)

    Few reasons to consider gulp vs grunt:

    1. i've used it and absolutely love it
    2. uses stream and code vs configuration approach, which makes the code much more readable
    3. task dependency done correctly
    4. faster

    I've run a few tests on some of my projects and the results are really great. lines of code reduced and the all this grunt config(ala xml but in json) is gone.

    what do you think?

    opened by BlueHotDog 95
  • support for custom indexes

    support for custom indexes

    It would be nice to be able to specify custom indexes. so for example index: "customIndex" the string customIndex would get passed along to the adapter.

    If the index was a bool then the current behavior would hold.

    opened by wanderer 92
  • Sails Memory Leak or Keep increasing

    Sails Memory Leak or Keep increasing

    I have created a new sails js app and did not change any code in it.

    Than I used pm2 to launch two instance of that app. Memory keep increasing without hitting app even once.

    I have done the same with basic express.js app with following code but it does not increase memory

    " var express = require('express'); var app = express();

    app.get('/', function (req, res) { res.send('Hello World!'); });

    var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port); }); "

    screenshot from 2015-07-21 14 01 13

    question 
    opened by shumailarshad 83
  • Need a way to query associated object's attributes

    Need a way to query associated object's attributes

    If an object has an associated collection, it is not clear how (or even if its possible) to query into that associated object stuff.

    Pet has an Owner Owner has an emailAddress

    How do I select all of the Pets whose owner has an emailAddress == "[email protected]"

    While its easy to do 2 queries to accomplish this:

    1. Find the owner who has an emailAddress == "[email protected]" and get that persons id
    2. Find all Pets who have the id from query 1

    It seems that there would be a better syntax for this:

    Pet.findAll({ "owner.emailAddress" : "[email protected]" })
    

    Now whether or not this is internally optimized or just syntactic sugar doesn't matter, its much easier to read and write.

    Further, if a Pet has a breed how would I select the email addresses of all of the owners whose Pet.breed == "beagle"

    Owner.findAll({"pet.breed" : "beagle"})
    
    opened by gregorypierce 77
  • Add support for .populate({ select: [] })

    Add support for .populate({ select: [] })

    The select is being ignored.. getting back the full records instead of just the titles.

    Model.find().populate(assoc.alias, { select: ['title']});
    

    Not sure if its only on mongo?

    UPDATE @dmarcelino: changed this issue into a feature request.

    opened by anasyb 64
  • "sails debug" on node v0.12.0 throwing error EADDRINUSE

    Running Sails v0.11.0 and Node v0.12.0

    When I run

    sails new app; cd app
    sails debug
    

    Console logs...

    error: Grunt :: Error: listen EADDRINUSE
        at exports._errnoException (util.js:746:11)
        at Agent.Server._listen2 (net.js:1129:14)
        at listen (net.js:1155:10)
        at Agent.Server.listen (net.js:1240:5)
        at Object.start (_debugger_agent.js:20:9)
        at startup (node.js:86:9)
        at node.js:814:3
    

    No conflicting ports were listening prior to running sails. Looking at travis.yml is only node v0.10.x supported currently?

    bug 
    opened by MikeCostello 64
  • Swagger #feature

    Swagger #feature

    Add Swagger to AUTO document the API in any project: https://developers.helloreverb.com/swagger/

    It would go well with the overall Sails mentality.

    sample in use here: http://swagger.wordnik.com/#!/pet

    opened by klh 61
  • Windows

    Windows "Failed to lookup view "home/index""

    Problem occurs on Win7 with sails.js 0.9.7 (0.9.4 is working fine). Node version is 0.10.20.

    steps to reproduce:

    npm install -g sails
    sails new app
    cd app
    sails lift
    

    if you visit http://localhost:1337/ you will get the following error:

    {
      "status": 500,
      "errors": [
        "Failed to lookup view \"home/index\""
      ]
    }
    

    can someone confirm that?

    opened by adifah 61
  • File uploading being cancelled on some files

    File uploading being cancelled on some files

    I'm trying to use Skipper to save uploaded images, but it's only working on some files. Some files finish, and successfully write to the disk. Some files finish uploading, but the file that's written is empty, and some files just hang on uploading until it times out. When it cancels or hangs, it's on the same file, so it isn't randomly not working.

    I found two working and non-working files to log the callback, and this is what it said (these weren't uploaded all at once, and the working-not-working pattern isn't a coincidence)

    [ { size: 2005363,
        type: 'image/jpeg',
        filename: 'Success-1.jpg',
        status: 'bufferingOrWriting',
        field: 'avatarUpload',
        extra: undefined } ]
    [ { size: 251156,
        type: 'image/jpeg',
        filename: 'Cancelled-1.jpg',
        status: 'cancelled',
        field: 'avatarUpload',
        extra: undefined } ]
    [ { size: 2337904,
        type: 'image/jpeg',
        filename: 'Success-2.jpg',
        status: 'bufferingOrWriting',
        field: 'avatarUpload',
        extra: undefined } ]
    [ { size: 329172,
        type: 'image/jpeg',
        filename: 'Cancelled-2.jpg',
        status: 'cancelled',
        field: 'avatarUpload',
        extra: undefined } ]
    

    It's also probably worth saying that if I don't comment out stream.pause() on line 33 of node_modules/skipper/node_modules/connect/node_modules/raw-data/index.js that I get this error.

    Error: Cannot switch to old mode now.
        at emitDataEvents (_stream_readable.js:730:11)
        at IncomingMessage.Readable.pause (_stream_readable.js:721:3)
        at module.exports (/Users/Nate/Desktop/Projects/Active/project/node_modules/skipper/node_modules/connect/node_modules/raw-body/index.js:33:14)
        at json (/Users/Nate/Desktop/Projects/Active/project/node_modules/skipper/node_modules/connect/lib/middleware/json.js:51:5)
        at _parseHTTPBody (/Users/Nate/Desktop/Projects/Active/project/node_modules/skipper/index.js:71:5)
        at Object.retryBodyParser [as handle] (/Users/Nate/Desktop/Projects/Active/project/node_modules/sails/lib/express/bodyParserRetry.js:36:36)
        at next (/Users/Nate/Desktop/Projects/Active/project/node_modules/sails/node_modules/express/node_modules/connect/lib/proto.js:190:15)
        at next (/Users/Nate/Desktop/Projects/Active/project/node_modules/sails/node_modules/express/node_modules/connect/lib/proto.js:192:9)
        at Parser.next (/Users/Nate/Desktop/Projects/project/node_modules/skipper/index.js:97:20)
        at passControlToApp (/Users/Nate/Desktop/Projects/Active/project/node_modules/skipper/lib/Parser/parse.js:172:11)
        at null._onTimeout (/Users/Nate/Desktop/Projects/Active/project/node_modules/skipper/node_modules/async/lib/async.js:668:17)
        at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
    

    This only happens on the files that would otherwise be successful. If I upload one that'll be blank, then it works, but still writes an empty file.

    I'm using Skipper 0.1.6 with Sails 0.9.8. But I've tried with Sails 0.9.16, with the same results

    opened by tegandbiscuits 59
  • Update to express 4.17.3

    Update to express 4.17.3

    Node version: v18.12.1 Sails version (sails): 1.5.3


    Hi there! currently express 4.17.1 is used in sails. However there is a severe vulnerability in one of the dependencies (qs), which allows prototype pollution by placing an attack payload in the query string. For more details see this advisory: https://github.com/advisories/GHSA-hrpp-h998-j3pp Express has updated the dependencies to a non-vulnerable version with 4.17.3

    Would it be possible to update the express dependency in sails to 4.17.3?

    opened by f3lang 1
  • Waterline or sails-mongo does not catch some MongoDB exceptions

    Waterline or sails-mongo does not catch some MongoDB exceptions

    Node version: 16.18.1 Sails version (sails): 1.5.2 ORM hook version (sails-hook-orm): 4.0.1 Sockets hook version (sails-hook-sockets): 2.0.1 Organics hook version (sails-hook-organics): N/A Grunt hook version (sails-hook-grunt): 5.0.0 Uploads hook version (sails-hook-uploads): N/A DB adapter & version (e.g. [email protected]): [email protected] Skipper adapter & version (e.g. [email protected]): N/A


    I received the below error message:

    You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
    AdapterError: Unexpected error from database adapter: not master and slaveOk=false
        at Deferred._.extend._WLModel [as _handleExec] (/home/usera/service-a/source/node_modules/waterline/lib/waterline/methods/update-one.js:161:15)
        at Deferred.exec (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:286:10)
        at Deferred.tryCatcher (/home/usera/service-a/source/node_modules/bluebird/js/release/util.js:11:23)
        at ret (eval at makeNodePromisifiedEval (/home/usera/service-a/source/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
        at Deferred.toPromise (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:572:19)
        at Deferred.then (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:431:22)
        at runMicrotasks (<anonymous>)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
    You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
    AdapterError: Unexpected error from database adapter: Primary stepped down while waiting for replication
        at _afterCounting (/home/usera/service-a/source/node_modules/waterline/lib/waterline/methods/update-one.js:191:17)
        at _afterTalkingToAdapter (/home/usera/service-a/source/node_modules/waterline/lib/waterline/methods/count.js:227:16)
        at Object.success (/home/usera/service-a/source/node_modules/sails-mongo/lib/private/do-with-connection.js:254:18)
        at /home/usera/service-a/source/node_modules/machine/lib/private/help-build-machine.js:1517:30
        at proceedToFinalAfterExecLC (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:1185:16)
        at proceedToInterceptsAndChecks (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:913:12)
        at proceedToAfterExecSpinlocks (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:845:10)
        at /home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:303:7
        at /home/usera/service-a/source/node_modules/machine/lib/private/help-build-machine.js:954:24
        at Function.handlerCbs.success (/home/usera/service-a/source/node_modules/machine/lib/private/help-build-machine.js:814:26)
        at Object.fn (/home/usera/service-a/source/node_modules/sails-mongo/lib/private/machines/release-connection.js:77:18)
        at wrapper (/home/usera/service-a/source/node_modules/@sailshq/lodash/lib/index.js:3282:19)
        at Deferred.parley.retry [as _handleExec] (/home/usera/service-a/source/node_modules/machine/lib/private/help-build-machine.js:1076:19)
        at Deferred.exec (/home/usera/service-a/source/node_modules/parley/lib/private/Deferred.js:286:10)
        at Deferred.switch (/home/usera/service-a/source/node_modules/machine/lib/private/help-build-machine.js:1469:16)
        at /home/usera/service-a/source/node_modules/sails-mongo/lib/private/do-with-connection.js:242:92
    

    Waterline or sails-mongo seems not to catch this exception. So I should wait timeout in this request. Could you fix it, please?

    opened by anselmo-coolstay 1
  • Are the change log and releases managed?

    Are the change log and releases managed?

    Currently, latest version in npm is v1.5.3. But CHANGELOG.md and Releases in this GitHub are not latest.

    I use sails in my production application. I would like to know latest version is safe to upgrade in my environment, however I cannot find the information

    helpful info or workaround 
    opened by anselmo-coolstay 3
  • Long string presented as array in req.body

    Long string presented as array in req.body

    When sending a large string to controller, in req.body I find an array, so this string is divided on many parts. String length is 10700 characters.

    Node version: 16.15.1 Sails version (sails): 1.5.2 ORM hook version (sails-hook-orm): 3.0.2 Sockets hook version (sails-hook-sockets): 2.0.0 Grunt hook version (sails-hook-grunt): 1.0.4 Skipper version (e.g. [email protected]): 0.9.1


    opened by serebriakov19 1
  • cors issue: blocking works wrongly

    cors issue: blocking works wrongly

    Node version: v14.17.6 Sails version (sails): 1.5.3 ORM hook version (sails-hook-orm): 3.0.2 Sockets hook version (sails-hook-sockets): N/A Organics hook version (sails-hook-organics): N/A Grunt hook version (sails-hook-grunt): 5.0.0 Uploads hook version (sails-hook-uploads): N/A DB adapter & version (e.g. [email protected]): sails-postgresql 2.0.0 Skipper adapter & version (e.g. [email protected]): 0.9.1


    In order to make a sails API available to be called from specific external hosts, cors issue was raised. After apply configs as described in documentation:

    module.exports.security = {
      csrf: true,
      cors: {
        allRoutes: true,
        allowOrigins:
          [
            "https://url1",
            "http://url2",
            "https://url3"
          ],
        allowCredentials: true,
        allowRequestHeaders: "Origin, Content-Type, x-xsrf-token",
      }
    };
    

    It was noticed a strange behaviour.. locally it works as expected, but when deployed to server with kubernetes the behaviour is the opposite! for requests that should be allowed CORS error is raised, for requests that should be NOT allowed successful answers are returned.

    ps: trying to use also CSRF token to help in CORS issue but with no success

    image it seems the header Access-Control-Allow-Origin is overriden, then in the request there are 2 Access-Control-Allow-Origin image

    --> following the debug it seems the requests are blocked in route middleware.. but we can't debug what happens there and why this overwrite happens..

    Can you help here?

    opened by atex21 1
Releases(v1.4.0)
  • v1.4.0(Oct 9, 2020)

  • v1.3.1(Sep 8, 2020)

    • Updated the machine-as-action dependency to include a reminder about escaping strings with dynamic data when they're injected (Thanks @dusterherz for letting us know about this)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.5(Aug 20, 2020)

  • v1.2.4(Jul 14, 2020)

    • Fix resourceful PubSub for the update blueprint action, resolving #6824 (thanks @Tarrask!)
    • Re-enable afterDestroy lifecycle callback for the destroy blueprint action, fixing #5630
    • Update CSRF hook to fix an issue with disabling CSRF for routes defined using regular expression syntax, resolving #6838
    • Update session hook to fix an issue with double-prefixes, resolving #6541 (thanks @travispwingo!)
    • Update minimist dependency to resolve potential vulnerabilities
    • Update various comments, error messages, and logs for clarity/consistency
    Source code(tar.gz)
    Source code(zip)
  • v1.2.3(Jul 14, 2020)

  • v1.2.2(May 16, 2019)

    • Update merge-defaults dependency to resolve potential vulnerabilities • Update sails-stringfile dependency to resolve potential vulnerabilities • Update sort-route-addresses dependency to resolve potential vulnerabilities

    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(May 6, 2019)

    • Added sails migrate for quickly running auto-migrations by hand
    • The output of sails inspect no longer includes controller information
    • When loading user hooks, if sails.config.loadHooks is specified, skip hooks whose names aren't explicitly included
    • Increased time to display warning message in config/bootstrap.js from 5 seconds to 30 seconds
    • Switched to using updateOne in the "update" blueprint
    • Blueprint queries no longer include fetch: true by default, to avoid warnings from updateOne
    • Update error mesage in default serverError response to use flaverr
    • In lib/router/res.js, instead of always setting 'content-type' to 'application/json', only set it if res.get('content-type') is falsy
    • Update flaverr dependency
    • Update i18n-2 dependency to resolve deprecation warning
    • Update rc dependency to address potential vulnerabilities
    • Update machinepack-process dependency to address potential vulnerabilities
    • Update machinepack-redis dependency to address potential vulnerabilities
    Source code(tar.gz)
    Source code(zip)
  • v0.12.13(Mar 6, 2017)

  • v0.12.11(Nov 24, 2016)

    0.12.11

    Changelog

    • [BUGFIX] fix typo in error message (see https://github.com/balderdashy/sails/pull/3902) Thanks Johnny and @appdevdesigns!
    • [BUGFIX] backport fix for _.isFunction() from Lodash 4 (see https://github.com/lodash/lodash/issues/2768 and https://github.com/balderdashy/sails/issues/3863) Thanks @adnan-kamili and @jdalton!
    • [INTERNAL] rebase changelog updates from master 223567c

    Diff

    Click here to see what changed since the last release.

    Tests

    Build status for this release:

    Source code(tar.gz)
    Source code(zip)
  • v0.12.11-1(Nov 23, 2016)

    0.12.11-1 (prerelease)

    Changelog

    • [BUGFIX] fix typo in error message (see https://github.com/balderdashy/sails/pull/3902) Thanks Johnny and @appdevdesigns!
    • [BUGFIX] backport fix for _.isFunction() from Lodash 4 (see https://github.com/lodash/lodash/issues/2768 and https://github.com/balderdashy/sails/issues/3863) Thanks @adnan-kamili and @jdalton!
    • [INTERNAL] rebase changelog updates from master 223567c

    Diff

    Click here to see what changed since the last release.

    Tests

    Build status for this release:

    Source code(tar.gz)
    Source code(zip)
  • v0.12.11-0(Nov 19, 2016)

    0.12.11-0 (prerelease)

    Changelog

    • [BUGFIX] backport fix for _.isFunction() from Lodash 4 (see https://github.com/lodash/lodash/issues/2768 and https://github.com/balderdashy/sails/issues/3863) Thanks @adnan-kamili and @jdalton!
    • [INTERNAL] rebase changelog updates from master 223567c

    Diff

    Click here to see what changed since the last release.

    Tests

    Build status for this release:

    Source code(tar.gz)
    Source code(zip)
  • v0.12.10(Nov 17, 2016)

    0.12.10

    • [BUGFIX] Fix issue where incorrect file size was computed for incoming (multi-)file uploads on skipper-disk and skipper-s3 #3847 (thanks @crobinson42, @NAlexandrov and @vbogdanov!) See also https://github.com/balderdashy/skipper/issues/109.
    • [BUGFIX] Internationalization fix (#3833 fixes #3889 (thanks @josebaseba!)
    • [INTERNAL] Added automated request latency benchmarks -- primarily in advance of 1.0 for the purpose of comparison (thanks @sgress454!)
    • [BUGFIX] Fixed issue with defined-in-app adapters being improperly loaded #3884 (thanks @richdunajewski!)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.9(Nov 6, 2016)

  • v0.12.8(Oct 21, 2016)

    A new patch release with bug fixes & enhancements.

    Changelog

    From https://github.com/balderdashy/sails/blob/master/CHANGELOG.md#0128

    • [BUGFIX] Use 400 status code when handling request to urls with unsupported special chars 3850
    • [ENHANCEMENT] Add criteria validation for the find and findOne blueprint actions. ab9c2c3...c6e8ad0
    • [INTERNAL] Fix Gitter link in README so it displays properly on NPM 284c660
    Source code(tar.gz)
    Source code(zip)
  • v0.12.7(Oct 5, 2016)

    A new patch release with bug fixes, enhancements, and upgrades to Sails' dependencies.

    Changelog

    From https://github.com/balderdashy/sails/blob/v0.12.7/CHANGELOG.md#0127

    • [ENHANCEMENT] Log warning when lifting in production with very permissive CORS settings (thanks @ejcx). See this comment for v1.0 plans.
    • [BUGFIX] Fix issue with multiple config files that have the same filename 3846
    Source code(tar.gz)
    Source code(zip)
  • v0.12.4(Aug 1, 2016)

    A new patch release with bug fixes, enhancements, and upgrades to Sails' dependencies.

    See also the recently-published improvements to the Sails documentation.

    Changelog

    From https://github.com/balderdashy/sails/blob/master/CHANGELOG.md#0124:

    • [INTERNAL] Upgrade Mocha to 3.0.0 to remove more of the deprecation notices when installing dependencies (see mocha:#2200)
    • [INTERNAL] Simplify config-merging code in captains-log. This also gets rid of more deprecation notices during install (see captains-log:49f433eff348c05115a2caf292b4da0db9499887)
    • [BUGFIX] Fix long-standing, low-priority (but super annoying) issue with logged dictionaries/arrays getting extra quote marks (due to a pecularity in the usage of util.format()) d67e9c8e6775
    • [ENHANCEMENT] Add sails.config.session.routesDisabled config option to specify routes that should not use session middleware c712acf
    • [ENHANCEMENT] Use res.forbidden() when denying access to a route via a policy. Thanks @wulfsolter! 3764
    • [ENHANCEMENT] Allow use of Express style path and RegExp in sails.config.csrf.routesDisabled. Thanks @bolasblack!
    • [BUGFIX] Fix for query / body params called length 3738
    • [BUGFIX] Fix view rendering when i18n hook is disabled. Thanks @mordred! 3741
    • [BUGFIX] Allow sails.renderView to work with globals turned off 3753 d3f634c
    • [BUGFIX] Fix typo which could cause crashing when attempting to serialize non-json-compatible output in the response to a socket request.
    • [UPGRADE] Update all Grunt dependencies 5f6be05
    • [UPGRADE] Update "connect" dependency to 3.4.1 1d3c9e6
    • [UPGRADE] Update "compression" dependency to version 1.6.2
    • [UPGRADE] Upgraded version of Consolidate to 0.14.1 a70623c
    • [UPGRADE] Upgraded version of grunt-contrib-watch to 1.0.0 3678
    • [INTERNAL] Use standalone CSRF package instead of using the one (formerly) bundled with Connect. Sails should be using all standalone middleware now. 1d3c9e6 98861ef
    • [INTERNAL] Add some assertions to ensure custom hooks don't use reserved properties 2e76dac
    • [INTERNAL] Update code that virtual response uses to read buffer to work with all Node versions a5ab134
    • [INTERNAL] Remove un-maintained "wrench" module from tests; use "fs-extra" instead. Thanks @Ignigena! 4f90f78
    Source code(tar.gz)
    Source code(zip)
  • v0.12.2-0(Apr 1, 2016)

  • v0.12.1(Feb 28, 2016)

  • v0.12.0(Feb 5, 2016)

    Sails v0.12 comes with an upgrade to Socket.io and Express, as well as many bug fixes and performance enhancements. You will find that this version is mostly backwards compatible with Sails v0.11, however there are some major changes to sails.sockets.* methods which may or may not affect your app. Most of the migration guide below deals with those changes, so if you are upgrading an existing app from v0.11 and are using sails.sockets methods, please be sure and carefully read the information below in case it affects your app. Other than that, running sails lift in an existing project should just work.

    Upgrading from 0.10 or 0.11? The v0.12 release of Sails contains a few breaking changes which affect userland. To read the v0.12 migration guide, click here.

    Source code(tar.gz)
    Source code(zip)
  • v0.11.5(Feb 5, 2016)

    Small patch release to take care of a few pending issues in 0.11:

    • [BUGFIX] Allow disabling of installed hooks #3550
    • [ENHANCEMENT] Support namespaced modules as hooks (hotfix from #3022, #3514)
    • [ENHANCEMENT] Allow installable hooks to override their default names (hotfix from #3168)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0-rc8(Feb 1, 2016)

  • v0.12.0-rc6(Jan 15, 2016)

  • v0.12.0-rc5(Jan 13, 2016)

  • v0.11.4(Jan 7, 2016)

    This release contains security and performance improvements, including an upgrade to Socket.io v1.4.0. See https://github.com/balderdashy/sails/issues/3464#issue-125040561 and http://socket.io/blog/socket-io-1-4-0/ for more information.

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0-rc4(Jan 7, 2016)

  • v0.11.3(Dec 28, 2015)

  • v0.11.2(Oct 2, 2015)

  • v0.12.0-rc3(Jan 7, 2016)

  • v0.12.0-rc1(Jan 7, 2016)

  • v0.11.0(Jan 7, 2016)

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
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
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
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
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
: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
🍔 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
: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
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
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
The React Framework

Next.js Getting Started Visit https://nextjs.org/learn to get started with Next.js. Documentation Visit https://nextjs.org/docs to view the full docum

Vercel 98.6k Jan 5, 2023
The Intuitive Vue Framework

Build your next Vue.js application with confidence using Nuxt: a framework making web development simple and powerful. Links ?? Documentation: https:/

Nuxt 41.8k Jan 9, 2023
The Simple, Secure Framework Developers Trust

@hapi/hapi The Simple, Secure Framework Developers Trust Build powerful, scalable applications, with minimal overhead and full out-of-the-box function

hapi.js 14.1k Dec 31, 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.3k Jan 1, 2023
🦄 0-legacy, tiny & fast web framework as a replacement of Express

tinyhttp ⚡ Tiny web framework as a replacement of Express ?? tinyhttp now has a Deno port (work in progress) tinyhttp is a modern Express-like web fra

v 1 r t l 2.4k Jan 3, 2023
Catberry is an isomorphic framework for building universal front-end apps using components, Flux architecture and progressive rendering.

Catberry What the cat is that? Catberry was developed to help create "isomorphic/Universal" Web applications. Long story short, isomorphic/universal a

Catberry.js 801 Dec 20, 2022