{"id":15147045,"url":"https://github.com/prose-im/prose-app-web","last_synced_at":"2025-10-24T01:31:29.311Z","repository":{"id":159169569,"uuid":"585464835","full_name":"prose-im/prose-app-web","owner":"prose-im","description":"Prose Web application. XMPP client for team messaging.","archived":false,"fork":false,"pushed_at":"2024-09-17T13:57:55.000Z","size":8506,"stargazers_count":23,"open_issues_count":39,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-09-26T12:21:51.923Z","etag":null,"topics":["app","typescript","vuejs","web","xmpp","xmpp-client"],"latest_commit_sha":null,"homepage":"https://prose.org/downloads","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prose-im.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-05T08:36:16.000Z","updated_at":"2024-09-24T06:40:53.000Z","dependencies_parsed_at":"2024-03-16T21:51:29.271Z","dependency_job_id":"836764da-a26f-4335-a65f-32ebc831acbb","html_url":"https://github.com/prose-im/prose-app-web","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prose-im%2Fprose-app-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prose-im%2Fprose-app-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prose-im%2Fprose-app-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prose-im%2Fprose-app-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prose-im","download_url":"https://codeload.github.com/prose-im/prose-app-web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219867198,"owners_count":16555821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","typescript","vuejs","web","xmpp","xmpp-client"],"created_at":"2024-09-26T12:21:41.010Z","updated_at":"2025-10-24T01:31:29.299Z","avatar_url":"https://github.com/prose-im.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"# \u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/prose-im/prose-app-web/assets/1451907/8e6c83c6-26a0-4505-9561-50a9c97bf236\" /\u003e\u003cimg src=\"https://github.com/prose-im/prose-app-web/assets/1451907/dd3f7cb4-b156-4ecc-a15f-744dea259e27\" alt=\"prose-app-web\" width=\"150\" height=\"60\" /\u003e\u003c/picture\u003e\n\n[![Test and Lint](https://github.com/prose-im/prose-app-web/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/prose-im/prose-app-web/actions/workflows/test.yml) [![Build and Release](https://github.com/prose-im/prose-app-web/actions/workflows/build.yml/badge.svg)](https://github.com/prose-im/prose-app-web/actions/workflows/build.yml) [![Bundle and Publish](https://github.com/prose-im/prose-app-web/actions/workflows/bundle.yml/badge.svg)](https://github.com/prose-im/prose-app-web/actions/workflows/bundle.yml) [![GitHub Release](https://img.shields.io/github/v/release/prose-im/prose-app-web.svg)](https://github.com/prose-im/prose-app-web/releases)\n\n**Prose Web application. Built in TypeScript / VueJS / WebAssembly.**\n\nThe Prose project was originally announced in a blog post: [Introducing Prose, Decentralized Team Messaging in an Era of Centralized SaaS](https://prose.org/blog/introducing-prose/). This project is the Web implementation of the Prose app.\n\nCopyright 2025, Prose Foundation - Released under the [Mozilla Public License 2.0](./LICENSE.md).\n\n_Tested at NodeJS version: `v20.18.2`_\n\n## Quick Setup\n\n### Docker image\n\nA Docker image containing a production build of the Prose Web app is available on Docker Hub as [proseim/prose-app-web](https://hub.docker.com/r/proseim/prose-app-web/). It contains all required assets and listens as a HTTP server serving those assets with the proper rules.\n\n**First, pull the `proseim/prose-app-web` image:**\n\n```bash\ndocker pull proseim/prose-app-web:latest\n```\n\n**Then, run it:**\n\n```bash\ndocker run --rm -p 8080:8080 proseim/prose-app-web\n```\n\nThat's it, your Prose Web app should now be available at: [http://localhost:8080](http://localhost:8080/)\n\n### Manual build\n\nIf you prefer to make your own build, first make sure your build environment has NodeJS version `12` and above.\n\nThen, execute those commands:\n\n```bash\nnpm install\nnpm run build\n```\n\nThe built files will be available in the `dist/` directory. The content of this directory need to be copied to your Web server and served from a root URL.\n\n## Architecture\n\nThe Prose Web app consists mostly of VueJS views, bound to core libraries, namely the [client](https://github.com/prose-im/prose-core-client) and [views](https://github.com/prose-im/prose-core-views) cores, that are common to all platforms Prose runs on.\n\nThe app uses the core client library to connect to XMPP. It calls programmatic methods in order to interact with its internal database and the network. It binds as well to an event bus to receive network events, or update events from the store. Messages are shown in their own view, which is provided by the core views library.\n\nThis decoupling makes things extremely clean, and enables common code sharing between platforms (eg. Web, macOS, iOS, etc.).\n\n## Build\n\n_👉 This builds Prose for use in a Web browser._\n\nBuilding the Prose Web app is done per-target environment. Please check below for build instructions based on your target environment.\n\n### Production target\n\nTo build Prose for a production environment (with all optimizations, meaning the build will be slower), hit:\n\n```bash\nnpm run build\n```\n\nThe production build expects the XMPP domain you will connect to through Prose to expose its alternative connection endpoints (ie. WebSocket or/and BOSH) through [XEP-0156: Discovering Alternative XMPP Connection Methods](https://xmpp.org/extensions/xep-0156.html), so make sure the `host-meta` file is properly added to your domain (served over HTTPS).\n\n### Development target\n\n_👉 Before you start, please make sure that a local `prose-pod-server` ([repository](https://github.com/prose-im/prose-pod-server)) is running on your development machine. Configurations for your local server can be sourced from `prose-pod-system` ([repository](https://github.com/prose-im/prose-pod-system))._\n\n\u003e [!TIP]\n\u003e You may follow our usage guide on [how to start a local Prose Pod](https://github.com/prose-im/prose-pod-system/blob/master/USAGE.md) setup. This will start a self-contained Prose Pod with all required components (the XMPP server and the Prose API).\n\n#### 📦 Develop with a release core (default)\n\nTo build Prose for a development environment (that is, a live development server streaming changes live), hit:\n\n```bash\nnpm run dev\n```\n\n#### 🔬 Develop with a local core (advanced)\n\n##### ⚙️ Client core\n\nIf it is desired to build against a local `prose-core-client` ([repository](https://github.com/prose-im/prose-core-client)) containing a built `prose-sdk-js` package, you may pass a `PROSE_CORE_CLIENT_PATH` environment variable with the relative path to the core client library:\n\n```bash\nPROSE_CORE_CLIENT_PATH=\"../prose-core-client\" npm run dev\n```\n\nOn a second terminal, you may also watch for changes in the `prose-core-client` repository:\n\n```bash\nfind crates bindings/prose-sdk-js/src Cargo.toml | entr -r cargo xtask wasm-pack build --dev\n```\n\nAny change happening in the core will trigger a compilation run, which itself will trigger a HMR event in the Web app (this may reload the whole app).\n\n##### 💬 Views core\n\nIf you would like to source a local `prose-core-views` ([repository](https://github.com/prose-im/prose-core-views)) build, you may pass a `PROSE_CORE_VIEWS_PATH` environment variable with the relative path to the core views library:\n\n```bash\nPROSE_CORE_VIEWS_PATH=\"../prose-core-views\" npm run dev\n```\n\n## Bundle\n\n_👉 This bundles Prose for use as a standalone application (macOS, Windows, etc.)._\n\nProse can be bundled into a native-like application using [Tauri](https://tauri.app/), which uses the target system default Web renderer. The benefit of Tauri over eg. Electron, is that the resulting bundled application size is kept small (Tauri's overhead is about 600KB).\n\n### Production bundle\n\nTo bundle Prose as a final production application, run:\n\n```bash\nnpm run bundle build\n```\n\nYou can also build a final production-like application that contains debugging tools (Web Inspector) with:\n\n```bash\nnpm run bundle build -- --debug\n```\n\n### Development bundle\n\nTo bundle Prose as a development application (with Hot Module Replacement), run:\n\n```bash\nnpm run bundle dev\n```\n\n### Bundle cross-compilation\n\nWhen you run a Prose bundle job, it will produce a binary for your current platform only. That is, if you bundle from macOS then you will get a macOS binary.\n\nFortunately, it is possible to build binaries for other platforms from macOS and Linux systems: eg. you can build a Windows binary from macOS.\n\n#### 🏹 Bundle for Windows (from macOS)\n\nTo bundle Prose for Windows targets from macOS, first, make sure to install the following:\n\n```bash\n# Install Homebrew dependencies\nbrew install llvm cmake ninja nasm\n\n# Add Rust compiler target and install Rust dependencies\nrustup target add x86_64-pc-windows-msvc\ncargo install --locked cargo-xwin\n```\n\nThen, build the application bundle:\n\n```bash\nnpm run bundle build -- --runner cargo-xwin --target x86_64-pc-windows-msvc\n```\n\n## Design\n\n![Prose main view](https://github.com/prose-im/prose-app-web/assets/1451907/624bcf38-7406-4194-9aba-924144b6a675)\n![Prose profile modal](https://github.com/prose-im/prose-app-web/assets/1451907/e930929b-2fee-4566-86b5-a1b104b39c03)\n![Prose login screen](https://github.com/prose-im/prose-app-web/assets/1451907/92af0399-b74a-4321-b66a-a9a64d56b783)\n\n_👉 The Prose Web app reference design [can be found there](https://github.com/prose-im/prose-medley/blob/master/designs/app/prose-app-web.sketch)._\n\n## Updates\n\nAs Prose is still being developed, update videos can be found on the Prose blog, month by month:\n\n- 🎥 [Prose Development Update: November 2023](https://prose.org/blog/prose-development-update-november-2023/)\n\n## License\n\nLicensing information can be found in the [LICENSE.md](./LICENSE.md) document.\n\n## :fire: Report A Vulnerability\n\nIf you find a vulnerability in any Prose system, you are more than welcome to report it directly to Prose Security by sending an encrypted email to [security@prose.org](mailto:security@prose.org). Do not report vulnerabilities in public GitHub issues, as they may be exploited by malicious people to target production systems running an unpatched version.\n\n**:warning: You must encrypt your email using Prose Security GPG public key: [:key:57A5B260.pub.asc](https://files.prose.org/public/keys/gpg/57A5B260.pub.asc).**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprose-im%2Fprose-app-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprose-im%2Fprose-app-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprose-im%2Fprose-app-web/lists"}