# Hi, there.

You can easily manage resources, workflows, queues and IM (instant messaging), and can also be customized as the basic service of any distribution system.

The technology stack includes Golang, TypeScript, MongoDB, Redis and Nats, etc.

Developed based on [Hertz](https://github.com/cloudwego/hertz) and [Ng-Zorro-Antd](https://github.com/NG-ZORRO/ng-zorro-antd).

As a basic service, Weplanx can provide:

* Basic functions included in conventional systems
* Distribution of dynamic configuration sync ups
* Can be friendly to support low-code mongodb RESTFul
* Angular and Golang development support libraries for business customization

Weplanx architecture for medium-light applications, but needs to run on Kubernetes.

[Rancher K3s](https://www.rancher.com/products/k3s) recommended for deploying lightweight K8s, also need to prepare these:

* Computing node
  * At least 3 nodes(2C4G) nodes form a K3s cluster, or 7 nodes are required for full self-host
* MongoDB
  * Recommended version > = 5.0 (supports Time series)
  * Production environment at least 2C4G replica cluster
  * Atlas or public cloud can be preferred, self-built recommendation Percona Distribution for MongoDB
* Redis
  * Recommended > = 256M
  * Redis Cloud or public cloud can be preferred
* Nats
  * Need to enable JetStream, [Helm](https://docs.nats.io/running-a-nats-service/nats-kubernetes) can be deployed to this cluster

### Case Overview

{% tabs %}
{% tab title="Login-1" %}

<figure><img src="/files/RwwocfvyMtgo07Rqn5C5" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Login-2" %}

<figure><img src="/files/xq8RAZYvcJVfu5ulXhZU" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Login-3" %}

<figure><img src="/files/3C4JJDJ2ktoqFZHLNySx" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Forget" %}

<figure><img src="/files/lzhIAMPuQeloM2do6CYL" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Center-1" %}

<figure><img src="/files/yMDBSL7Eq1GUCvhj1aoi" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Center-2" %}

<figure><img src="/files/B6KcV4XlmAmDKy6cTrzB" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Center-3" %}

<figure><img src="/files/EQ7yVrWSj7AknFsfR940" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Center-4" %}

<figure><img src="/files/yRbJHcq3wJ7jE6B2tY6a" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Project-1" %}

<figure><img src="/files/z4TKjTCE7e8up7XOUQuL" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Project-2" %}

<figure><img src="/files/INrmaCS35A2gx1s8ShAg" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Project-3" %}

<figure><img src="/files/3CYCoS7ORDy6crBjRtyr" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Project-4" %}

<figure><img src="/files/pqvX86ahzL2uyF7c9Qcj" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Cluster-1" %}

<figure><img src="/files/vxCsGOioagpm6XISPQmx" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Cluster-2" %}

<figure><img src="/files/hPW6q4gbHK1y8KQNTgq3" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Cluster-3" %}

<figure><img src="/files/kO7Fgqb4YeeNqtJn5yDG" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Endpoint-1" %}

<figure><img src="/files/vXSrIVDQj9sD5eFdiX9p" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Endpoint-2" %}

<figure><img src="/files/vPrzTk6bjMHXfSFU9Eto" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Endpoint-3" %}

<figure><img src="/files/nhZpmojwWN6TrQj35h8V" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Builder-1" %}

<figure><img src="/files/1V5FzuCUl2swpgWtsEC2" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Builder-2" %}

<figure><img src="/files/pavJ7ZXsoUbfyuJ6RVMG" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Builder-3" %}

<figure><img src="/files/MzQ8bKEqX6lZ4JOjnfFR" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Builder-4" %}

<figure><img src="/files/QthM9Jz3awz2VWHkEDBx" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Builder-5" %}

<figure><img src="/files/ijlaDtKXg3eKxfqDCasc" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Builder-6" %}

<figure><img src="/files/tpJ8RedQevCC9evi2eno" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Workflow-1" %}

<figure><img src="/files/6bNvuwXLM7zQPNXVKBGv" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Workflow-2" %}

<figure><img src="/files/X5JuayABq3oBxC6qxk3M" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Workflow-3" %}

<figure><img src="/files/v4BQc7QWJ3Oz9cRjMGsF" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Workflow-4" %}

<figure><img src="/files/pUfamILMPkRUrP7ELUO1" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Workflow-5" %}

<figure><img src="/files/feTew72dTHoL67DY96zQ" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Workflow-6" %}

<figure><img src="/files/M79wDwSplSORlavqhWgW" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Queue-1" %}

<figure><img src="/files/NxfOfT0SmEvfkmi1QWoz" alt=""><figcaption></figcaption></figure>

{% endtab %}

{% tab title="Queue-2" %}

<figure><img src="/files/Q3LDdOnGKYnXH3sDzrYf" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Queue-3" %}

<figure><img src="/files/UYvjdaVd1TMI19vQN1yO" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Queue-4" %}

<figure><img src="/files/vOmngbiZlPM9ybPnzv1C" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="IMessage-1" %}

<figure><img src="/files/tz2rGMmfyRW9kk4oGbhI" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="IMessage-2" %}

<figure><img src="/files/r2ZlZwa9g3LSu4rzaFS4" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="IMessage-3" %}

