2024-02-01 22:51:47 +03:00
# Huly Platform
2021-10-30 13:32:30 +03:00
2024-02-01 22:51:47 +03:00
[![X (formerly Twitter) Follow ](https://img.shields.io/twitter/follow/huly_io?style=for-the-badge )](https://x.com/huly_io)
![GitHub License ](https://img.shields.io/github/license/hcengineering/platform?style=for-the-badge )
2024-02-01 23:32:55 +03:00
⭐️ Your star shines on us. Star us on GitHub!
2024-02-01 22:51:47 +03:00
## About
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 ](https://huly.io ) and [TraceX ](https://tracex.co ).
2024-02-01 23:32:55 +03:00
![Huly ](https://huly.io/_astro/dark-kanban.51390fd6_vIfr7.webp )
2024-02-01 22:51:47 +03:00
## Activity
![Alt ](https://repobeats.axiom.co/api/embed/c42c99e21691fa60ea61b5cdf11c2e0647621534.svg "Repobeats analytics image" )
## Table of Content
2021-10-30 13:32:30 +03:00
2023-10-09 14:21:51 +03:00
- [Pre-requisites ](#pre-requisites )
- [Fast start ](#fast-start )
- [Installation ](#installation )
- [Build and run ](#build-and-run )
- Development mode
- [Run in development mode ](#run-in-development-mode )
- [Update project structure and database ](#update-project-structure-and-database )
- Tests
- [Tests ](#tests )
- [Unit tests ](#unit-tests )
- [UI tests ](#ui-tests )
- [Package publishing ](#package-publishing )
## Pre-requisites
- Make sure you have the following installed on your system:
- [Node.js ](https://nodejs.org/en/download/ )
- [Docker ](https://docs.docker.com/get-docker/ )
- [Docker Compose ](https://docs.docker.com/compose/install/ )
2023-12-04 19:03:21 +03:00
- Make sure what docker and `docker compose` commands are available in your terminal (e.g. `docker --version` and `docker compose --version` ).
- Make sure what docker and `docker compose` commands can be executed without sudo (e.g. `docker run hello-world` and `docker compose --version` ).
2023-10-09 14:21:51 +03:00
## Fast start
```bash
sh ./scripts/fast-start.sh
```
2021-10-30 13:32:30 +03:00
## Installation
2023-07-06 08:55:22 +03:00
You need Microsoft's [rush ](https://rushjs.io ) to install application.
2021-10-30 13:32:30 +03:00
2023-10-09 14:21:51 +03:00
Install [rush ](https://rushjs.io ) with `$ npm install -g @microsoft/rush` command and run `$ rush install` from the repository root, followed by `$ rush build` or just:
```bash
sh ./scripts/presetup-rush.sh
```
2021-11-22 14:17:10 +03:00
2023-07-06 08:55:22 +03:00
## Build and run
2023-08-10 18:18:56 +03:00
Development environment setup requires Docker to be installed on system.
2023-07-06 08:55:22 +03:00
2023-08-10 18:18:56 +03:00
Support is available for both amd64 and armv8 (arm64) containers on Linux and macOS.
2021-11-22 14:17:10 +03:00
```bash
2023-01-24 16:36:45 +03:00
cd ./dev/
2023-08-10 18:18:56 +03:00
rush build # Will build all the required packages.
2021-11-22 14:17:10 +03:00
rush bundle # Will prepare bundles.
2023-08-10 18:18:56 +03:00
rush docker:build # Will build Docker containers for all applications in the local Docker environment.
2023-12-04 19:03:21 +03:00
docker compose up -d --force-recreate # Will set up all the containers
2021-11-22 14:17:10 +03:00
```
2023-10-09 14:21:51 +03:00
or just:
```bash
sh ./scripts/build.sh
```
2023-08-10 18:18:56 +03:00
By default, Docker volumes named dev_db, dev_elastic, and dev_files will be created for the MongoDB, Elasticsearch, and MinIO instances.
2021-11-22 14:17:10 +03:00
2023-08-10 18:18:56 +03:00
Before you can begin, you need to create a workspace and an account and associate it with the workspace.
2021-11-22 14:17:10 +03:00
```bash
2023-11-03 21:05:12 +03:00
cd ./tool # dev/tool in the repository root
2024-02-02 12:27:27 +03:00
rushx run-local create-workspace ws1 -w DevWorkspace # Create workspace
2021-11-22 14:17:10 +03:00
rushx run-local create-account user1 -p 1234 -f John -l Appleseed # Create account
2023-11-03 21:05:12 +03:00
rushx run-local configure ws1 --list --enable '*' # Enable all modules, even if they are not yet intended to be used by a wide audience.
2023-08-10 18:18:56 +03:00
rushx run-local assign-workspace user1 ws1 # Assign workspace to user.
rushx run-local confirm-email user1 # To allow the creation of additional test workspaces.
2023-04-25 10:34:10 +03:00
2021-11-22 14:17:10 +03:00
```
2023-10-09 14:21:51 +03:00
or just:
```bash
sh ./scripts/create-workspace.sh
```
2023-08-10 18:18:56 +03:00
Accessing the URL http://localhost:8087 will lead you to the app in production mode.
2023-01-24 16:36:45 +03:00
2023-07-06 08:55:22 +03:00
Limitations:
2023-08-10 18:18:56 +03:00
- Location installation does not allow sending emails, so password recovery and notification to email functionalities are not working.
- Integrations with Telegram, Gmail, and other content sources are available only as Docker containers, built from private repository sources. However, these integrations can be used with the platform.
2023-07-06 08:55:22 +03:00
2023-01-24 16:36:45 +03:00
## Run in development mode
2023-08-10 18:18:56 +03:00
Development mode allows for live reloading and a smoother development process.
2023-07-06 08:55:22 +03:00
```bash
2023-01-24 16:36:45 +03:00
cd dev/prod
rushx dev-server
```
2023-04-25 10:34:10 +03:00
Then go to http://localhost:8080
2022-04-04 14:11:37 +03:00
2023-11-03 21:05:12 +03:00
Use the following login credentials:
```
Email: user1
Password: 1234
Workspace: ws1
```
2022-04-04 14:11:37 +03:00
## Update project structure and database
2023-08-10 18:18:56 +03:00
If the project's structure is updated, it may be necessary to relink and rebuild the projects.
2022-04-04 14:11:37 +03:00
```bash
rush update
rush build
```
2023-08-10 18:18:56 +03:00
It may also be necessary to upgrade the running database.
2023-04-25 10:34:10 +03:00
2022-04-04 14:11:37 +03:00
```bash
cd ./dev/tool
2023-10-24 11:53:33 +03:00
rushx upgrade -f
2022-04-04 14:11:37 +03:00
```
2023-08-10 18:18:56 +03:00
In cases where the project fails to build for any logical reason, try the following steps:
2023-04-25 21:31:27 +03:00
```bash
2023-05-15 18:51:27 +03:00
rush update
2023-04-25 21:31:27 +03:00
rush build --clean
```
2022-04-04 14:11:37 +03:00
## Tests
### Unit tests
```bash
2023-07-06 08:55:22 +03:00
rush test # To execute all tests
rushx test # For individual test execution inside a package directory
2022-04-04 14:11:37 +03:00
```
### UI tests
```bash
cd ./tests
rush build
rush bundle
rush docker:build
2023-08-10 18:18:56 +03:00
## creates test Docker containers and sets up test database
2022-04-04 14:11:37 +03:00
./prepare.sh
2023-04-25 10:34:10 +03:00
## runs UI tests
2022-04-04 14:11:37 +03:00
rushx uitest
2022-09-21 11:08:25 +03:00
```
2023-08-10 18:18:56 +03:00
To execute tests in the development environment, please follow these steps:
2023-07-06 08:55:22 +03:00
```bash
cd ./tests
2023-08-10 18:18:56 +03:00
./create-local.sh ## use ./restore-local.sh if you only want to restore the workspace to a predefined initial state for sanity.
2023-07-06 08:55:22 +03:00
cd ./sanity
rushx dev-uitest # To execute all tests against the development environment.
2023-08-10 18:18:56 +03:00
rushx dev-debug -g 'pattern' # To execute tests in debug mode with only the matching test pattern.
2023-07-06 08:55:22 +03:00
```
2022-09-21 11:08:25 +03:00
## Package publishing
2023-01-04 20:58:54 +03:00
```bash
2023-07-06 08:55:22 +03:00
node ./common/scripts/bump.js -p projectName
2023-01-04 20:58:54 +03:00
```
2023-05-15 18:51:27 +03:00
## Additional testing
This project is tested with BrowserStack.
2024-02-01 22:51:47 +03:00
< sub > < sup > © 2024 Hardcore Engineering Inc.< / sup > < / sub >