Skip to content

gentics/mesh-ui

Repository files navigation

Gentics Mesh is your friendly, enterprise-grade, open-source headless CMS.

To be honest, it’s more than that: it’s your application development platform to develop your websites, your IoT applications, your mobile apps, your smart devices and your digital signage solutions. With its best-in-class APIs, a complete feature list and great documentation, you’ll get your projects done successfully in less time, no matter which technology you prefer.


stable License Stack Overflow Join the chat at https://gitter.im/gentics/mesh Latest release CLA assistant


Gentics Mesh Screenshot

Quick Start

This repository contains the source code for the user interface of Gentics Mesh. Please check out the Gentics Mesh backend repository for further information.

Development

  1. $ git clone git@github.com:gentics/mesh-ui.git
  2. $ git checkout develop
  3. $ npm ci
  4. $ npm start
  5. Download and run the Mesh Demo: https://getmesh.io/download/ OR you can run npm run mesh if you have docker installed.
  6. Open http://localhost:4200 in a browser.

Testing

$ npm test

Developer Notes

Code Formatting

This project uses TSLint and Prettier to automatically format the TypeScript code, and js-beautify to format the HTML templates.

Formatting is performed automatically with every commit (by means of lint-staged). This means that only well-formatted code should ever make it into the repo. In the event that there is a TSLint failure which cannot be automatically fixed, the commit will fail with an error message from TSLint explaining what needs to be fixed manually.

Strict null checks and the ! operator

This project makes use of TypeScript's strictNullChecks. In general, we should avoid the use of the ! non-null assertion operator and try to make better use of correct typings, type guards and defensive programming.

This is not a hard rule and there are the following valid exceptions:

  • Certain JavaScript patterns are not easy to express without falling back on !, for example when working with JavaScript Maps (See this discussion: microsoft/TypeScript#9619). So we do not ban its use, but it should be a last resort.
  • In spec files we are less strict, since we are often purposefully constructing partial mock objects or creating non-null states explicitly, so ! is okay in specs in general if they cannot be easily avoided.
  • There is a class of incorrectly-defined optional properties of the Mesh models generated by the RAML, e.g. node.project.name. Such properties force the use of ! until the RAML definitions are fixed. See https://github.com/gentics/mesh/issues/402 Once the Mesh interfaces have been fixed, that class of ! operators can be removed.

Distribution

In order to build the bundled static files for a web server to be served:

  1. Optionally: Edit the base path in /src/app/index.html at <base href="/"> to your need. E. g. <base href="/cms">
  2. $ npm run build
  3. At /dist are the files ready to be served.

Copyright & License

Copyright (c) 2014-2023 Gentics Software GmbH. Licensed under the Apache License, Version 2.0.

Gentics is a registered trade mark of Gentics Software GmbH.