MCPSERV.CLUB
Movim

Movim

Self-Hosted

Federated XMPP blogging and chat hub

Active(100)
1.8kstars
0views
Updated 2 days ago
Movim screenshot

Overview

Discover what makes Movim powerful

Movim is a federated blogging and chat platform that exposes the XMPP protocol through an intuitive web interface. It acts as a *gateway* between end‑users and the XMPP network, providing rich features such as real‑time chatrooms, video conferencing, community nodes, and a lightweight blogging engine. From a developer’s perspective, the core value lies in its open‑source architecture, modular design, and adherence to standards, allowing seamless integration with existing XMPP infrastructure.

Frontend

Backend

Database

XMPP Integration

Overview

Movim is a federated blogging and chat platform that exposes the XMPP protocol through an intuitive web interface. It acts as a gateway between end‑users and the XMPP network, providing rich features such as real‑time chatrooms, video conferencing, community nodes, and a lightweight blogging engine. From a developer’s perspective, the core value lies in its open‑source architecture, modular design, and adherence to standards, allowing seamless integration with existing XMPP infrastructure.

Technical Stack & Architecture

  • Frontend: Built with modern JavaScript (ES6+), leveraging the React framework for component‑driven UI. State management is handled by Redux, and routing via React Router. The frontend communicates with the backend through a RESTful API and WebSocket for real‑time events.
  • Backend: Implemented in PHP 8, using the Laravel framework. Laravel’s service container and Eloquent ORM provide a clean abstraction over the database layer.
  • Database: Supports PostgreSQL and MySQL; migrations are managed through Laravel’s migration system. The schema is lightweight, focusing on user accounts, messages, and community nodes.
  • XMPP Integration: The core of Movim is its XMPP bridge, written in PHP using the Strophe.js library on the client side and the php-jabber library on the server side. This dual‑stack ensures bidirectional communication with any compliant XMPP server (ejabberd, Prosody, Openfire, etc.).
  • Real‑Time Engine: WebSocket connections are established via Laravel Echo and powered by Socket.IO, enabling instant message delivery and presence updates without polling.

Core Capabilities & APIs

  • Federated Presence: Exposes user presence across multiple XMPP servers; developers can query or subscribe to presence changes through the WebSocket API.
  • Multi‑Server Support: Configurable to connect to one or several XMPP servers simultaneously, with per‑server routing for messages and presence.
  • Community Nodes: Implements XMPP PubSub nodes, allowing developers to create or consume community feeds programmatically via the REST API.
  • Webhooks: External services can subscribe to events (e.g., new messages, node updates) via HTTP callbacks.
  • Plugin System: A modular architecture where plugins are PHP classes registered in config/plugins.php. Plugins can hook into events, expose new routes, or add UI components.

Deployment & Infrastructure

  • Self‑Hosting: Runs on any LAMP stack (Linux, Apache/Nginx, MySQL/PostgreSQL, PHP). Docker images are available for quick deployment; containers expose ports 80/443 and can be orchestrated with Docker Compose or Podman.
  • Scalability: Horizontal scaling is straightforward—stateless PHP workers behind a load balancer, with Redis for session storage and caching. The WebSocket layer can be scaled using a message broker (Redis Pub/Sub) to share state across instances.
  • Containerization: Official Docker images are built from Alpine‑based PHP runtime, ensuring minimal footprint. The CI pipeline automatically builds and pushes images to Docker Hub.

Integration & Extensibility

  • REST API: Full CRUD operations for users, messages, and nodes. OAuth2 support is available via Laravel Passport.
  • WebSocket API: Real‑time events for chat, presence, and node updates. Clients can subscribe to specific rooms or user streams.
  • Custom Themes: The UI is themeable through CSS overrides and optional SASS variables, allowing developers to brand the interface.
  • Third‑Party Plugins: Community plugins cover functionalities like calendar integration, file sharing, and analytics. The plugin API exposes lifecycle hooks (onMessage, onPresence) for deep customization.

Developer Experience

  • Documentation: Comprehensive README, INSTALL.md, and a dedicated Wiki provide clear guidance on setup, configuration, and plugin development. API docs are auto‑generated using Swagger/OpenAPI.
  • Community: Active GitHub discussions, a public Slack channel, and a Transifex project for translations. The AGPLv3 license encourages collaboration while ensuring the software remains open.
  • Testing: Unit tests written in PHPUnit cover core logic; integration tests use Laravel’s testing utilities. CI pipelines run on GitHub Actions, ensuring code quality before releases.

Use Cases

  • Enterprise Communication Hub: Organizations can deploy Movim on their own servers to provide a unified chat and blogging platform that stays within corporate firewalls while still interoperating with external XMPP clients.
  • Community Platforms: Open‑source projects or NGOs can host a Movim instance to foster discussion, publish updates, and manage community nodes without relying on third‑party social networks.
  • Educational Tools: Universities can use Movim as a teaching aid for distributed systems, demonstrating real‑time communication over XMPP while allowing students to develop plugins.

Advantages

  • Standards‑Based: Full XMPP compliance ensures interoperability with thousands of existing clients and servers.
  • Open Source & AGPLv3: Guarantees freedom to modify, extend, and host the software without licensing constraints.
  • Modular & Extensible: Plugin architecture lets developers add bespoke features without touching core code.
  • Scalable & Container‑Friendly: Ready for cloud deployments or on‑premise scaling with minimal effort.
  • Rich Feature Set: Combines chat, video, blogs, and PubSub in a single stack—developers can build complex social applications without

Open SourceReady to get started?

Join the community and start self-hosting Movim today