📦⚡️ Casibase

A pioneering customizable open-source Domain Knowledge Base (DKB) powered by ChatGPT, Casbin, and Casdoor.

semantic-release docker pull casbin/casibase GitHub Workflow Status (branch) GitHub Release Docker Image Version (latest semver)

Go Report Card license GitHub issues GitHub stars GitHub forks Crowdin Discord

## Architecture casibase contains 4 parts: | **Name** | **Description** | **Language** | |----------------|---------------------------------------------------|-----------------------------------------| | Frontend | User interface for the casibase application | JavaScript + React | | Backend | Server-side logic and API for casibase | Golang + Beego + Python + Flask + MySQL | | AI Model | Artificial intelligence model | Python + OpenAI | | Knowledge Base | Storage for casibase application domain knowledge | pgvector | ![0-Architecture-casibase](assets/0-Architecture-casibase.png) ## Demo Installation casibase uses Casdoor to manage members. So you need to create an organization and an application for casibase in a Casdoor instance. ### Casdoor configuration ```shell git clone https://github.com/casdoor/casdoor.git ``` refer to: https://casdoor.org/docs/basic/server-installation Follow these steps to setup Casdoor for casibase: - Create an **Organization**![1-Add-organization](assets/1-Add-organization.png) - Configure information about the **Organization**![2-Configure-information-organization](assets/2-Configure-information-organization.png) - Add a member to a newly created organization![3-Check-user](assets/3-Check-user.png)![4-Add-member-to-organization](assets/4-Add-member-to-organization.png) - Configure member information (remember its **Name** as well as **Password**)![5-Configure-new-user](assets/5-Configure-new-user.png) - Create a new **Application**![6-Add-application](assets/6-Add-application.png) - Configuring **Application** Information (Remember **Name, ClientID** and **ClientSecret**. Change **RedirectURLs** to http://localhost:14000/callback) ![7-Configure-new-application](assets/7-Configure-new-application.png) ### casibase configuration #### Get the code ```shell git clone https://github.com/casbin/casibase.git ``` #### Setup database casibase will store its users, nodes and topics informations in a MySQL database named: `casibase`, will create it if not existed. The DB connection string can be specified at: https://github.com/casbin/casibase/blob/master/conf/app.conf ```ini dataSourceName = root:123@tcp(localhost:3306)/ ``` Casnode uses XORM to connect to DB, so all DBs supported by XORM can also be used. #### Custom config - #### Backend (`casibase\conf\app.conf`) ```ini casdoorEndpoint = clientId = clientSecret = casdoorOrganization = "casibase" casdoorApplication = "app-casibase" ``` - #### Frontend (`casibase\web\src\Conf.js`) ```ini export const AuthConfig = { ...... clientId: , ...... }; ``` #### Run casnode - #### Backend (`casibase`) ```shell go run main.go ``` - #### Frontend (`casibase\web`) ```shell yarn install yarn start ``` #### Preview Access the login view via the following link: ```shell http://localhost:13001 ``` ![8-Preview-base-wordsets](assets/8-Preview-base-wordsets.png) ![9-Preview-casibase-stores](assets/9-Preview-casibase-stores.png) The **casibase** demo is shown above, and in the future users can upload various **knowledge** files, **wordsets**, and **factorsets** to achieve a **customized domain knowledge base**.