* fix: redesign and compact Signed-off-by: Leonid Kaganov <lleo@lleo.me> * fix: comments Signed-off-by: Leonid Kaganov <lleo@lleo.me> * fix: correctly dropping connections in timeout Signed-off-by: Leonid Kaganov <lleo@lleo.me> * feature: loglevel in config Signed-off-by: Leonid Kaganov <lleo@lleo.me> * fix: loglevel in config Signed-off-by: Leonid Kaganov <lleo@lleo.me> * features lopt: direct personal messages between websockets by username Signed-off-by: Leonid Kaganov <lleo@lleo.me> * fix collaborator security query Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com> * Fix svelte warnings Signed-off-by: Artem Savchenko <armisav@gmail.com> * Change log Signed-off-by: Artem Savchenko <armisav@gmail.com> * Add workspace permissions enum Signed-off-by: Artem Savchenko <armisav@gmail.com> * Add changelog Signed-off-by: Artem Savchenko <armisav@gmail.com> * Permission methods Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update core and account versions Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix predicate Signed-off-by: Artem Savchenko <armisav@gmail.com> * Add changelog Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix object clone Signed-off-by: Artem Savchenko <armisav@gmail.com> * Bump and add changelog Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix exception in getTypeOf Signed-off-by: Artem Savchenko <armisav@gmail.com> * Disable changelog check Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix failed to fetch errors in account client Signed-off-by: Artem Savchenko <armisav@gmail.com> * Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * Support in-memory mode for hulypulse Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update platform-rig Signed-off-by: Artem Savchenko <armisav@gmail.com> * Comment change log verification Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update pnpm lock Signed-off-by: Artem Savchenko <armisav@gmail.com> * Sync with foundation Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update platform-rig Signed-off-by: Artem Savchenko <armisav@gmail.com> * Sync with foundation and bump versions Signed-off-by: Artem Savchenko <armisav@gmail.com> * Sync with foundations Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update and increment versions Signed-off-by: Artem Savchenko <armisav@gmail.com> * Skip change log verification Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix hulypulse connections Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix formatting and ci Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix validation warnings Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix formatting Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix validation Signed-off-by: Artem Savchenko <armisav@gmail.com> * Fix pnpm lock Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update versions Signed-off-by: Artem Savchenko <armisav@gmail.com> * Update hulypulse version Signed-off-by: Artem Savchenko <armisav@gmail.com> --------- Signed-off-by: Leonid Kaganov <lleo@lleo.me> Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com> Signed-off-by: Artem Savchenko <armisav@gmail.com> Co-authored-by: Leonid Kaganov <lleo@lleo.me> Co-authored-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
Huly Server
⭐️ Your star shines on us. Star us on GitHub!
About
Huly Server is a collection of server-side packages extracted from the Huly Platform. This repository contains backend infrastructure components, storage adapters, and server-side utilities that power the Huly ecosystem.
These packages provide essential server-side functionality including database adapters (MongoDB, PostgreSQL, Elasticsearch), storage providers (MinIO, S3), messaging infrastructure (Kafka), and collaborative editing capabilities. They are designed to be modular, scalable, and production-ready for building robust backend services.
Packages
This repository includes the following server packages:
Server Core
- @hcengineering/server-core - Core server infrastructure, adapters, storage management, and server-side utilities
- @hcengineering/server - Main server implementation and runtime
- @hcengineering/server-client - Server-side client implementation for inter-service communication
- @hcengineering/middleware - Server middleware components and request processing
Database Adapters
- @hcengineering/mongo - MongoDB adapter for document storage
- @hcengineering/postgres - PostgreSQL adapter for relational data
- @hcengineering/elastic - Elasticsearch adapter for full-text search and analytics
Storage Providers
- @hcengineering/server-storage - Storage abstraction layer and implementations
- @hcengineering/minio - MinIO storage provider for object storage
- @hcengineering/s3 - AWS S3 compatible storage provider
- @hcengineering/datalake - Data lake storage and management
- @hcengineering/hulylake - Huly lake storage and management
Infrastructure
- @hcengineering/kafka - Apache Kafka integration for event streaming and messaging
- @hcengineering/collaboration - Real-time collaborative editing infrastructure
Pre-requisites
Before proceeding, ensure that your system meets the following requirements:
- Node.js (v20.11.0 or higher is required)
- Rush - Microsoft's scalable monorepo manager
- Docker - For running development services
- Docker Compose - For orchestrating development environment
Verification
To verify the installation, perform the following checks in your terminal:
- Ensure that the
dockercommands are available:
docker --version
docker compose version
- Verify Node.js version:
node --version
Installation
You need Microsoft's rush to install the application.
-
Install Rush globally using the command:
npm install -g @microsoft/rush -
Navigate to the repository root and run the following commands:
rush install rush build
Build
To build all packages:
rush build
To rebuild (ignoring cache):
rush rebuild
Build & Watch
For development purposes, rush build:watch action could be used:
rush build:watch
It includes build and validate phases in watch mode.
Update project structure
If the project's structure is updated, it may be necessary to relink and rebuild the projects:
rush update
rush build
Troubleshooting
If a build fails, but the code is correct, try to delete the build cache and retry:
rm -rf common/temp/build-cache
rush rebuild
Tests
To execute all tests:
rush test
For individual test execution inside a package directory:
rushx test
Running Integration Tests
The repository includes integration tests that require Docker services:
cd tests
./prepare-tests.sh
rush test
Test Coverage
To generate test coverage reports:
# Run tests with coverage
rush test
# Merge coverage reports from all packages
node common/scripts/merge-coverage.js
# Generate HTML coverage report
node common/scripts/generate-coverage-html.js
# View coverage summary
sh common/scripts/show-coverage-summary.sh
The coverage report will be available in coverage/html/index.html.
Package Publishing
To bump a package version:
node ./common/scripts/bump.js -p projectName
Development Environment
Setting Up Services
The repository includes a Docker Compose configuration for development services:
cd tests
docker compose up -d
This will start:
- MongoDB - Document database
- PostgreSQL - Relational database
- Elasticsearch - Search engine
- MinIO - Object storage
- Kafka - Message broker
Environment Variables
Create a .env file in the tests directory with the following variables:
MONGO_URL=mongodb://localhost:27017
POSTGRES_URL=postgresql://localhost:5432/huly
ELASTIC_URL=http://localhost:9200
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
KAFKA_BROKERS=localhost:9092
Related Projects
- Huly Platform - The main Huly Platform repository
- Huly Core - Core packages and client libraries
- Huly Self-Host - Self-hosting solution for Huly
- Huly Examples - API usage examples
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
Licensed under the EPL-2.0 license.
Additional Links
© 2025 Hardcore Engineering Inc.