The default OstroJS application structure is meant to provide a good starting point for both large and small apps. However, you are allowed to structure your application in any way you like. OstroJS places practically no limitations on the location of any given class.
The essential code of your Application is stored in the app
directory. We'll go over this directory in more depth later, but it contains virtually all of the classes in your application.
The app.js
file, which bootstraps the framework, is located in the bootstrap
directory. You shouldn't need to change any of the files in this directory very often.
All of your application's configuration files are stored under the config
directory, as the name indicates. It's a good idea to go over all of these documents and become comfortable with all of your alternatives.
Your database
migrations, model factories, and seeds are all stored in the database directory. You may also use this directory to store a SQLite database if you like.
The static assets, such as pictures, JavaScript, and CSS, are stored in the public
directory.
Your views, as well as any raw, uncompiled elements like CSS or JavaScript, are stored in the resources
directory. All of your language files are also stored in this directory.
The routes
directory includes all of your application's route definitions. OstroJS comes with multiple route files by default: web.js
, api.js
, and console.js
.
The RouteServiceProvider
inserts routes in the web
middleware group, which offers session state, CSRF protection, and cookie encryption, in the web.js file. If your site does not provide a stateless, RESTful API, all of your routes will almost certainly be defined in the web.js
file.
The RouteServiceProvider
adds routes to the api
middleware group in the api.js
file. These routes are designed to be stateless, which means that requests entering the application through them will be authenticated using tokens and will not have access to session information.
All of your closure-based console commands are defined in the console.js
file. Each closure is associated with a command instance, providing for an easy way to communicate with the IO methods of each command. This file defines console-based entry points (routes) into your application, despite the fact that it does not specify HTTP routes.
Your logs, file-based sessions, file caches, and other files created by the framework are all stored under the storage
directory. This directory is divided into three sections: app
, framework
, and logs
. Any files created by your application can be stored in the app
directory. Framework
produced files and caches are stored in the framework directory. Finally, the logs
directory includes the log files for your application.
The storage/app/public
directory can be used to store user-generated files that should be publicly available, such as profile avatars. You should make a symbolic link to this directory under public/storage
. The node assistant storage:link
Assistant command may be used to make the link.
The app
directory contains the majority of your application.
Additional folders such as Console
, Http
, and Providers
may be found in the app
directory. Consider the Console
and Http
folders to be APIs into your application's core. Both the HTTP protocol and the CLI are methods for interacting with your programme, but none contains application logic. To put it another way, there are two methods for sending commands to your programme. All of your Assistant instructions are stored in the Console
directory, while your controllers, middleware, and requests are stored in the Http
directory.
All of your application's custom Assistant commands are stored in the Console directory. The make:command
command can be used to produce these commands. This directory also contains your console
kernel, which is where you register your own Assistant commands and configure your scheduled tasks.
This directory does not exist by default; however, the following event will create it for you: Assistant commands event:generate
and make:event
Event courses can be found in the Events
directory. Events may be used to notify other sections of your application that a certain action has taken place, giving you a lot of flexibility and decoupling.
Your application's exception
handler is located in the Exceptions directory, which is also an excellent place to store any exceptions thrown by your application. Modify the Handler
class in this directory if you want to change how your exceptions are logged or displayed.
Controllers, middleware, and form requests are all stored under the Http
directory. This directory will house almost all of the logic for handling requests that come into your application.
This directory does not exist by default, but if you run the following event, it will be created for you: Assistant commands such as event:generate or make:listener
The classes that handle your events are found in the Listeners directory. In reaction to the event being fired, event listeners receive an event instance and perform logic. A sendWelcomeEmail
listener, for example, may handle a userRegistered
event.
All of your Eloquent model classes are stored in the Models
directory. For dealing with your database, the Eloquent ORM bundled with OstroJS provides a beautiful, straightforward ActiveRecord implementation. Each database table has a "Model" associated with it that is utilised to communicate with it. Models enable you to query your tables for data as well as add new records to the database.
All of the service providers
for your application are included in the Providers directory. Service providers prepare your application for incoming requests by binding services in the service container, registering events, and doing any other activities necessary.
This directory will already have numerous providers in a new OstroJS application. As needed, you are free to add your own suppliers to this list.