![](logo.png)
A minimalist real-time framework for tomorrow's apps.
Get Started
Build incredible apps in record time.
With Feathers you can build prototypes in minutes and production ready real-time apps in days. Seriously.
Create your first real-time app in minutes.
$ npm install -g feathers-cli
$ mkdir my-app
$ cd my-app
$ feathers generate
$ npm start
Check out the docs to learn more about Feathers, feel free say hello in the Slack group, or show us some love on Twitter.
Stay nimble with elegant, flexible code.
We're not just hiding behind generators. See just how easy it is to create a real-time app from scratch, complete with authentication.
# Install modular dependencies
$ npm install feathers feathers-hooks feathers-socketio feathers-rest feathers-errors feathers-memory feathers-authentication body-parser
SERVER
BROWSER
REACT NATIVE
const feathers = require('feathers'); | |
const rest = require('feathers-rest'); | |
const socketio = require('feathers-socketio'); | |
const hooks = require('feathers-hooks'); | |
const memory = require('feathers-memory'); | |
const authentication = require('feathers-authentication'); | |
const bodyParser = require('body-parser'); | |
const handler = require('feathers-errors/handler'); | |
// A Feathers app is the same as an Express app | |
const app = feathers(); | |
// Parse HTTP JSON bodies | |
app.use(bodyParser.json()); | |
// Parse URL-encoded params | |
app.use(bodyParser.urlencoded({ extended: true })); | |
// Register hooks module | |
app.configure(hooks()); | |
// Add REST API support | |
app.configure(rest()); | |
// Configure Socket.io real-time APIs | |
app.configure(socketio()); | |
// Register our authentication plugin | |
app.configure(authentication({ idField: 'id' })); | |
// Register our memory "users" service | |
app.use('/users', memory()); | |
// Register a nicer error handler than the default Express one | |
app.use(handler()); | |
// Register a before hook to hash passwords | |
app.service('users').before({ | |
create: authentication.hooks.hashPassword() | |
}); | |
// Create a test user | |
app.service('users').create({ | |
email: 'admin@feathersjs.com', | |
password: 'admin' | |
}); | |
// Start the server | |
app.listen(3030); |
See what makes Feathers so special
Modern, solid, and 100% JavaScript
Built using promises and ES6 features, Feathers is a tiny, fully compatible wrapper over Express and Socket.io, both of which have been used in production by thousands of companies.
Universal
Feathers can be used in the browser, React Native and server side with NodeJS. Using the Feathers client you can quickly add authentication, share code between your server and client, and easily make your apps real-time.
Framework Friendly
Feathers easily integrates with any client side framework. It plays especially well with React and React Native. They’re practically BFFs.
Service Oriented
Feathers gives you the structure to build service oriented apps from day one. When you eventually need to split up your app into microservices it’s an easy transition and your Feathers apps can scale painlessly.
Instant Real-time REST APIs
Feathers provides instant CRUD functionality via Services, exposing both a RESTful and real-time API automatically through Socket.io or Primus.
Datastore Agnostic
Feathers has adapters for 15+ data sources out of the box, including MongoDB, Postgres and S3. You can have multiple datastores in a single app and swap them out painlessly due to our consistent query interface.
Flexible Plugins
Feathers is a “batteries included but easily swappable framework”. We have entirely optional plugins that provide authentication and SMS or email messaging out of the box. Include exactly what you need. No more, no less.