Generating an app

In the getting started chapter we created a Feathers application in a single file to get a better understanding how Feathers itself works. The Feathers CLI allows us to initialize a new Feathers server with a recommended structure and helps with generating things we commonly need like authentication, a database connection, new services or hooks (more about hooks in a little bit). It can be installed via:

npm install @feathersjs/cli -g

Important: As mentioned when getting ready, @feathersjs/cli also requires Node version 10 or later. If you already have it installed, feathers --version should show 4.1.0 or later.

Generating the application

Let's create a new directory for our app and in it, generate a new application:

$ mkdir feathers-chat
$ cd feathers-chat/
$ feathers generate app

First, choose if you want to use JavaScript or TypeScript. When presented with the project name, just hit enter, or enter a name (no spaces). Next, write a short description of your application. All other questions should be confirmed with the default selection by hitting Enter.

Once you confirm the last prompt, the final selection should look like this:

feathers generate app prompts

Important: If you are following this guide for the first time we recommend to not change any of those settings other than the TypeScript/JavaScript selection. Otherwise you might run into things that are not covered here.

The generated files

Let's have a brief look at the files that have been generated:

    Configure functions

    The most important pattern used in the generated application to split things up into individual files are configure functions which are functions that are exported from a file and take the Feathers app object and then use it to e.g. register services. Those functions are then passed to app.configure.

    For example, have a look at the following files:

      This is how the generator splits things up into separate files and any documentation example that uses the app object can be used in a configure function. You can create your own files that export a configure function and require/import and app.configure them in app.js.

      Note: Keep in mind that the order in which configure functions are called might matter, e.g. if it is using a service, that service has to be registered first.

      Running the server and tests

      The server can now be started by running

      npm start
      

      After that, you can see a welcome page at localhost:3030.

      The app also comes with a set of basic tests which can be run with

      npm test
      

      There is also a handy development command that restarts the server automatically whenever we make a code change:

      npm run dev
      

      You can keep this command running throughout the rest of this guide, it will reload all our changes automatically.

      What's next?

      In this chapter we installed the Feathers CLI, scaffolded a new Feathers application and learned how it splits things up into separate files. In the next chapter we will learn more about Feathers services and databases.