eQuantic.UIeQuantic.UI
Docs
Playground
GitHub
DocsStart here
Getting Started
Edit this page
1 min read
🌐 This page in: English · Português
Not ready to install anything? Try it in the playground, the same compiler, in your browser.
Three commands, no Node, no bundlers, no JavaScript:
1
dotnet new install eQuantic.UI.Templates
1
dotnet new equantic-app -n MyApp
1
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
1
2
3
4
5
6
7
8
9
10
11
12
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, UseRequestLocalization for the cultures
├─ Components/
│ └─ StatTile.cs # your first component; its factory is generated from it
├─ Pages/
│ └─ HomePage.cs # [Page("/")], a write-once StatefulComponent
└─ Resources/
├─ Strings.resx # your strings: ordinary .NET resx, the only localization artifact
├─ Strings.pt-BR.resx
└─ Strings.Designer.cs
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.
Two languages from birth. The home page reads Strings.Tagline from the resx and renders a CultureSwitcher: click Português and the page re-renders in place, Contado {0} vezes. reformatting with the counter. Ship a third language by adding Strings.fr.resx and listing fr in UseRequestLocalization. See Localization for how the same class answers on the server, in the browser and in a native window.
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, and 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, and 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:
1
2
3
4
5
<configuration>
<packageSources>
<add key="equantic" value="PATH-OR-URL-TO-FEED" />
</packageSources>
</configuration>