feat: init
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: Discover our wonderful API
|
||||
---
|
||||
|
||||
# 📖 API Reference
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
description: How to manage authentification on API call
|
||||
---
|
||||
|
||||
# Authentication
|
||||
|
||||
## Authencate your app in Twake
|
||||
|
||||
**All your connections** should respect the Basic access authentication protocol, which must be used via HTTPS, except in development mode. In order to make an API call with this method, you must add an HTTP header:
|
||||
|
||||
```text
|
||||
Authorization: Basic base64(public_id:private_api_key)
|
||||
```
|
||||
|
||||
**You must concatenate** your [public_id and private_api_key](../get-started/README.md#identity-and-api-settings) , **then convert** the whole **to base64**. Your HTTP header will therefore look like:
|
||||
|
||||
```text
|
||||
# For the keys 'public_id' and 'private_key'
|
||||
Authorization: Basic cHVibGljX2lkOnByaXZhdGVfYXBpX2tleQ==
|
||||
```
|
||||
|
||||
## Authencate your app in a company
|
||||
|
||||
**All your requests should have at least a "group_id" key with the company id you**
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: How to manage Drive through API
|
||||
---
|
||||
|
||||
# Drive
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
description: How to manage messages through API
|
||||
---
|
||||
|
||||
# Message
|
||||
|
||||
_While users have the ability to create message complexes using the built-in formatting system, applications can go even further and offer many types of messages such as system messages for notifications or interactive messages for your most popular applications._
|
||||
|
||||
## Group_id and channel_id:
|
||||
|
||||
1. Get the current front id:
|
||||
|
||||
`channel_service.currentChannelFrontId`
|
||||
|
||||
2. With the channel front id, you will be able to get the channel id by doing this:
|
||||
|
||||
`collections.collections.channels.manager.findByFrontId("My-Front-Id")`
|
||||
|
||||
3. Get the current group id:
|
||||
|
||||
`workspaceService.currentGroupId`
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: How to use webhook with Twake
|
||||
---
|
||||
|
||||
# Webhook
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: Set your application
|
||||
---
|
||||
|
||||
# ⚙ Application settings
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: There you will find some important pieces of information
|
||||
---
|
||||
|
||||
# Api
|
||||
|
||||
+152
@@ -0,0 +1,152 @@
|
||||
---
|
||||
description: This is a JSON parameter to define where your app should appear
|
||||
---
|
||||
|
||||
# Display
|
||||
|
||||
#### Latest version
|
||||
|
||||
```typescript
|
||||
{
|
||||
twake: {
|
||||
version: 1;
|
||||
|
||||
files?: {
|
||||
preview?: {
|
||||
url: string; //Url to preview file (full screen or inline)
|
||||
inline?: boolean;
|
||||
main_ext?: string[]; //Main extensions app can read
|
||||
other_ext?: string[]; //Secondary extensions app can read
|
||||
};
|
||||
actions?: //List of action that can apply on a file
|
||||
{
|
||||
name: string;
|
||||
id: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
//Chat plugin
|
||||
chat: {
|
||||
input?:
|
||||
| true
|
||||
| {
|
||||
icon?: string; //If defined replace original icon url of your app
|
||||
type?: "file" | "call"; //To add in existing apps folder / default icon
|
||||
};
|
||||
commands?: {
|
||||
command: string; // my_app mycommand
|
||||
description: string;
|
||||
}[];
|
||||
actions?: //List of action that can apply on a message
|
||||
{
|
||||
name: string;
|
||||
id: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
//Allow app to appear as a bot user in direct chat
|
||||
direct?:
|
||||
| true
|
||||
| {
|
||||
name?: string;
|
||||
icon?: string; //If defined replace original icon url of your app
|
||||
};
|
||||
|
||||
//Display app as a standalone application in a tab
|
||||
tab?: {
|
||||
url: string;
|
||||
};
|
||||
|
||||
//Display app as a standalone application on the left bar
|
||||
standalone?: {
|
||||
url: string;
|
||||
};
|
||||
|
||||
//Define where the app can be configured from
|
||||
configuration: ("global" | "channel")[];
|
||||
};
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
#### Legacy format
|
||||
|
||||
```javascript
|
||||
type ApplicationDisplay = {
|
||||
twake:
|
||||
{
|
||||
"version": 0, //Legacy
|
||||
"tasks_module" : {
|
||||
"can_connect_to_tasks": true
|
||||
},
|
||||
"calendar_module" : {
|
||||
"can_connect_to_calendar": true
|
||||
}
|
||||
"drive_module" : {
|
||||
"can_connect_to_directory": true,
|
||||
"can_open_files": {
|
||||
"url": "", //Une url à appeler pour éditer le fichier (ouvert dans un onglet)
|
||||
"preview_url": "", //Une url à appeler pour prévisualiser un fichier (iframe)
|
||||
"main_ext": ["docx", "xlsx"], //Extensions principales
|
||||
"other_ext": ["txt", "html"] //Extensions secondaires
|
||||
},
|
||||
"can_create_files": [
|
||||
{
|
||||
"url": "https://[...]/empty.docx",
|
||||
"filename": "Untitled.docx",
|
||||
"name": "Word Document"
|
||||
},
|
||||
{
|
||||
"url": "https://[...]/empty.xlsx",
|
||||
"filename": "Untitled.xlsx",
|
||||
"name": "Excel Document"
|
||||
}
|
||||
]
|
||||
},
|
||||
"member_app": true, // Si défini, votre application génèrera un membre
|
||||
// virtuel dans l'espace de travail avec lequel les
|
||||
// utilisateurs pourront discuter.
|
||||
"messages_module": {
|
||||
"in_plus": {
|
||||
"should_wait_for_popup": true
|
||||
},
|
||||
"right_icon": {
|
||||
"icon_url": "", //If defined replace original icon url of your app
|
||||
"should_wait_for_popup": true,
|
||||
"type": "file" //"file" | "call"
|
||||
},
|
||||
"action": {
|
||||
"should_wait_for_popup": true,
|
||||
"description": "fdsqfds" //Description de l'action, sinon remplacé par le nom de l'app
|
||||
},
|
||||
"commands": [
|
||||
{
|
||||
"command": "mycommand", // my_app mycommand
|
||||
"description": "fdsqfds"
|
||||
}
|
||||
]
|
||||
},
|
||||
"channel": {
|
||||
"can_connect_to_channel": ""
|
||||
},
|
||||
"channel_tab": {
|
||||
"iframe": ""
|
||||
},
|
||||
"app": {
|
||||
"iframe": "",
|
||||
"plus_btn": {
|
||||
"should_wait_for_popup": true
|
||||
}
|
||||
},
|
||||
"configuration": {
|
||||
"can_configure_in_workspace": true,
|
||||
"can_configure_in_channel": true,
|
||||
"can_configure_in_calendar": true,
|
||||
"can_configure_in_tasks": true,
|
||||
//"can_configure_in_directory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: How Identity are managed
|
||||
---
|
||||
|
||||
# Identity
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: Which privileges you need for your app
|
||||
---
|
||||
|
||||
# Privileges
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
# 🧱 Blocks
|
||||
|
||||
## Introduction: <a href="#introduction" id="introduction"></a>
|
||||
|
||||
This guide will introduce you to use blocks to custom Twake messages. Twake allows application to send customs messages. This customs messages offer the possibility for an application to easily format the text your application wants to send and/or display UI components like button, input or iframe. 
|
||||
|
||||
## Write your first block: <a href="#introduction" id="introduction"></a>
|
||||
|
||||
### 1. Take a look at slack block kit documentation 
|
||||
|
||||
* Go to this page: [Slack Block kit](https://api.slack.com/block-kit)
|
||||
* Understand basic layers of block:
|
||||
* Block
|
||||
|
||||
First layer object, defining the use case of the current block (Actions, Context, Header, Files...). It can contain block elements and Composition object. 
|
||||
* Block elements
|
||||
|
||||
Second layer object, defining complex element that will be display in a block (Button, Menus, Input...). It can contain composition object
|
||||
* Composition object 
|
||||
|
||||
Third layer object, formatting the data to display in both block and/or block elements
|
||||
|
||||
### 2. Try your first block 
|
||||
|
||||
* Go to this page: [Block Kit Builder](https://app.slack.com/block-kit-builder)
|
||||
* Try to add/remove block 
|
||||
* Start writing block and check your result
|
||||
|
||||
### 3. Twake block 
|
||||
|
||||
Twake have some blocks that are not implemented in slack block kit (iframes, progress bar and copiable). To use them please follow this: 
|
||||
|
||||
#### iframe  
|
||||
|
||||
An iframe is **Block** allowing you to display an html page in twake.
|
||||
|
||||
How to use it: 
|
||||
|
||||
* Iframe type: 
|
||||
|
||||
```
|
||||
type BlockIframe = {
|
||||
type: "iframe";
|
||||
iframe_url: string;
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
```
|
||||
|
||||
* type: always "iframe"
|
||||
* iframe\_url: the URL of the web page you want to display 
|
||||
* width: the with that you iframe will take
|
||||
* height: the height that you iframe will take
|
||||
|
||||
Example: 
|
||||
|
||||
```
|
||||
{
|
||||
"blocks": [
|
||||
{
|
||||
"type": "iframe",
|
||||
"iframe_url": "
|
||||
https://twake.app
|
||||
",
|
||||
width: "40vh",
|
||||
height: "40vh"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Copiable
|
||||
|
||||
A copiable is **Block element** is a readable only input allowing you to copy string with a button.
|
||||
|
||||
How to use it: 
|
||||
|
||||
* Copiable type: it is a plain text input block element with readonly and copiable set to true
|
||||
|
||||
```
|
||||
type BlockElementPlaintextInput = {
|
||||
type: "plain_text_input";
|
||||
action_id: string;
|
||||
placeholder?: CompositionPlainTextObject;
|
||||
initial_value?: string;
|
||||
multiline?: boolean;
|
||||
min_length?: number;
|
||||
max_length?: number;
|
||||
dispatch_action_config?: DispatchActionConfiguration;
|
||||
readonly?: boolean;
|
||||
copiable?: boolean;
|
||||
};
|
||||
```
|
||||
|
||||
* type: always `"plain_text_input"`
|
||||
* readonly: always `true`
|
||||
* copiable: always `true`
|
||||
|
||||
Example : 
|
||||
|
||||
```
|
||||
{
|
||||
"blocks": [
|
||||
{
|
||||
"type": "input",
|
||||
"element": {
|
||||
"type": "plain_text_input",
|
||||
"action_id": "plain_text_input-action",
|
||||
"initial_value": "https://twake.app"
|
||||
"readonly": true,
|
||||
"copiable": true,
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Progress bar
|
||||
|
||||
A Progess bar is **Block element** that display a progress bar.
|
||||
|
||||
How to use it: 
|
||||
|
||||
* Progress bar type:
|
||||
|
||||
```
|
||||
export type BlockElementProgressBar = {
|
||||
type: "progress_bar";
|
||||
value: number;
|
||||
title: string;
|
||||
};
|
||||
```
|
||||
|
||||
* type: always `"progress_bar"`
|
||||
* value: the value of your progress between 0 and 100
|
||||
* title: the title associate to your progress bar
|
||||
|
||||
Example : 
|
||||
|
||||
```
|
||||
{
|
||||
"blocks": [
|
||||
{
|
||||
"type": "progress_bar",
|
||||
"value": 50,
|
||||
"title": "Chargement"
|
||||
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
 
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
description: 'Welcome to the developers API of Twake, let''s begin together'
|
||||
---
|
||||
|
||||
# 🥇 Getting started
|
||||
|
||||
## Introduction:
|
||||
|
||||
_While users have the ability to create message complexes using the built-in formatting system, applications can go even further and offer many types of messages such as system messages for notifications or interactive messages for your most popular applications._
|
||||
|
||||
## Basics:
|
||||
|
||||
* [Create your first application](create-your-first-application.md)
|
||||
* [Authenticate with Postman](authenticate-postman.md)
|
||||
* [Send a message with your application](send-a-message-for-twake.md)
|
||||
* [Trigger action from command](trigger-action-from-command.md)
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
description: Postman example
|
||||
---
|
||||
|
||||
# Authenticate with Postman
|
||||
|
||||
## Introduction:
|
||||
|
||||
This guide will introduce you to authenticate with [Postman](https://www.getpostman.com).
|
||||
|
||||
## Prerequisites:
|
||||
|
||||
* _You are a **manager** of the company._
|
||||
* You have already [created a Twake application](create-your-first-application.md).
|
||||
* _You have previously installed_ [_Postman_](https://www.getpostman.com)_._
|
||||
|
||||
## Steps:
|
||||
|
||||
### 1. Log your Application
|
||||
|
||||
* Open Postman 
|
||||
* Find the app's credentials according to [#3.-api-settings](create-your-first-application.md#3.-api-settings "mention")
|
||||
* Send POST request with : 
|
||||
* Url: https://web.twake.app/api/console/v1/login
|
||||
* Headers: `{ "Content-Type": "application/json", }`
|
||||
* Body: `{ id: $APP_`_`ID, secret: $APP_SECRET`_` ``}`
|
||||
* This POST request will return a JWT token, this token will allow your application to send events in Twake
|
||||
|
||||
### 2. Optional: Verify your token
|
||||
|
||||
If you're not sure that the procedure to generate a token goes well : 
|
||||
|
||||
* Send GET request with : 
|
||||
* Url: https://web.twake.app/api/console/v1/me
|
||||
* Headers: `{ "Content-Type": "application/json",` Authorization: "`Bearer " + $APP_TOKEN }`
|
||||
|
||||
|
||||
|
||||
###  
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
description: >-
|
||||
You want to create an application for Twake? It's easy, just follow the steps
|
||||
in this documentation! 😀
|
||||
---
|
||||
|
||||
# Create your first application
|
||||
|
||||
## Introduction:
|
||||
|
||||
This guide will walk you through creating, setting up and installing a Twake application.
|
||||
|
||||
## Prerequisites:
|
||||
|
||||
- _You are a **manager** of the company._
|
||||
|
||||
## Steps:
|
||||
|
||||
### 1. Create a Twake application
|
||||
|
||||

|
||||
|
||||
1. _Start by opening your `Workspace settings`_
|
||||
2. _Go to `Applications and connectors`, you should see an **Installed applications area** and **Applications developed by the company**,_
|
||||
3. _Click on `Access your applications and connectors` then `Create an application`,_
|
||||
4. _Enter your application name and application group._ 
|
||||
|
||||
**Application group** is used to group your application with other applications of the same type. **Be careful, the application group will not be modifiable later.**
|
||||
|
||||
### **2. Identity of the application (Optional)**
|
||||
|
||||

|
||||
|
||||
Let's add a description and an icon for our application. \
|
||||
it will be much prettier! 😇
|
||||
|
||||
### 3. API settings
|
||||
|
||||
There you will find some important pieces of information:
|
||||
|
||||

|
||||
|
||||
- _Your API private key,_
|
||||
- _Your public application identifier,_
|
||||
- _URL that will be used to receive events for your application,_
|
||||
- _List of IP addresses that have the right to call the Twake API with your credentials. (You can use `*`during the development of your application.)_
|
||||
|
||||
**Private key** and **Public application identifier** relate to **calls to the Twake API**.
|
||||
|
||||
### 4. Display settings (Optional)
|
||||
|
||||

|
||||
|
||||
To configure where your application should display, you need to fill a `JSON` object in `Display Settings` field.
|
||||
|
||||
[Here](../application-settings/application-visibility-example.md) is a quick example, each field is optional and his presence determines the positioning of your application in Twake.
|
||||
|
||||
### 5. Application privileges
|
||||
|
||||

|
||||
|
||||
Your application can access and modify data, only according to your needs you don't need to access all the data present in Twake. \
|
||||
\
|
||||
This is why you must specify the accesses for the proper functioning of your application. These accesses will be public and indicated to the user before the installation of your application.
|
||||
|
||||
In our example, we will only add `message_save` and `message_remove` in `Write privileges`.\
|
||||
\
|
||||
If you want to know more about capabilities and privileges, take a look at the list [here](../application-settings/privileges.md).
|
||||
|
||||
### 6. Install application
|
||||
|
||||
Once you've configured your application, you need to install it on Twake. 
|
||||
|
||||

|
||||
|
||||
Go to `Applications and connectors`, search and display your application then install it.
|
||||
|
||||
Your application is now ready, check the [Authenticate with Postman](authenticate-postman.md) documentation for starting using it !
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
description: Send a message through API
|
||||
---
|
||||
|
||||
# Send a message with your application
|
||||
|
||||
\
|
||||
Introduction: <a href="#introduction" id="introduction"></a>
|
||||
|
||||
---
|
||||
|
||||
This guide will introduce you to send message with your application in Twake.
|
||||
|
||||
## Prerequisites: <a href="#prerequisites" id="prerequisites"></a>
|
||||
|
||||
- You have already created a Twake application.
|
||||
- _Your application is installed and saved in your company._
|
||||
|
||||
## Steps: <a href="#steps" id="steps"></a>
|
||||
|
||||
### 1. Send message as a new Thread 
|
||||
|
||||
- Find the app's token according to [1. Log your Application](authenticate-postman.md#1.-log-your-application)
|
||||
- Find the identifiers to target a channel:
|
||||
- Company's _id: $COMPANY_ID_
|
||||
- Workspace's \_id: $WOKSPACE\_\_ID
|
||||
- Channel's _id: $CHANNEL_ID_
|
||||
- _Set the message you want to send:_
|
||||
|
||||
- _Minimal:_ 
|
||||
|
||||
_$MESSAGE = { "text": "Hello world !" }_
|
||||
|
||||
- _To take full advantage of the messages capability in Twake see the_ [_MessageObject_](../../internal-documentation/backend-services/messages/database-model.md)\_\_
|
||||
|
||||
- Send POST request with : 
|
||||
- Url: https://web.twake.app/api/messages/v1/companies/$COMPANY\_ID/threads
|
||||
- Headers: `{ "Content-Type": "application/json",` Authorization: "`Bearer " + $APP_TOKEN }`
|
||||
- Body: `{ resource: { participants: [ { type: "channel", id: $CHANNEL_ID, company_id: $COMPANY_ID, workspace_id: $WORKSPACE_ID, }, ], }, options: { $MESSAGE }, }`
|
||||
- This POST request will return a [ThreadObject](../../internal-documentation/backend-services/messages/database-model.md)
|
||||
|
||||
### 2. Send message as a Thread answer
|
||||
|
||||
- Find the app's token according to [1. Log your Application](authenticate-postman.md#1.-log-your-application)
|
||||
- Find the identifiers to target a channel:
|
||||
- Company's _id: $COMPANY_ID_
|
||||
- Workspace's \_id: $WOKSPACE\_\_ID
|
||||
- Channel's _id: $CHANNEL_ID_
|
||||
- _Thread's id: $THREAD_Id_
|
||||
- _Set the message you want to send:_
|
||||
|
||||
- _Minimal:_ 
|
||||
|
||||
_$MESSAGE = { "text": "Hello world !" }_
|
||||
|
||||
- _To take full advantage of the messages capability in Twake see the_ [_MessageObject_](../../internal-documentation/backend-services/messages/database-model.md)\_\_
|
||||
|
||||
- Send POST request with : 
|
||||
- Url: https://web.twake.app/api/messages/v1/companies/$COMPANY_ID/threads/$THREAD\__ID
|
||||
- Headers: `{ "Content-Type": "application/json",` Authorization: "`Bearer " + $APP_TOKEN }`
|
||||
- Body: `{ resource: { $MESSAGE } }`
|
||||
- This POST request will return a [MessageObject](../../internal-documentation/backend-services/messages/database-model.md)
|
||||
|
||||
### 3. Applications can send customized messages 
|
||||
|
||||
The [MessageObject](../../internal-documentation/backend-services/messages/database-model.md) object have a property called "block" that allow your application to send messages which contains more than a simple string. For example in an application message you can display an iFrame, buttons, menu selector, etc... Combining all this options you can create everything you want up to the limit of your imagination. To understand how to create powerful message using the block property see [blocks](../blocks.md).
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
description: Trigger action from command
|
||||
---
|
||||
|
||||
# Trigger action from command
|
||||
|
||||
## Introduction: <a href="#introduction" id="introduction"></a>
|
||||
|
||||
This guide will introduce you to trigger action from your application using command
|
||||
|
||||
## Prerequisites: <a href="#prerequisites" id="prerequisites"></a>
|
||||
|
||||
* You have already created a Twake application.
|
||||
* Your application is installed and saved in your company.
|
||||
|
||||
## Steps: <a href="#steps" id="steps"></a>
|
||||
|
||||
### 1. Let your application listen to command
|
||||
|
||||
* Go in your app developer's setting: 
|
||||
* Click on your username in the top left corner
|
||||
* Go to workspace settings 
|
||||
* Go to integrations 
|
||||
* Click on the three-dot next to your application
|
||||
* Open developper setting 
|
||||
* Click on display 
|
||||
* You will find and editable object containing a twake object
|
||||
* Add a new property commands in this object like this:
|
||||
|
||||
* `"commands" : [{"command": string, "descritpion": string }]`
|
||||
* The first property of commands is command that let you define a name for your command, by default the command name is the name of your application. 
|
||||
* The second property of command is description that let you describe the way to use the command you want to define.
|
||||
|
||||
|
||||
|
||||
### 2. Use your command in a channel
|
||||
|
||||
* In the message editor write /command 
|
||||
* A popup displaying the description on how to use the command related to your application should open.
|
||||
|
||||
__
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
description: >-
|
||||
Welcome to the developers API home, here you can create apps, plugins and
|
||||
connectors for Twake.
|
||||
---
|
||||
|
||||
# 🏠 Home
|
||||
|
||||
## Introduction:
|
||||
|
||||
Twake offer the possibility to uses a lot of application to increase the quality of your team workflow. You can now easily send a Gif to add conviviality into your channels, start Jitsi calls in one click, create polls or even get notified in your channels using webhooks or automation as powerful as n8n allows.
|
||||
|
||||
|
||||
|
||||
## Ready to use integration:
|
||||
|
||||
Twake have some integrations ready to use that are just waiting for you to be installed in your workspaces. You can find in the list below these integrations:
|
||||
|
||||
* Jitsi: [https://github.com/linagora/Twake-Plugins-Jitsi](https://github.com/linagora/Twake-Plugins-Jitsi)
|
||||
* Giphy: [https://github.com/linagora/Twake-Plugins-Giphy](https://github.com/linagora/Twake-Plugins-Giphy)
|
||||
* SimplePoll: [https://github.com/linagora/Twake-Plugins-SimplePoll](https://github.com/linagora/Twake-Plugins-SimplePoll)
|
||||
* Webhoocks: [https://github.com/linagora/Twake-Plugins-Webhooks](https://github.com/linagora/Twake-Plugins-Webhooks)
|
||||
* N8n: [https://github.com/linagora/Twake-Plugins-n8n](https://github.com/linagora/Twake-Plugins-n8n)
|
||||
|
||||
## Imagination is your limit 
|
||||
|
||||
By installing webhooks or n8n in your workspace, you can now imagine infinite uses cases to increase the quality of your team workflow. Connect your channels to get notify of new code changes when pushing on github or to get notify in a n8n workflow. 
|
||||
|
||||
If you think that you can't do something with integration, as Twake is open source, feel free to contribute to an existing Twake's integration or even more create the new integration that answer to your need.  
|
||||
|
||||
|
||||
|
||||
> Please do not work on this list of plugins as we already made them (their are just not yet open-sourced)\
|
||||
> Zapier, IFTTT, OnlyOffice, RSS feed, Github, Gitlab and Reminder.
|
||||
|
||||
🤗 We are not yet ready for this documentation, up this issue to have it sooner : [https://github.com/TwakeApp/Twake/issues/116](https://github.com/TwakeApp/Twake/issues/116)
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
description: >-
|
||||
Welcome to the internal documentation section. This chapter is for developers
|
||||
working in Twake team or wanting to participate in the project.
|
||||
---
|
||||
|
||||
# 🥇 Get started
|
||||
|
||||
> If you are looking for the Developers API of Twake to make plugins, apps or connectors, go here : [Developers API](../developers-api/home.md)
|
||||
|
||||
## Before to start
|
||||
|
||||
- Fork our repo [https://github.com/TwakeApp/Twake](https://github.com/TwakeApp/Twake) and checkout the **develop** branch
|
||||
|
||||
::: info
|
||||
You want to fix a translation issue? We use Weblate: [https://hosted.weblate.org/projects/linagora/twake-chat-web/](https://hosted.weblate.org/projects/linagora/twake-chat-web/)
|
||||
:::
|
||||
|
||||
## Run the backend (+ database)
|
||||
|
||||
1. Go to "twake/"
|
||||
2. `docker-compose -f docker-compose.dev.mongo.yml up -d`
|
||||
3. The backend will be running on port 3000
|
||||
|
||||
## Run the frontend
|
||||
|
||||
1. Go to "twake/frontend"
|
||||
2. Run `yarn install` (better to use **yarn** than **npm**), our developers uses node 14 and 16, it should work with any upper version.
|
||||
3. Prepare the **environment.ts** file like this: `cp environment/environment.ts.dist.dev environment/environment.ts`
|
||||
|
||||
```
|
||||
export default {
|
||||
env_dev: true,
|
||||
front_root_url: 'http://localhost:3001',
|
||||
api_root_url: 'http://localhost:3000',
|
||||
websocket_url: 'ws://localhost:3000'
|
||||
};
|
||||
```
|
||||
|
||||
5\. Run `yarn start`
|
||||
|
||||
6\. It will propose to run on another port, say "yes" to run it on port 3001.
|
||||
|
||||
## Test and start develop
|
||||
|
||||
You should be able to go on localhost port 3001 just click on "create an account" and you'll be able to access Twake after a few steps.
|
||||
|
||||
\-> Logs from backend can be accessed from `docker-compose -f docker-compose.dev.mongo.yml logs -f --tail 100`
|
||||
|
||||
\-> Logs from frontend are visible in the output of `yarn start`
|
||||
|
||||
You can start writing code 🎉 ! It will reload the backend / frontend automatically each time you save.
|
||||
|
||||
::: danger
|
||||
Before to start implementing a new feature or bug fix, please find or create an issue on our repository (here [https://github.com/linagora/Twake/issues](https://github.com/linagora/Twake/issues)) and put a comment to inform that you will work yourself on the issue. To avoid two same people doing the same work ;)
|
||||
:::
|
||||
|
||||
::: info
|
||||
If you have any issue, please come and join us on [https://community.twake.app/](https://community.twake.app)
|
||||
:::
|
||||
|
||||
## Propose an improvement to be merged
|
||||
|
||||
For this you need to create a merge request on Github from your fork to our develop branch. Goes there: [https://github.com/linagora/Twake/compare](https://github.com/linagora/Twake/compare) and click "compare across forks".
|
||||
|
||||
Tests will be ran automatically and should pass before to merge the code.
|
||||
|
||||
::: info
|
||||
We are hiring! Apply now on [https://job.linagora.com/en/join-us/](https://job.linagora.com/en/join-us/)
|
||||
:::
|
||||
Reference in New Issue
Block a user