From 217761897368b4603193e4ac6a696a912638b938 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 18:45:47 +0300 Subject: [PATCH 1/8] feat: remove redundant file as .jpg, .nvmrc --- constructs/.nvmrc | 1 - constructs/screenshot.jpg | Bin 126146 -> 0 bytes 2 files changed, 1 deletion(-) delete mode 100644 constructs/.nvmrc delete mode 100644 constructs/screenshot.jpg diff --git a/constructs/.nvmrc b/constructs/.nvmrc deleted file mode 100644 index 2edeafb0..00000000 --- a/constructs/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20 \ No newline at end of file diff --git a/constructs/screenshot.jpg b/constructs/screenshot.jpg deleted file mode 100644 index 7538e217ea3b8b1b02f0eada1c0c59baf30e9f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126146 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 Date: Wed, 8 Oct 2025 18:51:54 +0300 Subject: [PATCH 2/8] feat: rename files as an example --- constructs/Apps/ConstructsApp.cs | 6 +++--- ...ples.Constructs.csproj => ConstructsExample.csproj} | 2 +- ...y.Examples.Constructs.sln => ConstructsExample.sln} | 2 +- constructs/Dockerfile | 10 +++++----- constructs/Domain/DemoConstruct.cs | 2 +- constructs/Domain/Traversal.cs | 2 +- constructs/Extensions/ConstructExtensions.cs | 2 +- constructs/GlobalUsings.cs | 2 +- constructs/Program.cs | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) rename constructs/{Ivy.Examples.Constructs.csproj => ConstructsExample.csproj} (91%) rename constructs/{Ivy.Examples.Constructs.sln => ConstructsExample.sln} (87%) diff --git a/constructs/Apps/ConstructsApp.cs b/constructs/Apps/ConstructsApp.cs index d63c0481..b41cfa02 100644 --- a/constructs/Apps/ConstructsApp.cs +++ b/constructs/Apps/ConstructsApp.cs @@ -1,8 +1,8 @@ using Constructs; -using Ivy.Examples.Constructs.Domain; -using Ivy.Examples.Constructs.Extensions; +using ConstructsExample.Domain; +using ConstructsExample.Extensions; -namespace Ivy.Examples.Constructs.Apps; +namespace ConstructsExample.Apps; [App(icon: Icons.PartyPopper, title: "Constructs (AWS)")] public class ConstructsApp : ViewBase diff --git a/constructs/Ivy.Examples.Constructs.csproj b/constructs/ConstructsExample.csproj similarity index 91% rename from constructs/Ivy.Examples.Constructs.csproj rename to constructs/ConstructsExample.csproj index 82eb5e52..5053f64e 100644 --- a/constructs/Ivy.Examples.Constructs.csproj +++ b/constructs/ConstructsExample.csproj @@ -6,7 +6,7 @@ enable enable CS8618;CS8603;CS8602;CS8604;CS9113 - Ivy.Examples.Constructs + ConstructsExample diff --git a/constructs/Ivy.Examples.Constructs.sln b/constructs/ConstructsExample.sln similarity index 87% rename from constructs/Ivy.Examples.Constructs.sln rename to constructs/ConstructsExample.sln index bc4f3b89..3546062f 100644 --- a/constructs/Ivy.Examples.Constructs.sln +++ b/constructs/ConstructsExample.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.5.2.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Constructs", "Ivy.Examples.Constructs.csproj", "{039638F3-A6D7-FB67-E733-27BD896EFDC4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConstructsExample", "ConstructsExample.csproj", "{039638F3-A6D7-FB67-E733-27BD896EFDC4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/constructs/Dockerfile b/constructs/Dockerfile index cd9ec834..2a496e4f 100644 --- a/constructs/Dockerfile +++ b/constructs/Dockerfile @@ -9,17 +9,17 @@ ARG BUILD_CONFIGURATION=Release WORKDIR /src # Copy and restore -COPY ["Ivy.Examples.Constructs.csproj", "./"] -RUN dotnet restore "Ivy.Examples.Constructs.csproj" +COPY ["ConstructsExample.csproj", "./"] +RUN dotnet restore "ConstructsExample.csproj" # Copy everything and build COPY . . -RUN dotnet build "Ivy.Examples.Constructs.csproj" -c $BUILD_CONFIGURATION -o /app/build +RUN dotnet build "ConstructsExample.csproj" -c $BUILD_CONFIGURATION -o /app/build # Publish stage FROM build AS publish ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "Ivy.Examples.Constructs.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=true +RUN dotnet publish "ConstructsExample.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=true # Final runtime image FROM base AS final @@ -31,4 +31,4 @@ ENV PORT=80 ENV ASPNETCORE_URLS="http://+:80" # Run the executable -ENTRYPOINT ["dotnet","./Ivy.Examples.Constructs.dll"] \ No newline at end of file +ENTRYPOINT ["dotnet","./ConstructsExample.dll"] \ No newline at end of file diff --git a/constructs/Domain/DemoConstruct.cs b/constructs/Domain/DemoConstruct.cs index fbed0b81..0e88f77c 100644 --- a/constructs/Domain/DemoConstruct.cs +++ b/constructs/Domain/DemoConstruct.cs @@ -1,6 +1,6 @@ using Constructs; -namespace Ivy.Examples.Constructs.Domain; +namespace ConstructsExample.Domain; ///

/// Represents a demonstration construct that builds a small construct tree for examples and tests. diff --git a/constructs/Domain/Traversal.cs b/constructs/Domain/Traversal.cs index 258b7a2f..30e4e8a6 100644 --- a/constructs/Domain/Traversal.cs +++ b/constructs/Domain/Traversal.cs @@ -1,6 +1,6 @@ using Constructs; -namespace Ivy.Examples.Constructs.Domain; +namespace ConstructsExample.Domain; /// /// Provides helpers for traversing and flattening a tree of instances. diff --git a/constructs/Extensions/ConstructExtensions.cs b/constructs/Extensions/ConstructExtensions.cs index 0efc5adf..7fa5e8ce 100644 --- a/constructs/Extensions/ConstructExtensions.cs +++ b/constructs/Extensions/ConstructExtensions.cs @@ -1,6 +1,6 @@ using Constructs; -namespace Ivy.Examples.Constructs.Extensions +namespace ConstructsExample.Extensions { /// /// Provides extension methods for working with instances. diff --git a/constructs/GlobalUsings.cs b/constructs/GlobalUsings.cs index 970fe426..cb65d1db 100644 --- a/constructs/GlobalUsings.cs +++ b/constructs/GlobalUsings.cs @@ -25,4 +25,4 @@ global using System.Globalization; global using System.Reactive.Linq; -namespace Ivy.Examples.Constructs; +namespace ConstructsExample; diff --git a/constructs/Program.cs b/constructs/Program.cs index 5c10b444..89fd01ae 100644 --- a/constructs/Program.cs +++ b/constructs/Program.cs @@ -1,4 +1,4 @@ -using Ivy.Examples.Constructs.Apps; +using ConstructsExample.Apps; CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US"); var server = new Server(); #if DEBUG From af18efdbf8c26ae191edbf442a97fa191358b78c Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 19:52:26 +0300 Subject: [PATCH 3/8] feat: improve better UI --- constructs/Apps/ConstructsApp.cs | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/constructs/Apps/ConstructsApp.cs b/constructs/Apps/ConstructsApp.cs index b41cfa02..a9037b25 100644 --- a/constructs/Apps/ConstructsApp.cs +++ b/constructs/Apps/ConstructsApp.cs @@ -4,7 +4,7 @@ namespace ConstructsExample.Apps; -[App(icon: Icons.PartyPopper, title: "Constructs (AWS)")] +[App(icon: Icons.PartyPopper, title: "Constructs")] public class ConstructsApp : ViewBase { private RootConstruct? _root; @@ -16,13 +16,13 @@ public class ConstructsApp : ViewBase var parent = UseState(string.Empty); var childId = UseState(string.Empty); var maxLines = UseState(MaxLines); + var client = UseService(); if (_root is null) { try { _root = DemoConstruct.BuildRoot(); - parent.Set(_root.Node.Path); } catch (Exception ex) { @@ -47,8 +47,7 @@ public class ConstructsApp : ViewBase LayoutView left = Layout.Vertical().Gap(6) | Text.H2("AWS Constructs — interactive demo") | Text.Block("Write a parent path, add a child construct, or reset to the canonical tree.") - | Text.Block("Parent path, ex. Root/Demo/Nested. Start typing to filter tree view.") - | parent.ToInput(placeholder: "Root") + | parent.ToInput(placeholder: "Parent path, ex. Root/Demo/Nested. Start typing to filter tree view.") | Text.Block("New child id") | childId.ToInput(placeholder: "ChildX") | ( @@ -62,35 +61,37 @@ public class ConstructsApp : ViewBase string newChildId = childId.Value.Trim(); if (string.IsNullOrWhiteSpace(newChildId)) { - status.Set("Enter a non-empty child id."); + client.Toast("Enter a non-empty child id."); return; } Construct? parentNode = _root.FindByPath(parentPath); if (parentNode == null) { - status.Set($"Parent path not found: {parentPath}"); + client.Toast($"Parent path not found: {parentPath}"); return; } _ = new Construct(parentNode, newChildId); childId.Set(string.Empty); - status.Set($"Added: {parentNode.Node.Path}/{newChildId}"); - }) - | new Button("Reset", onClick: () => + client.Toast($"Added: {parentNode.Node.Path}/{newChildId}"); + }).Icon(Icons.Plus) + | new Button("Reset", _ => { _root = DemoConstruct.BuildRoot(); - parent.Set(_root.Node.Path); - status.Set("Tree reset."); + parent.Set(string.Empty); + client.Toast("Tree reset."); maxLines.Set(MaxLines); - }) - ) - | (string.IsNullOrWhiteSpace(status.Value) ? Text.Block(string.Empty) : Text.Block(status.Value)); + }).Icon(Icons.RefreshCw) + ) + | Text.Small("This demo uses the AWS Constructs library to build composable configuration models.") + | Text.Markdown("Built with [Ivy Framework](https://github.com/Ivy-Interactive/Ivy-Framework) and [AWS Constructs](https://github.com/aws/constructs)") + ; // Build right (tree view) panel Card right = new Card( - Layout.Vertical().Gap(6).Padding(3) - | Text.Block("Current tree (subtree of the selected parent)") + Layout.Vertical().Gap(3).Padding(3) + | Text.H4("Current tree") | new Separator() | Text.Markdown("```text\n" + string.Join('\n', visible) + "\n```") | (hasMore @@ -99,14 +100,13 @@ public class ConstructsApp : ViewBase ? new Button("Collapse", onClick: () => maxLines.Set(MaxLines)) : Text.Block(string.Empty))) ) - .Width(Size.Units(180).Max(900)); + .Width(Size.Fraction(0.8f)); return Layout.Center() | new Card( Layout.Horizontal().Gap(12).Padding(3) | left | right - ) - .Width(Size.Units(340).Max(1000)); + ).Width(Size.Fraction(0.8f)); } } From ae82702ee3d0afc8eab9ed9a243b2aff55c72f87 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 19:54:27 +0300 Subject: [PATCH 4/8] feat: add devcontainer.json for constructs --- .devcontainer/constructs/devcontainer.json | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .devcontainer/constructs/devcontainer.json diff --git a/.devcontainer/constructs/devcontainer.json b/.devcontainer/constructs/devcontainer.json new file mode 100644 index 00000000..c585f907 --- /dev/null +++ b/.devcontainer/constructs/devcontainer.json @@ -0,0 +1,27 @@ +{ + "name": "Constructs", + "image": "mcr.microsoft.com/dotnet/sdk:9.0", + "features": {}, + "workspaceFolder": "/workspaces/Ivy-Examples/constructs", + "postCreateCommand": "dotnet tool install -g Ivy.Console", + "postStartCommand": "dotnet watch", + "forwardPorts": [5010], + "portsAttributes": { + "5010": { + "label": "Constructs", + "onAutoForward": "openPreview" + } + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-dotnettools.csharp", + "ms-vscode.powershell", + "ms-dotnettools.csdevkit" + ] + }, + "codespaces": { + "openFiles": ["Apps/ConstructsApp.cs"] + } + } + } \ No newline at end of file From 6226c5657e2e032f18d9629140edc12d6d7d085b Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 20:02:00 +0300 Subject: [PATCH 5/8] feat: add button "open in codespaces" and "Source Code" --- constructs/Program.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/constructs/Program.cs b/constructs/Program.cs index 89fd01ae..8e3d6b7a 100644 --- a/constructs/Program.cs +++ b/constructs/Program.cs @@ -6,6 +6,18 @@ #endif server.AddAppsFromAssembly(); server.AddConnectionsFromAssembly(); -var chromeSettings = new ChromeSettings().DefaultApp().UseTabs(preventDuplicates: true); +var customHeader = Layout.Vertical().Gap(2).Align(Align.Center) + | new Html(@" +
+ + + +
+ ") + | new Button("Source Code").Url("https://github.com/Ivy-Interactive/Ivy-Examples/tree/main/constructs").Icon(Icons.ExternalLink).Width(Size.Full()).Height(Size.Units(10)); +var chromeSettings = new ChromeSettings() + .DefaultApp() + .UseTabs(preventDuplicates: true) + .Header(customHeader); server.UseChrome(chromeSettings); await server.RunAsync(); From 836b99a191ff3739bae8c7baf04f7490053a7b0c Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 20:04:59 +0300 Subject: [PATCH 6/8] feat: change icon from PartyPopper to FileCode2 --- constructs/Apps/ConstructsApp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/constructs/Apps/ConstructsApp.cs b/constructs/Apps/ConstructsApp.cs index a9037b25..a49375e1 100644 --- a/constructs/Apps/ConstructsApp.cs +++ b/constructs/Apps/ConstructsApp.cs @@ -4,7 +4,7 @@ namespace ConstructsExample.Apps; -[App(icon: Icons.PartyPopper, title: "Constructs")] +[App(icon: Icons.FileCode2, title: "Constructs")] public class ConstructsApp : ViewBase { private RootConstruct? _root; From f8529c89401eba0a903af45ab668235e6cfb6d2a Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 20:11:14 +0300 Subject: [PATCH 7/8] feat: update README.md --- constructs/README.md | 135 ++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 79 deletions(-) diff --git a/constructs/README.md b/constructs/README.md index d5c1f717..e17449fb 100644 --- a/constructs/README.md +++ b/constructs/README.md @@ -1,100 +1,77 @@ -# Ivy Example: AWS Constructs +# AWS Constructs -An interactive Ivy demo showcasing the basics of the [`Constructs`](https://github.com/aws/constructs) .NET package inside a pure C# Ivy app: build a small construct tree, inspect node paths, and add child nodes at runtime. +Image ---- +## One-Click Development Environment -## Requirements +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=Ivy-Interactive%2FIvy-Examples&machine=standardLinux32gb&devcontainer_path=.devcontainer%2Fconstructs%2Fdevcontainer.json&location=EuropeWest) -- **.NET 9 SDK** -- **Node.js 20 LTS** for **Constructs/jsii** - The **Constructs** .NET package is built with **jsii** and launches a Node.js child process. +Click the badge above to open Ivy Examples repository in GitHub Codespaces with: +- **.NET 9.0** SDK pre-installed +- **Node.js 20 LTS** pre-installed (required for jsii/Constructs) +- **Ready-to-run** development environment +- **No local setup** required ---- +## Created Using Ivy -## Run +Web application created using [Ivy-Framework](https://github.com/Ivy-Interactive/Ivy-Framework). -From this `constructs/` folder: +**Ivy** - The ultimate framework for building internal tools with LLM code generation by unifying front-end and back-end into a single C# codebase. With Ivy, you can build robust internal tools and dashboards using C# and AI assistance based on your existing database. -```bash -dotnet restore -dotnet watch -# Open the printed URL (e.g., http://localhost:5010) -``` +Ivy is a web framework for building interactive web applications using C# and .NET. -If you see jsii/Node warnings or `$jsii.byref` errors, switch to **Node 20/22 LTS** and restart. That requirement comes from **Constructs/jsii**. +## Interactive Example For AWS Constructs ---- +This example demonstrates building composable configuration models using the [AWS Constructs library](https://github.com/aws/constructs) integrated with Ivy. Constructs are classes that define "pieces of system state" and can be composed together to form higher-level building blocks. -## What this demo shows +**What This Application Does:** -- **RootConstruct** as the root (no parent). -- **DemoConstruct** builds a canonical tree: +- **Build Construct Trees**: Create hierarchical construct structures with parent-child relationships +- **Interactive Tree Navigation**: Filter and view subtrees by specifying parent paths +- **Dynamic Node Addition**: Add new child constructs at runtime with custom IDs +- **ASCII Tree Visualization**: View the construct tree structure in a clean ASCII format +- **Tree Management**: Reset to canonical structure or expand/collapse large trees -``` -/Root -└─ Demo - ├─ ChildA - ├─ ChildB - └─ Nested - ├─ Leaf1 - └─ Leaf2 -``` +**Technical Implementation:** -- **Interactive actions** +- Uses AWS Constructs .NET package with jsii bridge to Node.js runtime +- Implements `RootConstruct` as the root node with no parent +- Creates canonical tree structure with Demo, ChildA, ChildB, and Nested constructs +- Provides interactive UI for tree manipulation and visualization +- Single C# view (`Apps/ConstructsApp.cs`) built with Ivy UI primitives - - Write **Parent path** (e.g., `Root`, `/Root/Demo/Nested`). - - **Add child** with any id (`new Construct(parent, id)`). - - **Reset** to the canonical tree. - - Compact **ASCII subtree** view with “Show more / Collapse”. +## How to Run ---- +1. **Prerequisites**: .NET 9.0 SDK and Node.js 20 LTS +2. **Navigate to the example**: + ```bash + cd constructs + ``` +3. **Restore dependencies**: + ```bash + dotnet restore + ``` +4. **Run the application**: + ```bash + dotnet watch + ``` +5. **Open your browser** to the URL shown in the terminal (typically `http://localhost:5010`) -## UI overview +## How to Deploy -- **Left**: Controls (parent input, new child id, Add, Reset, status) -- **Right**: Current tree (ASCII, limited to N lines) +Deploy this example to Ivy's hosting platform: -![screenshot](screenshot.jpg) +1. **Navigate to the example**: + ```bash + cd constructs + ``` +2. **Deploy to Ivy hosting**: + ```bash + ivy deploy + ``` +This will deploy your AWS Constructs interactive demo with a single command. ---- +## Learn More -## Project structure - -``` -constructs/ -├─ Apps/ -│ └─ ConstructsApp.cs -├─ Domain/ -│ ├─ Traversal.cs -│ └─ DemoConstruct.cs -├─ Extensions/ -│ └─ ConstructExtensions.cs -├─ README.md -├─ screenshot.jpg -└─ Ivy.Examples.Constructs.csproj -``` - -Namespaces follow `Ivy.Examples.Constructs.*`. The app is registered with `[App(...)]` in `ConstructsApp.cs`. - ---- - -## Why Node.js is needed (jsii) - -The **Constructs** .NET package is generated via **jsii** and talks to a **Node.js** runtime under the hood. Ivy does not require Node, but when you use jsii-based packages (like Constructs), the jsii bridge spins up a Node child process. That’s why **Node 20 LTS** is mandatory here. - ---- - -## Troubleshooting - -- **Infinite spinner / `$jsii.byref` / init failed** - Use **Node 20 LTS**, then: - - ```bash - dotnet clean - dotnet restore - dotnet watch - ``` - -- **Long tree output** - Select a deeper parent path (subtree view) and use “Show more / Collapse”. +- AWS Constructs GitHub repository: [github.com/aws/constructs](https://github.com/aws/constructs) +- Ivy Documentation: [docs.ivy.app](https://docs.ivy.app) \ No newline at end of file From e4dcde4116cef5e9cf9a5ecd994abdfcc0ddfabf Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 8 Oct 2025 20:13:47 +0300 Subject: [PATCH 8/8] feat: update README.md --- constructs/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/constructs/README.md b/constructs/README.md index e17449fb..0754deb5 100644 --- a/constructs/README.md +++ b/constructs/README.md @@ -8,7 +8,6 @@ Click the badge above to open Ivy Examples repository in GitHub Codespaces with: - **.NET 9.0** SDK pre-installed -- **Node.js 20 LTS** pre-installed (required for jsii/Constructs) - **Ready-to-run** development environment - **No local setup** required @@ -42,7 +41,7 @@ This example demonstrates building composable configuration models using the [AW ## How to Run -1. **Prerequisites**: .NET 9.0 SDK and Node.js 20 LTS +1. **Prerequisites**: .NET 9.0 SDK 2. **Navigate to the example**: ```bash cd constructs