diff --git a/docs/chapter1/1introduction.md b/docs/chapter1/1introduction.md
index 301dafbb..de93d44d 100644
--- a/docs/chapter1/1introduction.md
+++ b/docs/chapter1/1introduction.md
@@ -20,7 +20,7 @@ slug : /
{" "}
-Inspired by Logisim, CircuitVerse is an open-source educational tool for designing and visualizing digital logic circuit simulations in the cloud. Users including educators, students, electronic engineers, and hobbyists can play with digital circuit simulations from their browsers for exploring different “what-if” scenarios. As required, a user can share their creations using unique circuit URLs, or fork different contributions of the CircuitVerse community to yield their curiosity. Figure 1 shares a screenshot of a ripple carry adder simulation built using CircuitVerse.
+Inspired by Logisim, CircuitVerse is an open-source educational tool for designing and visualizing digital logic circuit simulations in the cloud. Users, including educators, students, electronic engineers, and hobbyists, can play with digital circuit simulations from their browsers for exploring different “what-if” scenarios. As required, a user can share their creations using unique circuit URLs, or fork different contributions of the CircuitVerse community to yield their curiosity. Figure 1 shares a screenshot of a ripple carry adder simulation built using CircuitVerse.

@@ -28,7 +28,7 @@ Inspired by Logisim, CircuitVerse is an open-source educational tool for designi
Figure 1.1: Ripple Carry Adder simulation built using CircuitVerse
-Developed for educators by educators, the CircuitVerse platform delivers high class learning experience in a scalable way. Educators can manage, track, and achieve their classroom learning goals in a single, powerful solution. They can create and manage different student groups, post different assignments, define submission deadlines and add or export grades (refer Figure 2). Using the CircuitVerse Chrome extension, educators can embed live circuits in their Google Slides and demonstrate concepts without navigating across different tabs. Alternatively, they can also export images or embed iFrames within their webpages.
+Developed for educators by educators, the CircuitVerse platform delivers a high-quality learning experience in a scalable way. Educators can manage, track, and achieve their classroom learning goals in a single, powerful solution. They can create and manage different student groups, post different assignments, define submission deadlines and add or export grades (refer Figure 2). Using the CircuitVerse Chrome extension, educators can embed live circuits in their Google Slides and demonstrate concepts without navigating across different tabs. Alternatively, they can also export images or embed iframes within their webpages.

