A collaborative web application (virtual office) presented as a 16-bit RPG video game https://workadventu.re
  • TypeScript 77.9%
  • Svelte 19.7%
  • HTML 0.7%
  • SCSS 0.6%
  • JavaScript 0.5%
  • Other 0.4%
Find a file
David Négrier 0640069e6b
feat: Add DTLN-based and browser based microphone noise suppression (#5845)
* Add DTLN-based microphone noise suppression

* Removing unnecessary async in stop function

* Add abort support to noise suppression updates

* Refactor: extract repeated noise suppression error state condition into derived boolean (#5846)

* Initial plan

* Extract duplicate noise suppression error state condition into derived boolean

Co-authored-by: moufmouf <1290952+moufmouf@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: moufmouf <1290952+moufmouf@users.noreply.github.com>

* Testing noise-suppression library by pushing the lib compiled locally (#5864)

* Testing noise-suppression library by pushing the lib compiled locally

* Updating nto litertjs latest fork version

* Fixing package.lock and merge issue

* Fixing necessity to give the audio worklet url

* Migrating to using the published package

* Fixing noise suppression type imports

* Taking copilot comments in account

* Add noise suppression translations

* Taking copilot comments in account

* Fix noise suppression Svelte 5 rebase issues

* Handling possible errors when NoiseSuppressionTransformer creation fails

* Fixing prettier

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Fixing copilot proposal

* Load noise suppression worklet via Vite plugin

* Adding missing "pendingInitialization" status

* Disabling browser noiseSuppression (for now)

* Adding a way to select between WorkAdventure's noise suppression, browser based noise suppression and voice isolation

* Using a 4 radio button selection for noise suppression

* Stopping removing the tracks from the old stream to avoid down the line errors. Simply replacing the MediaStream.
Stopping tracks BEFORE getUserMedia because of a bug in Chrome that cannot query changes autoGainControl and other similar settings on a new getUserMedia if a previous call has already fetched the tracks.

* Refactoring UI

Adding a Chip component
Allowing SectionTitle components to have body
Switching back to a checkbox for enabling / disabling noise suppression

* Adding missing Typescript type

* Fixing E2E test following InputSwitch refactor

* Fix trailing slash in id

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Refactor front tests to centralize mocks of EnvironmentVariable

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: moufmouf <1290952+moufmouf@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-12 18:13:44 +02:00
.claude Adding a "translate" skill 2026-01-27 18:09:05 +01:00
.codex/skills/translate Adding the ability to configure the megaphone notification sound 2026-02-13 12:25:03 +01:00
.github Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
.husky fix(play front): load fonts and boyscout 2026-05-11 17:53:43 +02:00
.vscode Merging develop in refonte-main 2024-11-20 10:44:08 +01:00
back Introduce movable spatial map 2026-06-08 18:07:33 +02:00
benchmark Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
cd Setting up a map-storage deployed in multi-domain mode in CD 2023-01-26 15:07:22 +01:00
contrib Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
desktop build(deps): bump @tootallnate/once in /desktop/electron 2026-05-22 23:27:12 +02:00
docs Removing the number of reconnect attempts 2026-05-26 18:22:22 +02:00
libs Making SpatialMap implement ReadonlyMap 2026-06-08 18:07:33 +02:00
map-storage Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
maps Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
messages Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
play feat: Add DTLN-based and browser based microphone noise suppression (#5845) 2026-06-12 18:13:44 +02:00
synapse feat(chat): add pending file attachments with preview before send (#5819) 2026-03-06 15:10:37 +01:00
tests feat: Add DTLN-based and browser based microphone noise suppression (#5845) 2026-06-12 18:13:44 +02:00
uploader Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
.dockerignore Migrating to PNPM (#2900) 2022-12-21 12:58:25 +01:00
.env.template Removing the number of reconnect attempts 2026-05-26 18:22:22 +02:00
.gitignore Add Korean (ko-KR) translation (#5367) 2025-11-20 15:01:48 +01:00
CHANGELOG.md Revert change to CHANGELOG.md 2022-10-17 21:15:12 +02:00
CONTRIBUTING.md Standardize npm lint commands: rename 'fix' to 'lint-fix' and separate lint/lint-fix commands 2025-08-18 17:58:31 +02:00
docker-compose-no-oidc.yaml Merge OIDC into main docker-compose and create no-oidc override 2025-08-18 17:40:59 +02:00
docker-compose.e2e.yml Implement a reconnection mechanism for dirty front disconnection (#6029) 2026-05-14 00:27:36 +02:00
docker-compose.livekit.yaml fix: Make livekit recording lifecycle webhook-driven (#6006) 2026-04-24 15:32:04 +02:00
docker-compose.no-synapse.yaml Updating self-hosting doc with Matrix 2024-09-17 11:23:23 +02:00
docker-compose.rustfs.yaml Migrating from Minio to Rustfs (#5702) 2026-02-18 17:04:32 +01:00
docker-compose.single-domain.yaml Implement a reconnection mechanism for dirty front disconnection (#6029) 2026-05-14 00:27:36 +02:00
docker-compose.yaml Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
egress-config.yaml [Recording] wip : livekit recording with egress 2025-04-28 17:01:10 +02:00
livekit-config.yaml Fixing the flicker when coming back to a tab 2025-10-03 16:47:19 +02:00
npm-install.sh Revert "Prefer offline install" (#5854) 2026-03-13 15:43:49 +01:00
package-lock.json feat: Add DTLN-based and browser based microphone noise suppression (#5845) 2026-06-12 18:13:44 +02:00
package.json Migrate to svelte 5 and bump all libs (#6157) 2026-06-08 15:50:08 +02:00
README-MAP.png WOrking on UI play 2023-10-08 09:59:06 +02:00
README.md Merge OIDC into main docker-compose and create no-oidc override 2025-08-18 17:40:59 +02:00
SECURITY.md Create SECURITY.md 2021-06-23 15:26:17 +02:00
UPGRADE.md feat: Move TURN credentials management from back to pusher (#5361) 2025-11-20 15:46:55 +01:00
Vagrantfile.template Update vagrant template 2020-12-16 16:39:34 +01:00
wait-proto.sh Implement Healthchecks on Docker Compose Files (#3206) 2023-04-27 21:53:52 +02:00

Discord Awesome

WorkAdventure office image

WorkAdventure

WorkAdventure is a platform that allows you to design fully customizable collaborative virtual worlds (metaverse).

With your own avatar, you can interact spontaneously with your colleagues, clients, partners (using a video-chat system, triggered when you approach someone). Imagine all types of immersive experiences (recruitments, onboarding, trainings, digital workplace, internal/external events) on desktop, mobile or tablet.

The little plus? The platform is GDPR and open source!

See more features for your virtual office!

Pricing for our SaaS version!

Workadventure live demo example Workadventure Website

Support our team!

Discord Logo X Social Logo LinkedIn Logo

Stats repo

Community resources

  1. Want to build your own map, check out our map building documentation
  2. Check out resources developed by the WorkAdventure community at awesome-workadventure

Setting up a production environment

We support 2 ways to set up a production environment:

  • using Docker Compose
  • or using a Helm chart for Kubernetes

Please check the Setting up a production environment guide for more information.

Note

WorkAdventure also provides a hosted version of the application. Using the hosted version is the easiest way to get started and helps us to keep the project alive.

Setting up a development environment

Note

These installation instructions are for local development only. They will not work on remote servers as local environments do not have HTTPS certificates.

Install Docker and clone this repository.

Warning

If you are using Windows, make sure the End-Of-Line character is not modified by the cloning process by setting the core.autocrlf setting to false: git config --global core.autocrlf false

Run:

cp .env.template .env
docker-compose up

The environment will start with the OIDC mock server enabled by default.

You should now be able to browse to http://play.workadventure.localhost/ and see the application. You can view the Traefik dashboard at http://traefik.workadventure.localhost

(Test user is "User1" and password is "pwd")

If you want to disable the OIDC mock server (for anonymous access), you can run:

$ docker-compose -f docker-compose.yaml -f docker-compose-no-oidc.yaml up

Note: on some OSes, you will need to add this line to your /etc/hosts file:

/etc/hosts

127.0.0.1 oidc.workadventure.localhost redis.workadventure.localhost play.workadventure.localhost traefik.workadventure.localhost matrix.workadventure.localhost extra.workadventure.localhost icon.workadventure.localhost map-storage.workadventure.localhost uploader.workadventure.localhost maps.workadventure.localhost api.workadventure.localhost front.workadventure.localhost

Troubleshooting

See our troubleshooting guide.