Overview

The HumHub platform

HumHub provides a powerful modular platform based on the Yii2 Framework. The modular nature of HumHub allows developers to add new features or change the behavior of existing core features by means of custom modules.

Languages used throughout the platform are:

  • PHP
  • JavaScript
  • SQL (MySQL/MariaDB)
  • HTML
  • CSS/Less

HumHub is based on the Model-View-Controller (MVC) pattern and uses frontend frameworks such as:

In this guide you will find all the necessary information in order to customize your HumHub installation and implement your own modules. Since HumHub is based on the Yii 2.0 PHP Framework make sure you're also familiar with the basic concepts of Yii2:

Core modules and components

The HumHub core consists of a set of core modules, components, widgets, helpers and views, which can be used within your custom modules and are described in more detail within the Module Development section.

HumHub extends several Yii components such as:

  • humhub\components\ActiveRecord
  • humhub\components\Application
  • humhub\components\AssetManager
  • humhub\components\Controller
  • humhub\components\Event
  • humhub\components\ActiveRecord
  • humhub\components\Migration
  • humhub\components\Module
  • humhub\components\Request
  • humhub\components\Response
  • humhub\components\Theme
  • humhub\components\UrlManager
  • humhub\components\View
  • humhub\components\Widget
  • and more...

and consists of the following core modules:

ModuleDescription
activitySocial network activities
adminAdministration backend
commentContent add-on for commenting
contentBase module for all content types (Post,Wiki,...)
dashboardHumHub Dashboard overview
directoryHumHub Directory platform overview (User/Spaces/Groups)
fileBase file module for managing uploaded files
friendshipEnables user friendship relations
installerHumHub platform installer
likeContent add-on for likes
liveEnables live updates in the frontend
marketplaceMarketplace interface
notificationEnables notification over different targets
postSimple post content type
queueQueue module for asynchronous jobs
searchHumHub search abstraction + default implementation
spaceUser Spaces
streamContent Streams
topicContent topics used to categorize content entries
tourIntroduction tour (user-guide)
uiBase user interface components like widgets and theme logic
userHumHub user and authentication
webWeb standard related classes

Application structure

The following structure lists the main directories of a HumHub installation, whereas the humhub directory will be referred as web-root throughout this guide.

humhub
├── assets
├── protected
│ ├── config
│ ├── humhub
│ ├── modules
│ ├── runtime
│ └── vendor
├── static
├── themes
└── uploads
  • assets - Contains published assets as scripts and stylesheets managed by AssetBundles.
  • protected - Contains files as core and module sources and configuration files. The access to this directory needs to be protected in an production environment.
    • config - Contains user configuration files.
    • humhub - Contains all HumHub core files'
    • modules - This is the default directory used for searching for external modules.
    • runtime - Contains runtime related files as cache, search index and logs
    • vendor - Contains third party libraries
  • static - Static asset files as production assets, core javascript/less files etc.
  • uploads - File uploads, profile images etc.
info

See Yii2 - Application Structure for an in depth description of a Yii2 application.