@@ -51,7 +51,7 @@ As the CircuitVerse community grows, educators and students can join the online
-Watch the below video for a quick demonstration of the CircuitVerse platform.
+Watch the video below for a quick demonstration of the CircuitVerse platform.
-1. **Build and simulate your circuits in the cloud**: Create and run your simulations in your browser without the hassle of software installation or operating system dependent instructions. Since the process of circuit creation and simulation is seamless, users can edit and troubleshoot their circuit design or apply changes while the simulation is running. Users can save and open their circuits online (against the user’s dashboard) or offline (locally on their machine).
+1. **Build and simulate your circuits in the cloud**: Create and run your simulations in your browser without the hassle of software installation or operating-system-dependent instructions. Since the process of circuit creation and simulation is seamless, users can edit and troubleshoot their circuit design or apply changes while the simulation is running. Users can save and open their circuits online (against the user’s dashboard) or offline (locally on their machine).
2. **Transform your ideas using a powerful, intuitive and interactive schematic editor**:
- - **Design using an easy-to-use interactive schematic editor**: As users drag and drop circuit elements on the canvas, horizontal and vertical wires can be drawn to complete the circuit connections. The wires are color coded to test and analyze the circuit simulations with ease.
+ - **Design using an easy-to-use interactive schematic editor**: As users drag and drop circuit elements on the canvas, horizontal and vertical wires can be drawn to complete the circuit connections. The wires are color-coded to test and analyze the circuit simulations with ease.
- **Customize input attributes of circuit components**: CircuitVerse includes a vast library of circuit elements that range from basic gates to register transfer level design, and from basic input/output to system level components. Most of the CircuitVerse components include customizable attributes for building complex designs within the simulator.
- - **Design supports multibit wires (buses)**: Every input and output circuit element has a bit width associated with it. Most of the CircuitVerse components include attributes allowing you to customize the bit widths of their inputs and outputs. CircuitVerse supports multibit wires across two components demanding multi bit widths. As needed, splitters can also be used to direct bits in different directions.
+ - **Design supports multibit wires (buses)**: Every input and output circuit element has a bit width associated with it. Most of the CircuitVerse components include attributes allowing you to customize the bit widths of their inputs and outputs. CircuitVerse supports multibit wires across two components demanding multi-bit widths. As needed, splitters can also be used to direct bits in different directions.
-3. **Insert subcircuit**: Hierarchical circuits can be created by nesting and reusing smaller circuits in larger circuits (something like this). No need to mention verilog here.
+3. **Insert subcircuits**: Hierarchical circuits can be created by nesting and reusing smaller circuits in larger circuits.
4. **Export images in multiple formats**: High-resolution CircuitVerse images can be exported in multiple formats for different views and background options.
-5. **Visualize circuit simulations using timing diagram**: Timing diagrams can be used to analyze and debug the behavior of circuits for different input sequences. debug logical mistakes and race conditions. Timing diagrams can be paired with the Flag circuit element to explain different concepts such as propagation delay, stable state and race conditions.
+5. **Visualize circuit simulations using timing diagrams**: Timing diagrams can be used to analyze and debug the behavior of circuits for different input sequences. Debug logical mistakes and race conditions. Timing diagrams can be paired with the Flag circuit element to explain different concepts such as propagation delay, stable state and race conditions.
6. **Embed simulations across webpages and presentations**: Since the CircuitVerse webpages are structured using HTML5, an iframe can be generated for embedding each CircuitVerse simulation within web pages. Alternatively, users can download the CircuitVerse Chrome extension for embedding live CircuitVerse circuits within a Google Slides presentation.
diff --git a/docs/chapter1/3systemrequirements.md b/docs/chapter1/3systemrequirements.md
index 0564da2a..ed75b675 100644
--- a/docs/chapter1/3systemrequirements.md
+++ b/docs/chapter1/3systemrequirements.md
@@ -10,4 +10,4 @@ In order to access CircuitVerse simulations on a Mac or a PC, you will need a br
> NOTE: Since CircuitVerse is built in HTML5, browsers do not require Flash Player or JavaScript to load the CircuitVerse simulator.
-Additionally, CircuitVerse does not support touch screen devices or mobile browsers for any device.
+Additionally, CircuitVerse does not support touchscreen devices or mobile browsers for any device.
diff --git a/netlify.toml b/netlify.toml
index 0c24a45e..7cf9498f 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,5 +1,8 @@
[build]
#Directory to publish
publish = "build/"
- command = "npm run build"
+ command = "npm ci && npm run build"
+
+[build.environment]
+ NODE_VERSION = "18"
diff --git a/package-lock.json b/package-lock.json
index daa7b0f9..fcccf03f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -224,6 +224,7 @@
"version": "5.14.2",
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.14.2.tgz",
"integrity": "sha512-0imdBZDjqxrshw0+eyJUgnkRAbS2W93UQ3BVj8VjN4xQylIMf0fWs72W7MZFdHlH78JJYydevgzqvGMcV0Z1CA==",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.14.2",
"@algolia/requester-browser-xhr": "5.14.2",
@@ -418,6 +419,7 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
@@ -2544,6 +2546,7 @@
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.1.tgz",
"integrity": "sha512-Uq8kyn5DYCDmkUlB9sWChhWghS4lUFNiQU+RXcAXJ3qCVXsBpPsh6RF+npQG1N+j4wAbjydM1iLLJJzp+x3eMQ==",
+ "peer": true,
"dependencies": {
"@docusaurus/core": "3.6.1",
"@docusaurus/logger": "3.6.1",
@@ -3513,6 +3516,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz",
"integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==",
+ "peer": true,
"dependencies": {
"@types/mdx": "^2.0.0"
},
@@ -4340,6 +4344,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
+ "peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0",
@@ -4768,6 +4773,7 @@
"version": "18.3.12",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
"integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
+ "peer": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -5080,6 +5086,7 @@
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5130,6 +5137,7 @@
"version": "8.17.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -5172,6 +5180,7 @@
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz",
"integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==",
+ "peer": true,
"dependencies": {
"@algolia/cache-browser-local-storage": "4.24.0",
"@algolia/cache-common": "4.24.0",
@@ -5630,6 +5639,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001669",
"electron-to-chromium": "^1.5.41",
@@ -7263,6 +7273,7 @@
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"devOptional": true,
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -8220,6 +8231,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -8457,6 +8469,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -12808,6 +12821,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -13377,6 +13391,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.1",
@@ -14233,6 +14248,7 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -14362,6 +14378,7 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -14417,6 +14434,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
"integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
+ "peer": true,
"dependencies": {
"@types/react": "*"
},
@@ -14443,6 +14461,7 @@
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
"integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
+ "peer": true,
"dependencies": {
"@babel/runtime": "^7.12.13",
"history": "^4.9.0",
@@ -16025,6 +16044,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -16726,6 +16746,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -17067,6 +17088,7 @@
"version": "5.96.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
"integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
+ "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.6",
@@ -17293,6 +17315,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",