Huly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)
See the code⭐️ Your star shines on us. Star us on GitHub!
[!IMPORTANT] This repository is frozen and is no longer actively maintained.
Development continues in Platform-Collective/platform. Please use the new repository for current source code, issues, and pull requests.
[!IMPORTANT] Hosted Huly has shut down.
The hosted Huly service has been discontinued because its hosting is no longer funded. The hosted platform is no longer available.
You can continue using Huly with a self-hosted setup or another hosted option. For backup and restoration instructions, see the backup & restore guide.
Have questions or need help? Join the Huly community to discuss migration options and get support.
The Huly Platform is a robust framework designed to accelerate the development of business applications, such as CRM systems. This repository includes several applications, such as Chat, Project Management, CRM, HRM, and ATS. Various teams are building products on top of the Platform, including Huly and TraceX.
If you're primarily interested in self-hosting Huly without the intention to modify or contribute to its development, please use huly-selfhost.
This project offers a convenient method to host Huly using docker, designed for ease of use and quick setup. Explore this option to effortlessly enjoy Huly on your own server.
If you want to interact with Huly programmatically, check out our API Client documentation. The API client provides a typed interface for all Huly operations and can be used to build integrations and custom applications.
You can find API usage examples in the Huly examples repository.
For detailed information about changes, improvements, and bug fixes in each version, see our Changelog.
The Huly Platform uses two types of version tags to distinguish between production-ready and development releases:
Production Versions (v*) - Stable releases for end users
v0.7.310, v0.7.307, v0.6.501Development Versions (s*) - Pre-release builds for developers
s0.7.313, s0.7.292, s0.7.288For detailed information about the platform architecture, services, and their interactions, see our Architecture Overview.
If you use nvm, run this after entering the repo to align your shell with the repository Node version:
nvm use
To verify the installation, perform the following checks in your terminal:
docker commands are available:docker --version
docker compose version
The main branch is the default branch used for production deployments.
Changes to this branch are made from the staging branch once a version is ready for community use.
The staging branch is used for pre-release testing.
It is stable enough for testing but not yet ready for production deployment.
The develop branch is used for development and is the default branch for contributions.
We periodically merge develop into staging to perform testing builds. Once we are satisfied with the build quality in our pre-release deployment, we merge changes into main and release a new version to the community.
git submodule init
git submodule update
git submodule update
This project uses GitHub Packages for dependency management. To successfully download dependencies, you need to generate a GitHub personal access token and log in to npm using that token.
Follow these steps:
read:packages)npm login --registry=https://npm.pkg.github.com
When prompted, enter your GitHub username, use the generated token as your password
sh ./scripts/fast-start.sh
You need Microsoft's rush to install the application.
npm install -g @microsoft/rush
rush install
rush build
Alternatively, you can just execute:
sh ./scripts/presetup-rush.sh
Development environment setup requires Docker to be installed on system.
Support is available for both amd64 and arm64 containers on Linux and macOS.
cd ./dev/
rush build # Will build all the required packages.
# rush rebuild # could be used to omit build cache.
rush bundle # Will prepare bundles.
rush package # Will build all webpack packages.
rush validate # Will validate all sources with typescript and generate d.ts files required for ts-node execution.
rush svelte-check # Optional. svelte files validation using svelte-check.
rush docker:build # Will build Docker containers for all applications in the local Docker environment.
rush docker:up # Will set up all the containers
Be aware rush docker:build will automatically execute all required phases like build, bundle, package.
Note: For resource-constrained machines, you can use the minified variants
rush docker:minandrush docker:up:minto build and run only the required services (excludes hulypulse, redis, process, backup, rating, preview, link-preview, elastic, fulltext, payment, stats, print, sign, hulygun, hulykvs).
Alternatively, you can just execute:
sh ./scripts/build.sh
By default, Docker volumes named dev_db, dev_elastic, and dev_files will be created for the MongoDB, Elasticsearch, and MinIO instances.
Add the following lines to your hosts file:
/etc/hostsC:\Windows\System32\drivers\etc\hosts127.0.0.1 huly.local
::1 huly.local
Accessing the URL http://huly.local:8087 will lead you to the app in development mode.
Limitations:
Development mode allows for live reloading and a smoother development process.
cd dev/prod
rush validate
rushx dev-server
Then go to http://localhost:8080
Select "Sign up" on the right panel and click the "Sign up with password" link at the bottom. Enter the new user's credentials, then proceed to create a workspace for them.
If the project's structure is updated, it may be necessary to relink and rebuild the projects.
rush update
rush build
If a build fails, but the code is correct, try to delete the build cache and retry.
# from the project root
rm -rf common/temp/build-cache
For development purpose rush build:watch action could be used.
It includes build and validate phases in watch mode.
rush test # To execute all tests
rushx test # For individual test execution inside a package directory
cd ./tests
rush build
rush bundle
rush docker:build
## creates test Docker containers and sets up test database
./prepare.sh
## runs UI tests
rushx uitest
To execute tests in the development environment, please follow these steps:
cd ./tests
./create-local.sh ## use ./restore-local.sh if you only want to restore the workspace to a predefined initial state for sanity.
cd ./sanity
rushx dev-uitest # To execute all tests against the development environment.
rushx dev-debug -g 'pattern' # To execute tests in debug mode with only the matching test pattern.
node ./common/scripts/bump.js -p projectName
This project is tested with BrowserStack.
The repository can be built and run directly on Windows, without WSL. Build and run scripts are written in bash; on Windows they are executed with Git Bash through common/scripts/bash.js, so no extra setup is needed beyond the usual prerequisites:
git is not on PATH, set GIT_BASH to the full path of bash.exe, e.g. C:\Program Files\Git\bin\bash.exe.Run rush and rushx commands from any shell (PowerShell, cmd or Git Bash).
Notes for contributors:
$(...), rm -rf, cp, || true, >/dev/null, single quotes) directly into package.json scripts: Windows runs them with cmd.exe. Put such a command into the bashScripts section of the same package.json and call it as node <path-to-root>/common/scripts/bash.js --script <name>..sh files as node <path-to-root>/common/scripts/bash.js <path-to-script>.sh [args], not directly..sh files are always checked out with LF line endings (see .gitattributes).MSYS_NO_PATHCONV=1), so arguments such as UPLOAD_URL=/files are passed as is.This guide describes the nuances of building and running the application from source code located on your NTFS drive, which is accessible from both Windows and WSL.
Ensure you have sufficient disk space available:
If there's insufficient space on your system drive (usually C:\), you can change the virtual disk location in Docker Settings → Resources → Advanced.
Make sure Docker is accessible from WSL:
docker run hello-world
Windows Git often automatically replaces line endings. Since most build scripts are .sh files, ensure your Windows checkout doesn't break them.
Solution options:
git config --global core.autocrlf false
This disables auto-replacement for all repositories on your machine.Some commands in the instructions require elevated privileges when working in WSL. If you're using Ubuntu distribution, prefix commands with sudo:
sudo npm install -g @microsoft/rush
If the source code is located on a Windows NTFS drive, then edit the /etc/wsl.conf file in WSL (e.g., sudo nano /etc/wsl.conf) and add the following content if it doesn't exist:
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
[interop]
appendWindowsPath = false
However, we recommend storing the repository on a WSL disk, as this dramatically improves build and maintenance operations.
After these preparations, the build instructions should work without issues.
When starting the application (rush docker:up), some network ports in Windows might be occupied. You can fix port mapping in the \dev\docker-compose.yaml file.
Important: Depending on which port you change, you'll need to:
© 2025 Hardcore Engineering Inc.
(top 24 of 192)
10,162 followers · starred Feb 2024
5,095 followers · starred Oct 2024
496 followers · starred Oct 2024
486 followers · starred May 2026
Huly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)
See the code⭐️ Your star shines on us. Star us on GitHub!
[!IMPORTANT] This repository is frozen and is no longer actively maintained.
Development continues in Platform-Collective/platform. Please use the new repository for current source code, issues, and pull requests.
[!IMPORTANT] Hosted Huly has shut down.
The hosted Huly service has been discontinued because its hosting is no longer funded. The hosted platform is no longer available.
You can continue using Huly with a self-hosted setup or another hosted option. For backup and restoration instructions, see the backup & restore guide.
Have questions or need help? Join the Huly community to discuss migration options and get support.
The Huly Platform is a robust framework designed to accelerate the development of business applications, such as CRM systems. This repository includes several applications, such as Chat, Project Management, CRM, HRM, and ATS. Various teams are building products on top of the Platform, including Huly and TraceX.
If you're primarily interested in self-hosting Huly without the intention to modify or contribute to its development, please use huly-selfhost.
This project offers a convenient method to host Huly using docker, designed for ease of use and quick setup. Explore this option to effortlessly enjoy Huly on your own server.
If you want to interact with Huly programmatically, check out our API Client documentation. The API client provides a typed interface for all Huly operations and can be used to build integrations and custom applications.
You can find API usage examples in the Huly examples repository.
For detailed information about changes, improvements, and bug fixes in each version, see our Changelog.
The Huly Platform uses two types of version tags to distinguish between production-ready and development releases:
Production Versions (v*) - Stable releases for end users
v0.7.310, v0.7.307, v0.6.501Development Versions (s*) - Pre-release builds for developers
s0.7.313, s0.7.292, s0.7.288For detailed information about the platform architecture, services, and their interactions, see our Architecture Overview.
If you use nvm, run this after entering the repo to align your shell with the repository Node version:
nvm use
To verify the installation, perform the following checks in your terminal:
docker commands are available:docker --version
docker compose version
The main branch is the default branch used for production deployments.
Changes to this branch are made from the staging branch once a version is ready for community use.
The staging branch is used for pre-release testing.
It is stable enough for testing but not yet ready for production deployment.
The develop branch is used for development and is the default branch for contributions.
We periodically merge develop into staging to perform testing builds. Once we are satisfied with the build quality in our pre-release deployment, we merge changes into main and release a new version to the community.
git submodule init
git submodule update
git submodule update
This project uses GitHub Packages for dependency management. To successfully download dependencies, you need to generate a GitHub personal access token and log in to npm using that token.
Follow these steps:
read:packages)npm login --registry=https://npm.pkg.github.com
When prompted, enter your GitHub username, use the generated token as your password
sh ./scripts/fast-start.sh
You need Microsoft's rush to install the application.
npm install -g @microsoft/rush
rush install
rush build
Alternatively, you can just execute:
sh ./scripts/presetup-rush.sh
Development environment setup requires Docker to be installed on system.
Support is available for both amd64 and arm64 containers on Linux and macOS.
cd ./dev/
rush build # Will build all the required packages.
# rush rebuild # could be used to omit build cache.
rush bundle # Will prepare bundles.
rush package # Will build all webpack packages.
rush validate # Will validate all sources with typescript and generate d.ts files required for ts-node execution.
rush svelte-check # Optional. svelte files validation using svelte-check.
rush docker:build # Will build Docker containers for all applications in the local Docker environment.
rush docker:up # Will set up all the containers
Be aware rush docker:build will automatically execute all required phases like build, bundle, package.
Note: For resource-constrained machines, you can use the minified variants
rush docker:minandrush docker:up:minto build and run only the required services (excludes hulypulse, redis, process, backup, rating, preview, link-preview, elastic, fulltext, payment, stats, print, sign, hulygun, hulykvs).
Alternatively, you can just execute:
sh ./scripts/build.sh
By default, Docker volumes named dev_db, dev_elastic, and dev_files will be created for the MongoDB, Elasticsearch, and MinIO instances.
Add the following lines to your hosts file:
/etc/hostsC:\Windows\System32\drivers\etc\hosts127.0.0.1 huly.local
::1 huly.local
Accessing the URL http://huly.local:8087 will lead you to the app in development mode.
Limitations:
Development mode allows for live reloading and a smoother development process.
cd dev/prod
rush validate
rushx dev-server
Then go to http://localhost:8080
Select "Sign up" on the right panel and click the "Sign up with password" link at the bottom. Enter the new user's credentials, then proceed to create a workspace for them.
If the project's structure is updated, it may be necessary to relink and rebuild the projects.
rush update
rush build
If a build fails, but the code is correct, try to delete the build cache and retry.
# from the project root
rm -rf common/temp/build-cache
For development purpose rush build:watch action could be used.
It includes build and validate phases in watch mode.
rush test # To execute all tests
rushx test # For individual test execution inside a package directory
cd ./tests
rush build
rush bundle
rush docker:build
## creates test Docker containers and sets up test database
./prepare.sh
## runs UI tests
rushx uitest
To execute tests in the development environment, please follow these steps:
cd ./tests
./create-local.sh ## use ./restore-local.sh if you only want to restore the workspace to a predefined initial state for sanity.
cd ./sanity
rushx dev-uitest # To execute all tests against the development environment.
rushx dev-debug -g 'pattern' # To execute tests in debug mode with only the matching test pattern.
node ./common/scripts/bump.js -p projectName
This project is tested with BrowserStack.
The repository can be built and run directly on Windows, without WSL. Build and run scripts are written in bash; on Windows they are executed with Git Bash through common/scripts/bash.js, so no extra setup is needed beyond the usual prerequisites:
git is not on PATH, set GIT_BASH to the full path of bash.exe, e.g. C:\Program Files\Git\bin\bash.exe.Run rush and rushx commands from any shell (PowerShell, cmd or Git Bash).
Notes for contributors:
$(...), rm -rf, cp, || true, >/dev/null, single quotes) directly into package.json scripts: Windows runs them with cmd.exe. Put such a command into the bashScripts section of the same package.json and call it as node <path-to-root>/common/scripts/bash.js --script <name>..sh files as node <path-to-root>/common/scripts/bash.js <path-to-script>.sh [args], not directly..sh files are always checked out with LF line endings (see .gitattributes).MSYS_NO_PATHCONV=1), so arguments such as UPLOAD_URL=/files are passed as is.This guide describes the nuances of building and running the application from source code located on your NTFS drive, which is accessible from both Windows and WSL.
Ensure you have sufficient disk space available:
If there's insufficient space on your system drive (usually C:\), you can change the virtual disk location in Docker Settings → Resources → Advanced.
Make sure Docker is accessible from WSL:
docker run hello-world
Windows Git often automatically replaces line endings. Since most build scripts are .sh files, ensure your Windows checkout doesn't break them.
Solution options:
git config --global core.autocrlf false
This disables auto-replacement for all repositories on your machine.Some commands in the instructions require elevated privileges when working in WSL. If you're using Ubuntu distribution, prefix commands with sudo:
sudo npm install -g @microsoft/rush
If the source code is located on a Windows NTFS drive, then edit the /etc/wsl.conf file in WSL (e.g., sudo nano /etc/wsl.conf) and add the following content if it doesn't exist:
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
[interop]
appendWindowsPath = false
However, we recommend storing the repository on a WSL disk, as this dramatically improves build and maintenance operations.
After these preparations, the build instructions should work without issues.
When starting the application (rush docker:up), some network ports in Windows might be occupied. You can fix port mapping in the \dev\docker-compose.yaml file.
Important: Depending on which port you change, you'll need to:
© 2025 Hardcore Engineering Inc.
(top 24 of 192)
10,162 followers · starred Feb 2024
5,095 followers · starred Oct 2024
496 followers · starred Oct 2024
486 followers · starred May 2026