Free & open source · Self-hosted

The team workspace your Nextcloud was missing

TeamHub turns every Nextcloud Team into a real workspace — with messages, an activity feed, configurable widgets, and one-click access to the team's Talk chat, Files folder, Calendar and Deck board.

Get on GitHub How it differs from Nextcloud Teams ↓
Runs on your own Nextcloud server
Nextcloud 32 – 34
PHP 8.1 – 8.4
PostgreSQL & MySQL/MariaDB
AGPL-3.0
How it relates to Nextcloud Teams

Built on Nextcloud Teams — but a different layer

Nextcloud Teams (formerly Circles) is the membership backbone. TeamHub is the workspace experience built on top of it. The two are complementary, not competing.

```

Nextcloud Teams answers the question "who is in this group?" — it provides the list of people that any other Nextcloud app can share with. It lives mainly in the Contacts app.

TeamHub answers the question "where does this team work?" — it gives every team a dedicated home in the top navigation, with messages, activity, widgets and direct links into the team's shared Talk room, Files folder, Calendar and Deck board.

Nextcloud Teams (Circles)

The membership backbone

Ships with Nextcloud · Used as the group primitive across the Hub

What it does

  • Lets users create groups of colleagues, friends or contacts
  • Provides a sharing target — Files, Talk, Deck, Calendar all share with a Team
  • Supports member levels (Member, Moderator, Admin, Owner) and federation
  • A small Dashboard widget surfaces resources shared with the team

Where it lives

  • Inside the Contacts app — as a sub-section
  • Surfaces in Unified Search and the Sharing menu of other apps

What it does not do

  • — No team home page or message stream
  • — No automatic provisioning of a Talk room, Files folder, Calendar or Deck board for the team
  • — No team activity feed across resources
  • — No browse-and-discover view of all teams
  • — No widget grid, no extension API for other apps
TeamHub

The team workspace

Installs alongside · Wraps Teams + Talk + Files + Calendar + Deck

What it adds

  • A dedicated app in the top navigation — every team gets a real home page
  • Auto-provisions a Talk room, Files folder, Calendar and Deck board per team
  • Tab bar per team linking directly to those shared resources, plus custom URLs
  • Persistent message stream — announcements, polls, threaded comments
  • 30-day activity feed across files, calendar, Deck and members
  • Configurable, per-user widget grid on the team home view
  • Browse-teams directory with search and request-to-join
  • Open API — any Nextcloud app can register widgets or tab iframes
  • Admin governance — restrict team creation, control invitation types

What it reuses from Nextcloud Teams

  • Membership records — same teams, same members, same federation
  • Member levels and visibility settings
  • Sharing infrastructure for files, calendar, Talk and Deck

The two work together — by design

TeamHub does not replace Nextcloud Teams. Every team you see in TeamHub is a real Nextcloud Team in the database, accessible from the Contacts app and shareable from any other Hub app. Removing TeamHub does not remove your teams or your shares — it just removes the dedicated workspace UI on top of them.

```
Architecture

A layer on top of the apps you already run

TeamHub does not reinvent chat, files, calendar or task management — it composes them into one team-scoped workspace. Each integration is auto-detected; missing apps simply have their tab and widget hidden.

```
Layer 3 · Workspace UI

TeamHub

Tab bar · Message stream · Activity feed · Widget grid · Browse Teams · Admin settings · Integration API

Layer 2 · Collaboration apps (auto-detected)

Nextcloud Talk · Files · Calendar · Deck · IntraVox

TeamHub provisions per-team resources in each installed app and surfaces them in the team workspace. If an app is missing, its tab and widget are hidden automatically.

Talk room Files folder Calendar Deck board IntraVox pages (optional)
Layer 1 · Membership backbone (the biggest enabler)

Nextcloud Teams (Circles)

The group primitive — who belongs to which team, with what role, and which other apps they can share with. TeamHub reads and writes through this layer for every membership operation; it never invents its own user-group model.

Foundation

Your Nextcloud server

Nextcloud 32 – 34 · PHP 8.1 – 8.4 · PostgreSQL or MySQL/MariaDB · Self-hosted, AGPL-3.0

```
What TeamHub does

