Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
86 lines
3.8 KiB
Go
86 lines
3.8 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
/*
|
|
Package app provides the business logic layer for Mattermost Channels.
|
|
|
|
This package serves as the core business logic layer that sits between the API layer (api4)
|
|
and the data access layer (store). It contains the primary application logic for all
|
|
Mattermost functionality including user management, channel operations, post handling,
|
|
notifications, authentication, authorization, and integrations.
|
|
|
|
# Architecture
|
|
|
|
The app package follows a layered architecture pattern:
|
|
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ API Layer (api4) │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ Business Logic (app) │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ Data Access (store) │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
|
|
# Core Components
|
|
|
|
## App Structure
|
|
|
|
The App struct is the main entry point for business logic operations. It is a pure
|
|
functional component that does not hold state, constructed per request and provides
|
|
access to business logic methods through its association with the Channels struct.
|
|
|
|
## Server
|
|
|
|
The Server struct manages the HTTP server, routing, middleware, and service lifecycle.
|
|
It coordinates between platform services, manages enterprise features, handles
|
|
clustering, and provides the runtime environment for the application.
|
|
|
|
## Channels
|
|
|
|
The Channels struct contains all channels-related state and enterprise interface
|
|
implementations. It manages plugins, file storage, image processing, and coordinates
|
|
various enterprise features like compliance, LDAP, and SAML.
|
|
|
|
## Platform Service
|
|
|
|
The platform service handles non-entity related functionalities required by the
|
|
application including database access, configuration management, caching, licensing,
|
|
metrics, and search engines.
|
|
|
|
# Design Patterns
|
|
|
|
## Request Context Pattern
|
|
All business logic methods accept a request.CTX parameter for request-scoped
|
|
logging, tracing, and cancellation.
|
|
|
|
## Interface Segregation
|
|
Enterprise features are accessed through interfaces in the einterfaces package,
|
|
allowing for modular enterprise functionality.
|
|
|
|
## Dependency Injection
|
|
Services and dependencies are injected through the Server and Channels structs,
|
|
enabling testability and modularity.
|
|
|
|
## Event-Driven Architecture
|
|
The application uses WebSocket events and plugin hooks for real-time updates
|
|
and extensibility.
|
|
|
|
# Key Responsibilities
|
|
|
|
- Business logic: Core application rules and workflows
|
|
- Data orchestration: Coordinate between multiple stores and services
|
|
- External integrations: Third-party service calls and API interactions
|
|
- Cache management: Handle cache invalidation and updates
|
|
- Event handling: Trigger notifications, webhooks, and background jobs
|
|
|
|
# Error Handling
|
|
|
|
The package uses model.AppError for consistent error handling across the
|
|
application. Errors include structured information for logging, user
|
|
messages, and HTTP status codes.
|
|
|
|
This package is central to the Mattermost server architecture and provides
|
|
the foundation for all collaboration features in the platform.
|
|
*/
|
|
package app
|