<figure><img src="/files/hONln4kd3sljykEsrsoE" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="IMessage-4" %}

<figure><img src="/files/fRDgqFSpwK0x1cOnGxXy" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="IMessage-5" %}

<figure><img src="/files/W2KLKAVOlKXUaJNvDHAN" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="IMessage-6" %}

<figure><img src="/files/roCNNaYNlRVSelS3HknA" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Dataset-1" %}

<figure><img src="/files/XhvdoTxP8o4XPe6WETGE" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Dataset-2" %}

<figure><img src="/files/jdTOqFkEnLfqZeMD1FB8" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Dataset-3" %}

<figure><img src="/files/AliwWMj15ul4xy59HPkD" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Dataset-4" %}

<figure><img src="/files/e6kgsc3WaiuiWyKl6861" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Monitor-1" %}
{% hint style="warning" %}
APM and RUNTIME have used Elastic APM solution
{% endhint %}

<figure><img src="/files/5rZwpL6kdQYz3P0VtTnH" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Monitor-2" %}

<figure><img src="/files/Xruf3tKsbnGTKcdlTZ7X" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Monitor-3" %}

<figure><img src="/files/zww7kSLHEdQ7naBha0Gk" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Integrated-1" %}

<figure><img src="/files/27sXuPtglWL25jBh4XHs" alt=""><figcaption></figcaption></figure>

{% endtab %}

{% tab title="Integrated-2" %}

<figure><img src="/files/jQcQdIB0lIZckhPeiNKT" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Integrated-3" %}

<figure><img src="/files/m8gud4JyiJ3363Z82k4f" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Integrated-4" %}

<figure><img src="/files/2RuX7nslE2HGHu7SLTgl" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Setting-1" %}

<figure><img src="/files/OXr2l7OzKNBnfd3nLPLc" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Setting-2" %}

<figure><img src="/files/9m9taZITJ0zFA7xjoX0u" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Setting-3" %}

<figure><img src="/files/zbqOhcNkjewck3mwNEiR" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Setting-4" %}

<figure><img src="/files/iZ3o4OuGUNXBk1y3cPqv" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Audit" %}

<figure><img src="/files/wa2fR8qNI2VeBuI09e5M" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Picture-1" %}

<figure><img src="/files/idWl8tAe6sFr8xLV6D4W" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Picture-2" %}

<figure><img src="/files/y7ALD6nlmHidQKDk95Rc" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Picture-3" %}

<figure><img src="/files/nPcxVXYrj2meS5QPz91u" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Video" %}

<figure><img src="/files/mmXaz99EDWbQIICHkzNr" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://weplanx.gitbook.io/latest/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
