AltCommerce 4.90 · permission-scoped AI assistants are live Open the demo →
ALTAI
Documentation

Install, buildand upgrade.

For technical teams. Everything you need when you take the installation over is here; nothing is left in our heads.

Installation

AltCommerce runs on ASP.NET Core 9. You can use PostgreSQL 17 or SQL Server. The installation goes onto your own server; the application listens on the local interface only and is exposed through a reverse proxy.

configuration · App_Data/appsettings.json
  1. {
  2. "ConnectionStrings": {
  3. "ConnectionString": "Host=localhost;Database=altcommerce;...",
  4. "DataProvider": "postgresql"
  5. }
  6. }

The section must be named ConnectionStrings. With the wrong name the application treats the database as not installed, redirects every request to the setup wizard, and migrations never run. The file must be UTF-8 without a BOM.

Module development

Modules are separate projects loaded at runtime. This is how you add functionality without touching the core, and it is why your module is carried forward on upgrades.

A module needs at least a plugin.json manifest and a plugin class. If it has an admin screen, add an area controller and views. If it changes the data schema, write a migration class — do not run SQL by hand; migrations keep a version record.

Writing an assistant tool

Every tool declares the permission it requires. The domain name is derived from the part of the permission before the dot, so there is no mapping table to maintain. Dependency registration is automatic.

example · read-only tool
  1. public class LowStockTool : BaseAgentTool
  2. {
  3. public override string Name => "low_stock";
  4. public override string RequiredPermissionSystemName =>
  5. StandardPermission.Reports.LOW_STOCK;
  6. public override async Task<string> ExecuteAsync(...)
  7. {
  8. // call the service layer, not the raw repository:
  9. // ACL and store scoping are applied that way
  10. }
  11. }

For a tool that writes, set RequiresConfirmation to true and describe the outcome in one sentence inside DescribeAction. That sentence is the text the user sees in the approval box.

Version upgrades

A core update does not arrive as a patch carried by hand; it comes through a repeatable transformation. Because your customisations sit in a layer separate from the core, the difference between two versions can be computed and applied to your installation as a patch.

In practice this means branding and redesign do not cost you the ability to take updates. The capability most customised installations lose is still here.

Maintenance

Backup, health check and notification scripts ship with the installation. Backups run on scheduled tasks, the health check verifies at intervals that the application is up, and it sends an alert when something is wrong.

A backup is not a backup until it has been restored. On installations under maintenance we run the restore drill ourselves.

Meet the AI assistants

We will open a demo account for you — try it with your own product data. No installation, half an hour is enough.

Where do I start?