= Web Portal Admin

The administration of the web portal happens with Django Admin.

[TIP]
====
* Production: https://portal.servala.com/admin[portal.servala.com^]
* Staging: https://staging.portal.servala.com/admin[staging.portal.servala.com^]
====

== Service Catalog and Control-Plane Models

image::portal-service-relations.drawio.svg[]

Service::
The software service, top-level, categorized. +
_Examples_: PostgreSQL, Redis, GitLab. +
Admin: https://staging.portal.servala.com/admin/core/service/[staging^], https://portal.servala.com/admin/core/service/[prod^]

Service Definition::
A correlation between a specific managed service offering with the API definition on the control-planes. It tells the Portal which Kubernetes API implements a managed service. +
_Example_: "Forgejo by VSHN" is implemented by GVK `vshn.appcat.vshn.io/v1/VSHNForgejo` on the control-planes. +
Admin: https://staging.portal.servala.com/admin/core/servicedefinition/[staging^], https://portal.servala.com/admin/core/servicedefinition/[prod^]

Service Offering::
The service offering is the glue which connects a service with a service provider, the control-planes with the service definitions and plan information. It essentially tells the Portal which managed service is available on which control-plane with which specific configuration. It relates to "ControlPlane CRD" which is a correlation between "Service Offering", "Control Plane" and "Service Definition".
_Example_: "Forgejo at Hetzner Cloud" which makes the Service "Forgejo" available at Hetzner Cloud and through "ControlPlane CRDs" it defines which service definition is available in which control-plane at Hetzner Cloud. It also specifies plans with features, pricing and terms. +
Admin: https://staging.portal.servala.com/admin/core/serviceoffering/[staging^], https://portal.servala.com/admin/core/serviceoffering/[prod^]

== Models

In addition to the models described in <<Service Catalog and Control-Plane Models>>, the following core models exist:

Cloud Providers::
Cloud providers where service instances can be provisioned at.

Control Planes::
Connections to Kubernetes API servers. Each control-plane represents a zone at a cloud provider.

Organizations::
The main multi-tenant object.

Organization Memberships::
Defines organization memberships including the roles in an organization.

Organization Origins::
The origin of an organization. Where the organization is coming from, influences e.g. access to control-planes or service offerings.

Billing Entities::
Billing contacts for Organizations - this is not further implemented yet.

Plans::
Plans for service offerings.

Service Categories::
Allows to categorize services.

Service Instances::
Service instances provisioned on control-planes.
