# 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/clialso requires Node version 10 or later. If you already have it installed,
feathers --versionshould show
# 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
Once you confirm the last prompt, the final selection should look like this:
# 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
app.configure them in
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
After that, you can see a welcome page at localhost:3030 (opens new window).
The app also comes with a set of basic tests which can be run with
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.