Table of Contents

Contribute to 2sxc / EAV Frontend Experience

Warning

This is meant for people who want to contribute to the underlying source code of 2sxc and EAV.

If you only want to USE 2sxc / EAV, then you do NOT need this.

Prerequisites

➡️ Make sure you prepared your local development environment according to the instructions in Contribute to 2sxc / EAV - Setup.

Main Repositories and Principles

The front-end is in these 2 repositories containing various JS projects:

  1. c:\projects\2sxc\2sxc-ui\ - the in-page UI for 2sxc, which extends the EAV UI with more field types, configuration and other JS.
  2. c:\projects\2sxc\eav-ui\ - the main edit/admin UIs, which are used by both 2sxc and EAV.

Each of these repositories contains many JS projects, which are built using Webpack and Vite. For unit tests, we use Vitest.

A few things to keep in mind:

  1. When you open a project the first time, you will need to run npm ci to install the dependencies, which may take a while.
  2. To ensure that the built files are copied to DNN/Oqtane, make sure you have the 2sxc-build.config.json file.

2sxc UI

This repo (usually located in c:\projects\2sxc\2sxc-ui\) contains the in-page edit experience, such as the toolbar, quick-dialog, etc. It also contains some shared code and NPM packages which are used by both 2sxc and EAV.

  1. \ (root) - shared building code and some shared NPM commands
  2. \packages\ - shared building code, also used by the EAV UI
  3. \projects\$2sxc\ - the $2sxc JS library
  4. \projects\cms\ - some CSS used for very rich text (image sizing, positioning, etc.)
  5. \projects\code-editor-snippets\ - various code-snippets (as JSON) to enhance the code editor experience in 2sxc
  6. \projects\inpage\ - the in-page edit experience, such as the toolbar
  7. \projects\quick-dialog\ - the Angular UI which appears from the bottom, to select templates, Apps, etc.
  8. \projects\sxc-angular\ - NPM package for using 2sxc in Angular, deployed to NPM as @2sxc/sxc-angular
  9. \projects\sxc-typings\ - NPM package for TypeScript typings, deployed to NPM as @2sxc/sxc-typings
  10. \turnOn\ - a copy of the dist of the turnOn dependency which is in a separate repository.

The root project is mainly used to build everything but not ideal to work in specific projects.

This repo also manages the primary version in the package.json file, which is used for all the sub-projects. This version must be updated before a release, and should be in sync with the eav-ui and the C# repos.

Tip

In 2sxc-ui there are about 10 projects, each which would need an npm ci to install dependencies.

To save time, you can run npm run ci-all in the root of 2sxc-ui, which will run npm ci in all the sub-projects for you.

This repo contains various NPM scripts to build the projects. The main one is npm run release-all which will build all the projects and copy the built files to DNN/Oqtane according to the 2sxc-build.config.json file. It does not contain any watch scripts, since these are usually run in the individual projects, which is more efficient.

Tip

To build everything in one go, just run npm run release-all.

Projects in the EAV UI

  1. \projects\eav-ui - the main EAV UI, containing the entire admin / edit experience.
  2. \projects\field-custom-wysiwyg - the WYSIWYG input field, as a standalone project
  3. \projects\field-custom-gps - the GPS input field, as a standalone project

History

  • Created Frontend docs 2026-02-12