Skip to content

Application

Backend setup

Weacast core module provides a helper to quickly initialize what is required for your server application. The core module provides the ability to initialize a new Weacast application instance, attach it to the configured database and setup authentication:

javascript
import { weacast } from '@weacast/core'

// Initialize app
let app = weacast()
// Connect to DB
await app.db.connect()

Authentication

Weacast includes a built-in local authentication strategy based on the Feathers authentication module. It also automatically configures the Feathers OAuth2 plugin for GitHub, Google, OpenID Connect and Congnito if you provide them in your configuration file.

You can read this article to learn more about the underlying process.

HTTPS support

Adding the right configuration like below you can easily Weacast run under HTTPS:

javascript
https: {
  key: path.join(__dirname, 'server.key'),
  cert: path.join(__dirname, 'server.crt'),
  port: process.env.HTTPS_PORT || 8084
}

Client setup

The Weacast core module provides a helper to quickly initialize what is required for your client application.

javascript
import { weacast } from '@weacast/core/client'

// Initialize API wrapper
let api = weacast()
// Retrieve a given service
let probes = api.getService('probes')

Application API

.getService(name) - backend/client

Retrieve the given service by name, should replace Feathers service method so that you are abstracted away from service path (i.e. API prefix) and only refer to it by internal name.

TIP

On the client side this is also used to instantiate the service on first call.

.getElementServices(name) - backend only

Retrieve all forecast element services related to a forecast model (or all if not provided) instance by name.

.createService(name, app, modelsPath, servicesPath) - backend only

Create a new service attached to the application by name and given a set of directories where to find model/service

This assumes you have created a models and services directories containing the required files to declare your service, e.g. your folder/file hierarchy should look like this:

  • index.js
  • models : constains one file per database adapter you'd like to support, e.g.
    • serviceName.model.mongodb.js : exporting the data model managed by your service in MongoDB
  • services
    • serviceName
      • serviceName.hooks.js : exporting the hooks of your service,
      • serviceName.filters.js : exporting the filters of your service,
      • serviceName.service.js : exporting the specific mixin associated to your service (optional)

WARNING

Only MongoDB is officially supported right now although we had an experimental attempt with LevelUP as well. Please contact us if you'd like to support more adapters.

.createElementService(forecast, element, app, servicesPath) - backend only

Internally used by forecast model plugins, similar to above but using the built-in forecast element model.

Application Hooks

The following hooks are globally executed on the application: Application hooks