Website Generator System Design

System Architecture Design

System Architecture Design

The system architecture design depicts the structure of a desktop application built with Electron, which is used to generate websites based on user input. Below is a description of each component.

User

This represents the end-user interacting with the application. The user provides input to the application through a graphical user interface.

Frontend

The application's frontend is made up of several key technologies:

  • React: A JavaScript library, used to create the user interface.
  • Electron: A JavaScript framework used to make the Website Generator a desktop application. It acts as a container for the React application, providing system-level access and additional native functionalities.
  • JS/HTML/SCSS: Standard web technologies used for creating the content, styling, and scripting of the frontend.
  • The frontend communicates with the backend by sending data and images through IPC (Inter-Process Communication).

Backend

Backend Server is built using Node.js, a JavaScript runtime executing the application's serve-side code. It processes the data sent from the frontend – saves it to JSON files in the template, and saves images to the specified directory.

Storage within the Website Template

The storage is situated within the website template, as the data required to stored is the data to be displayed on the generate website. It is structured as follow:

JSON Files
These files are located within the React application's src/pageContent directory and are used to store the website's textual and configuration content. The JSON files are essential for the Content Management System (CMS) to define and manage the site's structure and content dynamically. The specific JSON files utilized by the CMS include:

  • homePageContent.json - Contains data for the homepage.
  • sharedContent.json - Stores content shared across different pages.
  • faqPageContent.json – Stores the FAQ page data.
  • manualPageContent.json - Stores the manual page content.
  • videoPageContent.json – Stores the data for the video page.
Example of how data is structured in the JSON file:

          "welcomeSection": {
            "header": "In-Air Multitouch Support Page",
            "description": "Welcome to the future of computer interaction! UCL MotionInput…",
            "img": "welcome_img.png"
          },
        
Image Store
This is a designated storage area located within the same src/pageContent directory, specifically in the img/ subdirectory. It is intended for all images that are uploaded by the user, to be displayed on the website. Backend processes these images and saves them to this directory. Relative paths to the images are stored in the JSON files.

Data Flow

  • User Interaction: The flow starts with the user interacting with the frontend application.
  • Send Data and Images Through IPC: The frontend collects the user's input and sends it to the backend through IPC. This includes both the textual data (in the form of JSON) and image files.
  • Store Data: The backend receives the data and stores it in the storage system.
  • Store Images: Similarly, the backend stores the images uploaded by the user in the image store.

Site Map

Site Map

The sitemap provides an overview of the navigational structure of the website template. It outlines the main pages and their sections, indicating the hierarchy and how users can navigate through the content.

Detailed description of the site map:

  • Home: This is the main entry point of the website and serves as the root of the navigation structure.
  • Home Page: Directly under the Home, this represents the homepage of the website, which includes several sections:
  • Welcome: introductory section.
  • About: providing some extra information about the MotionInput software being presented.
  • Gallery: a carousel with images.
  • Big Image: with a single stand-out image.
  • Features: highlighting key features of the software.
  • Short Information: a brief informational section.
  • Builds: lists different versions of the builds of the software.
  • Instructions: contains instructions on how to use the software.
  • Downloads: with download links to e.g. Microsoft Store.
  • Requirements: lists the minimal requirements to use the software.
  • Quote: dedicated to a notable quotation.
  • Video Page: A page dedicated to video content.
  • Video: contains several videos about the software.
  • FAQ Page: A page for Frequently Asked Questions.
  • FAQ: lists questions and answers.
  • Manual Page: A page designed to instruct users on how to use the software.
  • Manual: The section that provides in-depth information, the form of documentation and user manuals.

Each page is represented as a separate entity, with the Home Page being the most complex, containing multiple sub-sections. The Video Page, FAQ Page, and Manual Page are more straightforward, each focusing on a single type of content. Users can navigate between the pages using a navbar on top of the website. This structure logically presents information to the users.