Skip to content

Base Abstractions

Core classes that power every Ignis application - from the Application entry point to Repositories for data access.

Quick Reference

ClassPurposeExtends
BaseApplicationApplication entry point, DI containerAbstractApplication
BaseRestControllerREST/HTTP route handlersAbstractRestController
BaseGrpcControllergRPC route handlers (ConnectRPC)AbstractGrpcController
BaseServiceBusiness logic layer-
BaseProviderFactory pattern for runtime instantiationBaseHelper
BaseComponentPluggable feature modules-
BaseDataSourceDatabase connections-
BaseEntityModel definitions-
DefaultCRUDRepositoryFull CRUD operationsPersistableRepository
ReadableRepositoryRead-only operationsAbstractRepository

Architecture

┌──────────────────────────────────────────────────────────────┐
│                     BaseApplication                          │
│  (DI Container + Lifecycle + Server Management)              │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────────────┐  ┌─────────────┐  ┌──────────────┐    │
│  │BaseRestController │  │ BaseService  │  │BaseComponent │    │
│  │  (REST Layer)     │  │(Biz Logic)  │  │ (Plugins)    │    │
│  ├──────────────────┤  └──────┬───────┘  └──────────────┘    │
│  │BaseGrpcController │        │                              │
│  │  (gRPC Layer)     │        │                              │
│  └────────┬──────────┘        │                              │
│           └─────────┬─────────┘                              │
│                     ▼                                        │
│          ┌──────────────────────┐                            │
│          │DefaultCRUDRepository │                            │
│          │  (Data Access)       │                            │
│          └──────────┬───────────┘                            │
│                     │                                        │
│          ┌──────────┴──────────┐                             │
│          ▼                     ▼                             │
│   ┌──────────────┐      ┌────────────┐                      │
│   │BaseDataSource │      │ BaseEntity │                      │
│   │(Connection)   │      │  (Schema)  │                      │
│   └───────────────┘      └────────────┘                      │
│                                                              │
└──────────────────────────────────────────────────────────────┘

What's in This Section

Core Application

  • Application - BaseApplication class, resource registration, lifecycle hooks
  • Bootstrapping - Startup sequence, initialize() flow

Transport Layer

  • REST Controllers - REST route handlers, decorators, request/response handling
  • gRPC Controllers - gRPC/ConnectRPC handlers, RPC decorators
  • Middlewares - Built-in middlewares for error handling, logging, and request processing
  • Services - Business logic, injectable services

Dependency Injection

Data Layer

Class Hierarchy

AbstractApplication
└── BaseApplication ──────► Your Application

AbstractRepository
├── ReadableRepository
│   └── PersistableRepository
│       └── DefaultCRUDRepository ──────► Your Repository

AbstractRestController
└── BaseRestController ──────► Your REST Controller

AbstractGrpcController
└── BaseGrpcController ──────► Your gRPC Controller
BaseService ──────► Your Service
BaseProvider ──────► Your Provider
BaseComponent ──────► Your Component
BaseDataSource ──────► Your DataSource
BaseEntity ──────► Your Model

Related: Core Concepts Guide | Persistent Layer Guide