Headlines first — click any feature for the full story

Each card opens to show how the feature works, what it integrates with, and how it differs from the underlying Nextcloud app on its own.

```

Team workspace with a per-team tab bar

Each team gets its own home in TeamHub, with tabs linking directly to its shared Talk, Files, Calendar and Deck.

Open a team in TeamHub and you land on its home view. A tab bar runs across the top — Home, Chat, Files, Calendar, Deck, plus any custom links the team admin has added. Each tab opens that app already scoped to the team's shared resource. No more hunting for "which folder is the team's", no more guessing which Talk room is the right one.

Auto-provisioned

The Talk room, Files folder, Calendar and Deck board are created automatically when the team is created. No manual setup.

Auto-detected

If Talk, Calendar or Deck is not installed, the corresponding tab simply does not appear. Nothing to configure.

Per-user tab order

Each user can drag tabs into their preferred order. The order is saved per user, per team.

Custom URL tabs

Team admins can add any URL as a tab — internal apps, external dashboards, anything.

TalkFilesCalendarDeckNextcloud Teams (membership)
How it integrates On team creation, TeamHub uses the Nextcloud Teams API to create the underlying team, then calls each installed app's API to create the per-team resource. Resource IDs are stored against the team so subsequent tab clicks resolve to exactly the right place.

Configurable widget grid on the home view

A drag-and-drop grid of widgets — calendar, tasks, files, members, activity, pages — saved per user per team.

The team home view is a configurable grid of widgets. Each widget pulls live data from the team's shared apps. The widget grid is fully drag-and-drop in edit mode — every widget can be moved, resized, or removed, and the message stream itself is resizable. Layout is persisted per user per team, with a per-user default that applies to any team they have not yet customised.

Upcoming events

Next calendar entries with a "Schedule meeting" action that creates both a Talk call and a calendar event in one step.

Open Deck tasks

Open cards from the team's Deck board, sorted by due date. Add new tasks straight from the widget.

Recent & favourite files

Two separate widgets: most recently modified files in the team folder, and files starred by the user inside it.

Members

Avatar stack of all team members with member count. Moderators can invite from the widget header.

Activity snapshot

The 5 most recent events across all team resources, with a "More" link to the full 30-day activity feed.

Pages (IntraVox)

Wiki pages from the team's IntraVox space. Auto-hides if IntraVox is not installed.

CalendarDeckFilesIntraVox (optional)Per-user layout
How it integrates Each built-in widget queries the corresponding Nextcloud app directly through its OCP service or DB layer — no HTTP loopback. Third-party widgets are called through the same in-process integration API used by IntraVox.

Team messages — a persistent announcement board

Threaded, editable, attachment-friendly messages built for things you want to find again later — not for ephemeral chat.

The message stream sits in the centre of every team's home view. Unlike Talk — which is optimised for live conversation that scrolls away — TeamHub messages are designed to be persistent reference material: announcements, polls, decisions, links to documents that the whole team should see once and remember.

Threaded comments

Every message has its own threaded comment section, so discussion stays grouped with the announcement it relates to.

Inline editing

Authors can edit their own messages after posting — useful for fixing typos in pinned announcements.

Polls and questions

Special message types for collecting team input without leaving the home view.

Attachments & previews

Attach files from the team's Files folder. Pasted URLs render as link previews.

Notifications

Members get a Nextcloud notification when a new message is posted. Comments don't notify, to avoid noise.

Unread indicators

The team list shows an unread badge for any team with messages you haven't seen.

Nextcloud NotificationsPersistent — not ephemeral
How it differs from Talk Talk is built for synchronous conversation — fast scroll, ephemeral feel, video calls. TeamHub messages are built for reference — they sit on the home view, support threading per message, and are designed to still be useful three months later.

30-day activity feed across every team resource

One timeline showing file changes, calendar events, Deck card updates and member joins — grouped by day.

The activity feed answers the question every team member asks on Monday morning: "what happened while I was away?". It pulls from Nextcloud's activity stream and filters it to the resources scoped to the team — so file uploads in the team folder appear, but file uploads anywhere else on the server do not.

The compact Activity widget sits on the home view and shows the 5 most recent events. The full Activity feed view opens as a full-canvas page showing 30 days of history grouped by day.

Files

Uploads, edits, renames, deletes inside the team's shared folder.

Calendar

Event creations and updates on the team calendar.

Deck

Card creations, description and assignment changes, stack changes on the team board.

Talk

Calls and notable events in the team's shared Talk room.

Membership

Joins, leaves, role changes — visible to all members.

Messages

New TeamHub messages and edits to existing ones.

How it integrates The feed queries Nextcloud's oc_activity table directly with team-scoped filters: file activity is matched on team folder ID, Deck activity on board and card IDs, Calendar on calendar ID, Talk on numeric room ID. PostgreSQL and MySQL/MariaDB are both supported.

Full team management UI on top of Nextcloud Teams

Create teams, invite by user / group / email / federated account, manage roles, transfer ownership, upload a team logo.

The Manage Team panel covers everything a team owner or moderator needs without leaving TeamHub. Behind the scenes every operation goes through the Nextcloud Teams API — the team you create here is the same team that shows up in the Contacts app, in Files sharing, in Talk's Circles picker, and everywhere else.

Create & configure

Name, description, visibility (open / invite-only / protected / request-to-join), and per-team app enable/disable.

Invite anyone

Local users, groups, email addresses, or federated accounts — each invite type can be globally enabled or disabled by admins.

Roles & ownership

Promote members to moderator or admin. Owners can transfer ownership to any existing team member.

Team logo

Upload a JPG, PNG, GIF or WebP. Shown on the team home view and in the browse-teams directory.

Join requests

For request-to-join teams, moderators see pending requests with one-click approve/reject.

Maintenance tab

Owners can transfer ownership or delete the team. Deletes properly clean up Talk room, Files folder, Calendar and Deck board.

Nextcloud Teams APIFederated accounts

Browse and join teams across your organisation

A directory view of every visible team — search by name or description, see member counts, request access or join directly.

Discoverability is one of the things the stock Nextcloud Teams UI does not really solve. TeamHub adds a dedicated Browse Teams view that lists every team with the visible flag set, with grid and list display modes, search, and the team logos rendered inline. From there a user can request to join (for closed teams) or join directly (for open teams).

Grid & list view

Toggle between visual grid (with logos) and compact list.

Live search

Filter by name or description as you type.

One-click join

For open teams, join directly. For closed teams, send a join request to the moderators.

Membership status

Each card shows whether you're a member, have a pending request, or can join.

How it integrates Browse Teams reads team visibility flags directly from Nextcloud's Circles tables, with SQL-side filtering for membership and visibility. No full table scans into PHP — works smoothly even on instances with thousands of teams.

Custom tab links and per-team app toggling

Add any URL as a tab. Disable apps you don't want for a specific team. Different teams, different setups.

Not every team needs every app, and many teams have external tools (BI dashboards, marketing sites, internal wikis) that they want one click away. TeamHub addresses both:

Custom URL tabs

Team admins can add any URL as a tab with a custom label and icon. Validated to reject javascript: and other unsafe schemes.

Per-team app disable

If a team doesn't need Deck or Calendar, switch them off. The tab disappears for everyone in the team.

Reorderable per user

Each user drags tabs into their own preferred order. Saved per user per team.

Shareable team links

Copy a direct deep link to any team. Members land straight on the team home view.

Admin governance for organisation-wide rollout

Restrict who can create teams, customise the creation wizard, control invitation types, audit and repair team integrity.

For larger Nextcloud installations, just letting every user create teams freely is rarely the right policy. TeamHub's admin settings panel — which lives inside Nextcloud's standard admin area, not in a separate portal — gives IT admins the controls they need to roll TeamHub out across an organisation.

Restrict team creation

Limit team creation to specific Nextcloud groups (e.g. "managers", "department-heads").

Custom wizard text

Customise the welcome text shown at the top of the team creation dialog — naming conventions, governance reminders, etc.

Invitation types

Toggle which invitation methods are available to team admins: local users, groups, email addresses, federated accounts.

Teams overview

Paginated, searchable list of every team on the instance. Set owner, delete with full resource cleanup.

Membership cache repair

Detect and repair Circles membership cache mismatches that would otherwise hide a team from share pickers.

No external accounts

Everything lives in your Nextcloud admin panel. No separate logins, no SaaS dashboard.

Nextcloud admin panelNo external services

Open integration API for any Nextcloud app

Other apps can register sidebar widgets or full tab iframes into the team workspace, with one PHP call from their bootstrap.

TeamHub is built to be extended. Any other Nextcloud app installed on the same instance can register one of two integration types — and team admins decide per team whether to enable them.

Sidebar widget

Implement a single PHP interface returning items and optional action buttons. Your widget appears in the home view's widget grid.

Tab iframe

Provide a URL — your app opens in a sandboxed iframe as a tab in the team's tab bar, scoped to the current team.

In-process — no HTTP

Registration and widget calls happen inside the same PHP process via DI. No loopback, no credentials forwarded.

Per-team opt-in

Team admins enable each integration per team, so different teams can have different widgets and tabs.

For developers See the full developer guide for the ITeamHubWidget interface, registration patterns, and example code. The companion app IntraVox uses this same API for its Pages widget.
```
Integrations

