Fundamentals
Everything is a Resource
Hantera is an extendable platform, and there's one core idea that ties it all together: everything is a resource.
Every "thing" in Hantera — whether it's an actor, a registry entry, a user, or an app — is addressable by a URI. No matter what you're working with, it shares this aspect. These resources form a hierarchical tree, similar to a file system on your computer. You'll see this tree reflected in the URIs that appear in API endpoints, manifest files, and permission paths:
actors/order/b3cf0d63-6ad7-4923-8060-90fb6935954d
registry/settings/shipping
iam/users/jane@example.com
components/my-componentIf you're familiar with Unix, you'll recognize the philosophy. Unix was built on the idea that everything is a file. Your printer, your network socket, your process — they all show up as files. That's also why your USB-connected printer shows up as a file in Linux, when it would probably be more natural to think of it as a device on a serial bus.
Hantera takes a similar but more intentional approach. Instead of squeezing everything into a single generic abstraction, different types of resources exist for very specific purposes. Each resource type understands what it represents and what you can do with it. It's a more powerful abstraction — which makes sense, given that it's been over 50 years since Unix was created.
Resource Classes
Resources are categorized into resource classes. Each resource class is its own subsystem with its own API, built to solve a specific category of problems. You can think of them as the top-level folders in the resource tree. Authorization can be tailored per resource, giving you fine-grained control over who can access what.
Resources and Apps
This is where Hantera differs from many other platforms. On most platforms, an app is the only way to extend the system. Think of it like an iPhone — installing an app is the only way to add an icon to the home screen or make the phone do anything beyond what's built into iOS.
Hantera is more like a Linux or Windows operating system. You can create and manage resources directly, without needing a packaged installer. There's nothing an app can do that you can't already do by managing resources individually. And in some cases, that's the better approach.
That said, when you want to distribute multiple resources as a single atomic unit — for reproducibility, reuse, and convenience — apps are very useful. An app is itself a resource, and it packages other resources together into a distributable unit that can be installed into any Hantera system. But apps are just one way to work with Hantera, not the only way.
Explore Resource Classes
- /resources/actors — Actors provide a way to model business entities in a powerful and scalable way.
- /resources/apps — Apps are packages that can extend Hantera by providing custom resources.
- /resources/components — Components are Filtrera scripts that can be used by other resources to provide custom functionality.
- /resources/files — Naturally manage large binary files, accessible from everywhere inside and outside Hantera.
- /resources/graph — The graph provides a graph query interface for querying data. The graph is read-only and updated by other resources, such as actors.
- /resources/iam — Identity and Access Management provides management of users and clients and their access.
- /resources/me — The "Me" resource provides access to the current authenticated user's profile and security features.
- /resources/ingresses — Ingresses enables receiving and process data from external systems.
- /resources/job-definitions — Job definitions define units of work that can be scheduled now or in the future.
- /resources/jobs — Jobs are executions of job-definitions. They can be scheduled in the future.
- /resources/registry — The registry is a key/value dynamic model that is used for global configuration.
- /resources/rules — Rules provide a framework for implementing custom business rules.
- /resources/sendings — Centralized system for managing communication such as e-mails.