{"id":37738557,"url":"https://github.com/unitopia-de/webmud3","last_synced_at":"2026-01-16T14:03:42.787Z","repository":{"id":37002009,"uuid":"137666726","full_name":"unitopia-de/webmud3","owner":"unitopia-de","description":"Webmud3: third generation of the UNItopia Webmud as open source project.","archived":false,"fork":false,"pushed_at":"2025-12-20T17:05:30.000Z","size":5679,"stargazers_count":9,"open_issues_count":33,"forks_count":3,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-12-22T18:38:10.199Z","etag":null,"topics":["angular","angular8","docker","gmcp","mud","mud-client","node-js","telnet","telnet-client","telnet-protocol"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unitopia-de.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-06-17T15:47:22.000Z","updated_at":"2025-12-20T17:05:36.000Z","dependencies_parsed_at":"2024-04-29T16:49:37.136Z","dependency_job_id":"db918ca9-cc44-4ac7-bd42-ecb990dbf13c","html_url":"https://github.com/unitopia-de/webmud3","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/unitopia-de/webmud3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unitopia-de%2Fwebmud3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unitopia-de%2Fwebmud3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unitopia-de%2Fwebmud3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unitopia-de%2Fwebmud3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unitopia-de","download_url":"https://codeload.github.com/unitopia-de/webmud3/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unitopia-de%2Fwebmud3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479091,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["angular","angular8","docker","gmcp","mud","mud-client","node-js","telnet","telnet-client","telnet-protocol"],"created_at":"2026-01-16T14:03:42.714Z","updated_at":"2026-01-16T14:03:42.779Z","avatar_url":"https://github.com/unitopia-de.png","language":"TypeScript","readme":"# webmud3 1.0.0 Alpha\r\n\r\n[![Build and Test](https://github.com/unitopia-de/webmud3/actions/workflows/build_and_test.yml/badge.svg?branch=develop)](https://github.com/unitopia-de/webmud3/actions/workflows/build_and_test.yml)\r\n\r\nWebmud3: third generation of the [UNItopia](https://www.unitopia.de) Webmud as open source project.\r\n\r\nWebmud3 is a modern MUD (Multi-User Dungeon) client that consists of a NodeJS-based backend and a web-based frontend.\r\nThis client provides comprehensive support for Telnet and the protocols built on top of it, such as GMCP (Generic Mud Communication Protocol) and MXP (Mud eXtension Protocol), specifically designed for interaction with MUD servers.\r\n\r\n## Features\r\n\r\nPlease note: most of these features have been tested against [UNItopia](https://www.unitopia.de). We can not guarantee all features are working with your MUD server.\r\n\r\n- Telnet support\r\n\r\n  Provides a flexible and customizable socket interface that can establish a Telnet connection to any MUD server. Telnet Options are negotiated as necessary.\r\n\r\n  To see the full list of supported options and their negotiation status see the [Telnet Feature](./backend/src/features/telnet/README.md) page.\r\n\r\n- ANSI support\r\n\r\n  The received text is displayed with ANSI color codes, providing a colorful and user-friendly representation in the frontend.\r\n\r\n  There is [work in progress](https://github.com/unitopia-de/webmud3/milestone/11).\r\n\r\n- Reconnection\r\n\r\n  The backend stays connected to the MUD even if the frontend is disconnected. This allows for seemless reconnections from the frontend. Every message received by the backend is cached meanwhile so nothing is lost.\r\n\r\n- Mobile Support\r\n\r\n  The frontend is (and should always be) mobile optimized.\r\n\r\n## Roadmap\r\n\r\nWe are currently working on the following features:\r\n\r\n- MXP Support\r\n\r\n  [Milestone](https://github.com/unitopia-de/webmud3/milestone/8)\r\n\r\n- GMCP Support\r\n\r\n  _Not planned yet_\r\n\r\n## Deployments\r\n\r\nCurrently, there is a [test deployment](https://unitopia-client.azurewebsites.net/) available. This deployment can be set for any given branch. To check which branch is currently deployed there, visit [Azure Deployments](https://github.com/unitopia-de/webmud3/actions/workflows/deploy_to_azure.yml).\r\n\r\n[![Build and deploy to azure](https://github.com/unitopia-de/webmud3/actions/workflows/deploy_to_azure.yml/badge.svg)](https://github.com/unitopia-de/webmud3/actions/workflows/deploy_to_azure.yml)\r\n\r\n## Releases\r\n\r\nThere are no official releases just now. Stay tuned.\r\n\r\n## Setup for yourself\r\n\r\nFollow these steps to set up and run webmud3 locally:\r\n\r\n### Clone the Repository\r\n\r\nClone the repository to your local machine using the following command:\r\n\r\n`git clone https://github.com/unitopia-de/webmud3.git`\r\n\r\n### Install Dependencies\r\n\r\nNavigate to the root directory of the project and install the necessary packages. This command will automatically install all required packages for both the frontend and backend:\r\n\r\n`npm install`\r\n\r\n### Set Environment Variables\r\n\r\nYou need to set the following environment variables to configure the backend connection. You can do this either directly in your shell before starting the backend (or the client in completion), or by creating a .env file in the root directory.\r\n\r\nExample .env file:\r\n\r\n```bash\r\nHOST=0.0.0.0                                # Optional | defaults to '0.0.0.0'        | the IP the backend will listen for\r\nPORT=5000                                   # Optional | defaults to 5000             | the PORT the backend will listen for\r\nNAME=webmud3                                # Optional | defaults to 'webmud3'        | the name of the client\r\nTELNET_HOST=127.0.0.1                       # Required | the IP of your MUD\r\nTELNET_PORT=23                              # Required | the PORT of your MUD\r\nTELNET_TLS=false                            # Optional | defaults to 'false'          | set this to true if you want a secure connection\r\nSOCKET_TIMEOUT=900000                       # Optional | defaults to 900000 (15 min)  | timeout for any lost frontend \u003c-\u003e backend connection\r\nSOCKET_ROOT=/socket.io                      # Required | URL for the socket connection. e.g. 'https://mud.example.com/socket.io'\r\nENVIRONMENT='development'                   # Optional | accepts values 'development' or 'production' | defaults to 'production' | Enables Debug REST Endpoint /api/info and allows for permissive CORS if set to 'development'\r\nCORS_ALLOWED_ORIGINS='8.8.8.8,12.12.12.12' # Optional | comma separated list of origins that are allowed when ENVIRONMENT=production\r\n```\r\n\r\n\u003e [!TIP]\r\n\u003e You can also put this file in any compiled directory, like `/backend/dist` after you run `npm run build`.\r\n\r\nEnsure that the frontend is configured to connect to the correct backend. This can be set by editing the backendUrl in the frontend/src/environments/environment.ts file:\r\n\r\n```ts\r\nexport const environment = {\r\n  // .. other properties might appear here\r\n  backendUrl: \"http://localhost:5000\", // Set this to your backend's IP or URL\r\n};\r\n```\r\n\r\n\u003e [!WARNING]\r\n\u003e This must be done at compile time. There is (currently) no way to change this setting after compilation!\r\n\r\n### Build \u0026 Run\r\n\r\nTo build and run both the frontend and backend simultaneously, use the following command in the root directory:\r\n\r\n`npm run start`\r\n\r\nThis command builds the frontend and integrates it into the backend, which serves the frontend during runtime.\r\n\r\nTo visit it, open your browser at `http://localhost:5000` or to be more precise: `http:\u003cHOST\u003e:\u003cPORT\u003e` where HOST and PORT are the repective [Options](#set-environment-variables) during runtime.\r\n\r\nAlternatively, you can build and run them separately:\r\n\r\nBuild or start the frontend:\r\n\r\n```bash\r\ncd frontend\r\nnpm run build or npm run start\r\n```\r\n\r\nBuild or start the backend:\r\n\r\n```bash\r\ncd backend\r\nnpm run build or npm run start\r\n```\r\n\r\n## Docker\r\n\r\nDocker images for easy deployment will follow. Stay tuned.\r\n\r\n## Contributions\r\n\r\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\r\n\r\nYou can either create an issue for whatever problem you have (dont by shy - there are no regulations on how to create such an issue - so feel free to describe your problems).\r\n\r\nOr you can fix problems by yourself. Follow these instructions:\r\n\r\n### Ensure your client is up and running\r\n\r\nFollow the instructions at [Setup](#setup) and make sure you can connect to a MUD. You will have to clone this repository into you own account. We recommend you to check out the \"develop\" branch for easy integration since this is our default branch.\r\n\r\n### Make your changes\r\n\r\nWe recommend you to to create a new branch out of your newly copied \"develop\" branch of your own repository.\r\nMake your changes there.\r\n\r\n### Test your changes\r\n\r\nTo speed things up, you should run `npm run test` at the root to run every unit test in the repo. This might help you to identify bugs caused by your changes (and only yours hopefully). If you want to integrate your changes to the official repository, your PR will be checked anyways so its better to do it beforehand.\r\n\r\n### Create a PR\r\n\r\nCreate a PR targeting unitopia.de/develop if you want to integrate this changes to the official repository. A previously created issue on the unitopia repository might help you to integrate faster and avoid discussions with the staff. Your PR will be checked against automated tests and needs to be approved by one or more official members of unitopia.\r\n\r\n## License\r\n\r\nThis project is licensed under the GPL-3.0 license - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Contact\r\n\r\nAny troubles? Feel free to reach out:\r\n\r\n- @mystiker Can help you with any project related questions and meta questions (git or deployments for example).\r\n- @myonara Can help you with anything MUD related (protocols, mudlib, ..).\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funitopia-de%2Fwebmud3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funitopia-de%2Fwebmud3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funitopia-de%2Fwebmud3/lists"}