Auto-detected. No manual configuration.

TeamHub looks at what's installed on your Nextcloud and turns on the matching tabs and widgets. Missing apps are simply hidden — no errors, no setup screens.

```
Companion app — install both for full functionality

IntraVox — team wiki pages, built right in

When IntraVox is installed on the same Nextcloud instance, TeamHub automatically activates a Pages widget for every team. Create, browse and link team documentation without leaving the team view.

Pages widget appears automatically on every team home view
Team moderators can create and delete pages directly from the widget
Main team page and all sub-pages listed with direct links
No setup required — TeamHub detects IntraVox automatically
Companion appInstall alongside TeamHub
Built on these Nextcloud apps
Nextcloud Teams
Membership backbone — required
Calendar
Events + meeting scheduler
Deck
Tasks + board view
Files
Shared team folder
Talk
Team chat + video calls
Your app via API
Widgets or tab iframes
Only Nextcloud Teams is required. All other integrations are auto-detected — if an app isn't installed, its tab and widget are simply hidden.
```
Who it's for

Built for teams that already live in Nextcloud

If you've ever wished a Nextcloud team felt more like a real workspace and less like a sharing target, TeamHub is for you.

Project teams

Cross-functional groups that need shared tasks, files, a recurring meeting, and a place to post status updates that don't disappear into a chat scroll.

