Application
Introduction
Every Supercharge application (HTTP and console) relies on an Application
. The Application
instance in Supercharge is the central place holding your app together. Each app requires a “base path” defining the app’s root directory path. This base path tells the framework from where to boot your Supercharge app.
You’ll find bootstrapping files for HTTP and console applications inside of the bootstrap
directory. Both bootstrapping files are used by the server.ts
and craft.ts
files (they are in the root of your app directory). Both files then start one of the following apps:
- HTTP Server: start a web application using an HTTP server
- Console: start a console application using the Craft CLI
IoC Container
Supercharge’s Application
class is also an IoC container used to manage class dependencies. This allows apps to follow the concept of dependency injection. Find more details about the service container in the related docs:
Start a Web Application
The server.ts
file in your root directory contains the logic to serve a Supercharge web app. It creates a new application and starts the HTTP server. Serving an HTTP server is as simple as invoking the server.ts
file with Node.js to start a web application:
ts-node server.ts
Start a Console Application
The craft.ts
file in your application directory is the entry point to serve a Supercharge console app. It will load the core commands and then serve the CLI application.
ts-node craft.ts
Application Paths
You’ll find references to Supercharge’s app
instance in most parts of the framework. And also within the documentation. The reason is that your app
instance is the central place storing the base path to your application’s directory. Your base directory is the starting point to resolve paths to directories in your Supercharge application.
App.basePath()
The App.basePath
method returns the absolute path to your application’s root directory:
const path = app.basePath()
// /home/users/marcus/dev/supercharge/superchargejs.com
App.configPath()
The App.configPath
method returns the absolute path to your application’s config
directory. You can also generate an absolute path to a given file within the configuration directory:
const path = app.configPath()
// <base-path>/config
const path = app.configPath('app.ts')
// <base-path>/config/app.ts
App.publicPath()
The App.publicPath
method returns the absolute path to your application’s public
directory. You can also generate an absolute path to a given file within the public directory:
const path = app.publicPath()
// <base-path>/public
const path = app.publicPath('js/app.js')
// <base-path>/public/js/app.js
App.resourcePath()
The App.resourcePath
method returns the absolute path to your application’s resources
directory. You can also generate an absolute path to a given file within the resources directory:
const path = app.resourcePath()
// <base-path>/resources
const path = app.resourcePath('js/app.ts')
// <base-path>/resource/js/app.ts
App.storagePath()
The App.storagePath
method returns the absolute path to your application’s storage
directory. You can also generate an absolute path to a given file within the storage directory:
const path = app.storagePath()
// <base-path>/storage
const path = app.storagePath('cache/sessions')
// <base-path>/storage/cache/sessions
App.databasePath()
The App.databasePath
method returns the absolute path to your application’s database
directory. You can also generate an absolute path to a given file within the database directory:
const path = app.databasePath()
// <base-path>/database
const path = app.databasePath('migrations/create-users-table-20220124.ts')
// <base-path>/database/migrations/create-users-table-20220124.ts