Skip to content

GettingStarted

Edgar Mesquita edited this page Aug 9, 2026 · 2 revisions

Getting Started

Three commands, no Node, no bundlers, no JavaScript:

dotnet new install eQuantic.UI.Templates
dotnet new equantic-app -n MyApp
cd MyApp && dotnet run

Open the printed URL: a themed, server-rendered page whose counter is a C# component — a state field, a handler, and a Build method. The build compiled it to JavaScript for you (the embedded toolchain does the bundling; there is nothing to install).

What the template gives you

MyApp/
├─ MyApp.csproj        # <Project Sdk="eQuantic.UI.Sdk"> — that line IS the build pipeline
├─ global.json         # pins the SDK version (stamped by the template)
├─ Program.cs          # AddUI → UseTheme → MapUI
├─ Components/
│  └─ StatTile.cs      # your first component — its factory is generated from it
└─ Pages/
   └─ HomePage.cs      # [Page("/")] — a write-once StatefulComponent
  • Pages are classes with [Page("/route")]. SSR, hydration, client-side navigation, a true 404 for unknown routes (declare [Page("/404")] to brand it) — all wired.
  • Writing a tree needs no new and no import: Column(gap: Space.S4, children: [ Text("Hi"), Button("Go") ]). Your own components join that surface automatically — StatTile(…) in the template is yours. See Declarative Surface.
  • Theming is one line: swap PhotonTheme.Instance for MaterialTheme.FromSeed(color) in Program.cs and every component rebrands, server and client.
  • Server data goes through [ServerAction] methods — called from the browser as ordinary C# awaits.
  • Hot reload: run with dotnet watch and save a file — the browser updates with your page state replayed.
  • The same component source realizes NATIVELY on the Photon engine (macOS/iOS/Android shells) — see Photon.

Local/preview feeds

Until packages are on nuget.org, point a nuget.config at the feed that carries them:

<configuration>
  <packageSources>
    <add key="equantic" value="PATH-OR-URL-TO-FEED" />
  </packageSources>
</configuration>

Clone this wiki locally