Departments

Long-running organisational units (Marketing, Engineering, HR) that want a stable home page with their resources, announcements and team-wide activity.

Boards & committees

Smaller groups where governance matters — closed membership, request-to-join, polls for decisions, and a clear audit trail in the activity feed.

External collaborations

Federated teams across multiple Nextcloud servers using Nextcloud Teams' federation, with TeamHub providing the workspace UI on top.

Developer API

Built for extensibility

Any Nextcloud app installed on the same instance can register integrations into TeamHub. Two integration types are supported and an app can register one or both:

Widget — sidebar card with items & actions
Tab — secure iframe embedded as a tab
  • 1
    Register from your app's bootstrap using TeamHub's IntegrationService — one function call, no HTTP, no credentials forwarded
  • 2
    Implement ITeamHubWidget — return items and optional action buttons for the widget header
  • 3
    Team admins enable your integration per team from the Integrations tab in Manage Team
  • 4
    Your widget or tab appears in the team home view alongside native TeamHub widgets
// 1. Register in Application::boot()
$integrationService->registerIntegration(
  appId:           'myapp',
  integrationType: 'widget',
  title:           'My App Widget',
  phpClass:        MyWidget::class,
  calledInProcess: true,
);

// 2. Implement ITeamHubWidget
class MyWidget implements ITeamHubWidget {
public function getWidgetData(
string $teamId,
string $userId
): array {
return [
‘items’   => $this->getItems($teamId),
‘actions’ => $this->getActions($teamId),
];
}
}

Give your teams a proper home

Free, open source, and self-hosted. Runs entirely on your own Nextcloud server, on top of the apps you already trust.

View on GitHub Explore features

Install from source · Nextcloud 32 – 34 · AGPL-3.0