DEITY Falcon is a platform agnostic, stand-alone but modular library to be used to easily build decoupled PWA websites. Check out the repository here
Join the official chat channel
DEITY Falcon was built with the F.I.R.E. principal in mind:
- Flexible - Allow you to build any kind of website; e-commerce, blogs, portfolio's, you name it
- Integrable - Allow you to integrate any kind of data source with it
- Reliable - You do not have to worry about high traffic and scalability
- Extensible - Allow you to extend your project with as many custom features as necessary
The main idea that stands behind having separate applications for Client and Server parts is to provide developers/project owners/DevOps with scaling abilities:
- You can define special server requirements for a Falcon Server instance, but keeping the Falcon Client server instance more "lightweight"
- You can have multiple Falcon Client instances (geo-distributed) connected to a single Falcon Server application
- Falcon Server is stateless, so you could scale it up as you need (for example, you don't want to be stuck with a single Falcon Server instance while supporting your mobile visitors with a dedicated application that uses Falcon Server as data provider)
Falcon Server itself does not provide any data, but rather acts as a glue for your data extensions. As a result of its work - Falcon Server generates a unified GraphQL Schema that can be used by GraphQL Clients to work with the data.
Falcon Server uses Extension as an abstract layer to work with a specific entity (for example,
blog-extension, etc) in order to provide "agnostic" data access and be a
platform-independent data provider.
Falcon Extension must define abstract Queries, Mutations and types as a part of Falcon Server API, which will be "stitched" into the unified GraphQL Schema by Falcon Server. All defined methods must be proxied to the assigned Falcon API (defined in Falcon Server configuration).
Falcon Extension uses API as a transport layer to work with a specific back-end service (for example,
wordpress-api etc), which has to implement all Queries and Mutations methods along with
resolved GraphQL Types (data structures) defined by Falcon Extension.
wordpress-api is created as a transport layer for
blog-extension, that means that
class must deliver all required Queries and Mutations defined in
blog-extension GraphQL Schema and match
its GraphQL types (Falcon Extension does not care how this data is being fetched and pre/post-processed by
Falcon API, it's important to "meet" the schema definition). All optional methods depend on the Extension configuration.