A typical COMET DXP Application has an API, an Admin, and optionally multiple sites.
Interaction with the API is possible using GraphQL except for uploading files where REST is used. We use ApolloServer for creating our GraphQL API. The GraphQL schema is generated using a code-first approach, where the schema is defined programmatically.
The admin provides interfaces for managing data. It is built using React with Typescript. We create our admin applications using MUI design library. For interaction with the API we rely on ApolloClient, the counterpart to ApolloServer.
Other core libraries in use:
Consumer for the data. This part is optional because we are headless. Also, multiple sites for different clients (e.g., website and mobile app) can coexist.
While any technology can be used, we focus on NextJS. With NextJS we can use Typescript and React for building our sites. NextJS provides Server Side Rendering (SSR), Client Side Rendering (CSR), and Static Generation (SG). We focus on SG to optimize for speed while avoiding maintaining a cache.