2023-11-29 12:06:46 +03:00
# Hardcore Engineering SaaS Platform
2021-10-30 13:32:30 +03:00
2023-11-29 12:06:46 +03:00
The Platform is a framework that helps in building business applications (such as CRM) fast.
2023-08-10 18:18:56 +03:00
The current exemplary applications include Chat, Issue Management (Tracker), Applicant Tracking System, Boards, Leads, and HR.
2023-11-29 12:06:46 +03:00
Several teams building products on top of the Platform including [Zenflow ](https://zenflow.app ) and [TraceX ](https://tracex.co ).
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
2021-11-22 14:17:10 +03:00
rushx run-local create-workspace ws1 -o DevWorkspace # Create workspace
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.