Giter Site home page Giter Site logo

linagora / twake Goto Github PK

View Code? Open in Web Editor NEW
1.7K 39.0 185.0 199.53 MB

Twake is a secure open source collaboration platform to improve organizational productivity.

Home Page: https://twake.app

License: GNU Affero General Public License v3.0

PHP 24.33% HTML 0.63% JavaScript 24.28% Shell 0.09% Dockerfile 0.14% CSS 1.06% TypeScript 44.23% Twig 0.88% SCSS 3.86% Less 0.51%
collaboration tool teamwork chat file-sharing drive kanban kanban-board calendar

twake's Introduction

Twake - The Open Digital Workplace

update-saas-backend update-saas-frontend backend-build docker-build

Docker Docs Community Twitter Join the chat at https://gitter.im/linagora/Twake

Twake is a secure open source collaboration platform to improve organizational productivity. Twake offers all the features for collaboration :

  • Team chat
  • File Storage
  • Team Calendar
  • Task Management
  • Video call and conferencing
  • Real time document collaboration

Demo

You can try Twake in SaaS.

Or run your own local Twake instance with :

cd twake
export COMPOSE_FILE=docker-compose.onpremise.yml
docker compose up -d

Twake will be running on http//localhost and by default redirect to https and uses a self-signed certificate. If you want to run http only then set SSL_CERTS=none at docker-compose.yml

Documentation

Twake's documentation can be found at doc.twake.app

More information at twake.app : twake.app

Community

The Twake community is gathered on the forum: community.twake.app.

If you have any questions or suggestions, we will be happy to answer them.

Translations

We use Weblate for translation management. Create an account on weblate to improve our Twake internationalisation.

How to contribute

Everyone can contribute at their own level, even if they only give a few minutes of their time. Whatever you do, your help is very valuable. Only thanks to you Twake can be a powerful software. Check out how you can help twake.app/en/how-to-contribute/

Manual install of Twake

Install Twake on your machine with docker-compose using the install documentation here : linagora.github.io/Twake/onprem/installation.html

cd twake; docker-compose -f docker-compose.onpremise.mongo.yml up -d

Twake will be available on port 3000.

License

Twake is licensed under Affero GPL v3 with additional terms

twake's People

Contributors

aduprat avatar benoittallandier avatar bj8712 avatar bmuddha avatar c0ldplasma avatar chamerling avatar clem- avatar dependabot[bot] avatar digitalfredy avatar dvandonkelaar avatar gitter-badger avatar invakid404 avatar montaghanmy avatar oubchid avatar pangeeemissary avatar phamtuanchip avatar rezk2ll avatar rkaiman avatar romanesko avatar romaricmourgues avatar schneik80 avatar shivam9593 avatar sirpaulo avatar snyk-bot avatar stephanevieira75 avatar tanandy avatar tissarni avatar tk-nguyen avatar tnstung avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twake's Issues

User autocompletion

Problem

User fields with autocomplete indicates everyone in Twake.

Device

All

Expected result

User fields with autocomplete must only indicate the company user.

Solution / TODO

Update user fields with autocompletion

User card

Problem

There are no information about user shown to other user.

Device

All

Result expected

User should be able to know more about other user in workspace.

Solution / TODO

When you click on a nickname, a popup appears displaying the information available on the user:

  • name
  • full name / nickname
  • photo
  • status

And a button to start a direct message

Descending messages

Problem

When someone replies to a thread too far in the history, we don't know where the message notification came from (we don't know which message was added). You can lose information, and it encourages you to start a new discussion when there is already a block on the topic.

Device

All

Result expected

User should be sure that most recent messages are down in channels.

Solution / TODO

Groups of messages must be sorted according to the date of the last message in the group.

User stories

As an user, when I reply to a message that is not in the most recent message block, a system message appears at the very bottom to indicate my reply (like below)
Capture_decran_2020-09-25_a_16.15.59.png

Charge test

Problem

We don't have a large stress test of the platform to validate or not scaling opportunity.

Device

Desktop

Result expected

Have an automatic test which validate scaling

Solution / TODO

Calendar popup bug

Describe the bug
There is a design bug in calendar popup

To Reproduce

  1. Go to calendar
  2. Create an event
  3. If you don't see the problem, zoom you interface

Expected behavior
Popup content should stay is the popup

Screenshots
image

Desktop (please complete the following information):

  • OS: Mac
  • Browser: Brave

High CPU usage in idle

I setup Twake with the default docker-compose.yml. I noticed that the php and the scylladb container have very high idle CPU usage. The php container idles at around 75% while the scylladb container idles at 52% (docker stats).

I already found out that its normal for scylladb to use a lot of CPU and I was able to reduce the usage of the scylladb container to around 35% with the --smp 1 command line argument.

Is it also possible to reduce the idle CPU usage of the php container?

Make docker-compose faster and fix errors

Problem

  • Running Twake take up to 10 minutes because of the database initialisation,
  • First subscription on Twake in local need mail verification where most of us doesn't configure a mail server,
  • There is an issue with writing files in the docker and make Twake Drive unusable without configuring an S3 or OpenStack service

Device

All (on-premise install)

Result expected

Running Twake should be as easier as possible.

Solution / TODO

Update docker-compose

Hot reloading

Problem

Hot reloading is not available for development.

Device

Desktop dev

Result expected

Developers can use hot reloading

Solution / TODO

Disable account creation button and allow only guest with temporary accounts

Is your feature request related to a problem? Please describe.
I think it could be a interesting for some organisations to restrict account creation and limit them to invitations only.

Describe the solution you'd like
Following the project code guidelines, I think that add a boolean key in config file and use it to conditionally display "Create Account" link in login form could be perfect.

Additional content
See original thread on Twake Community Forum : Thread

a few english translation fixes

Describe the bug
A few of the english translations seem off:

  1. Calendar should say "to":
    image

  2. "Import from the computer" is technically correct but clunky, "Import from computer" is more natural
    image

  3. "Maximum weight" should say "Maximum (file) size 5 mb"
    image

Update Jisti on twake.app

Problem

Video call on twake.app use the external Twake connectors server.

Device

All

Result expected

Video call on twake.app should use the built-in one.

Solution / TODO

Update jitsi connector on twake.app.

User autocomplete

Problem

When the user wants to add colleagues (user in his company) to his workspace, he needs to know the username of his colleagues.

Device

All device

Result expected

User should be able to add their colleagues with an autocomplete

Solution / TODO

Implement autocomplete for user companies in invitation form

can't get past the "Create a new account 1/3" page

When i insert a username, emailadress and password, and then click next the button keeps stuck at the "Continue" circle..
Desktop (please complete the following information):

  • OS: macOS Catalina
  • Browser Safari

i used the instructions to spin up the docker containers, but it also fails to startup the elastic container. Perhaps this has something to do with it?

Big companies - User management (front)

Improve Twake user management for big companies and workspaces (> 5K)

Frontend

  • Remove table "Company members" if company contains more than 30 people. (need #59)
  • Add auto-complete in "Invite new collaborators" (need #60)
  • Separate in three tabs: members, guests and waiting
  • Paginate list of members (need #59)

Newsletter-like / readonly channels update

Update channels to handle thousand of users

  • Queue of tasks for notifications (bulk of 100 notifications instead of the big loop)

  • Store "workspace" instead of list of users for public channels

Big companies - Group and workspace ES search

Enable elastic search for big companies: search users into workspace and into groups

  • Back - Search users into workspace
  • Back - Search users into group
  • Front - Search users into group / workspace using backend

Responses to old thread not visible

Is your feature request related to a problem? Please describe.
Old thread responses trigger notification but it's almost impossible to find the new message

Describe the solution you'd like
New message should be visible at the bottom of the channel a way of an other

Page refresh and routing problem when saving account settings

Describe the bug
I noticed a bug which happens when trying to change some account settings, but not everytime !

When clicking on save button, page refresh and settings aren’t saved. Browser console giving JSON.parse : unexpected end of data error, and ajax call to /ajax/users/account/identity/ don’t respond anything.

Checking docker-compose logs, I saw this error :

Pecee\SimpleRouter\Exceptions\NotFoundHttpException: Route "/ajax/users/account/identity/" or method "get" not allowed. in /twake-core/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php:415

If I attempt to edit multiple times, it eventually works after 4 of 5 retries. Sometimes, before page refreshing (which seems to be not a normal behavior), I can glimpse for a second a red error message, but can’t read it.

Steps to Reproduce

  1. Go to 'Account settings'
  2. Try to change any setting, except languages options
  3. Page will refresh and setting will not be saved
  4. See error in docker-compose logs

Expected behavior
Page should not reload and setting should be saved

Desktop:

  • OS: Windows 10 2004
  • Browser: Firefox 78.0.2
  • Version [e.g. 22]

Additional Context
Doesn't occurs on Chrome 84.0.4147.89 nor on Opera 69.0.3686.77

Thanks 🙂 !

Should not open user popup clicking on application name in messages

Describe the bug
Should not open user popup clicking on application name in messages.

To Reproduce
Steps to reproduce the behavior:

  1. Open Messages
  2. Send a file
  3. Click on "Document" like if you clicked on an user name
  4. User popup open with application infos.

Expected behavior
No popup for apps messages.

Big file upload

Describe the bug
When user upload big file and download it, the file is empty (0ko)

To Reproduce

  1. Upload big file (1go)
  2. Download it

Expected behavior
A possibility to upload and download big file

Desktop (please complete the following information):

  • OS: *
  • Browser *

Can't remove workspaces from my account (last member of workspace and guest / non-admin)

Describe the bug
I can't remove workspaces from my account after being invited.

To Reproduce
I created a main account, one at [email protected] - from there, I created a
guest account for [email protected] and shared a workspace from my main account
to the guest account.

The guest account is unable to quit the workspace if he's alone in it. And he cannot manage the workspace either.

Expected behavior
Prevent last non-guest user to quit workspace before guest.

Unable to create a calendar tab on channel.

Describe the bug
Unable to create a calendar tab on channel.

To Reproduce
Steps to reproduce the behavior:

  1. add tab to existing channel
  2. create calendar tab
  3. name calendar tab and hit save
  4. get blue screen of death

Expected behavior
Ability to create this tab

Desktop (please complete the following information):

  • OS: Mac, Desktop

Additional context
Error tells "Cannot read property view of undefined", the error probably appear when no calendar were created in the calendar app.

Connector in reply pannel

Problem

When opening the reply panel of a message and answering via a connector (jitsii, giphy, ...), the answer is not in reply section.

Device

Web

Result expected

User should be able to use connector in reply section

Solution / TODO

Update connector button

Search message in specific channel

Problem

When user search a message, it can't be in specific channel

Device

All

Result expected

User should be able to search message in specific channel

Solution / TODO

Crash on add new tag

How to reproduce :

Task application -> update task -> add tag

Capture d’écran 2020-07-03 à 10 32 34

ReferenceError: Languages is not defined

in t
in t
in div
in div
in t
in div
in div
in t
in div
in div
in t
in t
in t
in t
in t

Update doc with Apache2 configuration

Overview
Documentation doesn't currently feature any Apache configuration instead of nginx for using a custom domain (reverse proxy)

Solution
I successfully configured Apache 2.4 to work with Twake. Here is a complete procedure to achieve it.

Apache vhost

You need to create a vhost listening on port 443.

For exemple with certbot :

1. Create a vhost listening on port 80 with ServerName equals to your custom domain. Don't define any document root.
2. Then, use certbot to get a certificate and automatically create your vhost listening on port 443

sudo certbot --apache --email your_email -d your_domain --agree-tos --redirect --noninteractive

Reverse proxy

You have now to configure your reverse proxy directive. Head up to your 443 vhost configuration file and paste those directives (place them after server and ssl directives) :

RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "wss://127.0.0.1:8000/$1" [P,L]
  
ProxyRequests off
  
<Location />
    ProxyPass http://127.0.0.1:8000/
    ProxyPassReverse http://127.0.0.1:8000/
    ProxyPreserveHost On
</Location>
<Location /socketcluster>
    ProxyPass ws://127.0.0.1:8000/socketcluster
    ProxyPassReverse ws://127.0.0.1:8000/socketcluster
    ProxyPreserveHost On
</Location>

<Proxy *>
    AllowOverride All
    Order allow,deny
    Allow from All
</Proxy>

RequestHeader set X-Forwarded-port "80"

Be careful to NOT type trailing slash for ws location (it won't work).

I'm not sure that all directives are needed, but this configuration works for me.

Configuring remoteip

You also need to configure remoteip mod from apache with this command :

a2enmod remoteip

Then, edit /etc/apache2/conf-available/remoteip.conf to fit with this content :

RemoteIPHeader X-Real-IP
RemoteIPTrustedProxy 127.0.0.1 ::1

You can now enable the configuration of remoteip and restart Apache :

a2enconf remoteip
service apache2 restart

Unable to create an account on mobile

Describe the bug
Unable to create an account on mobile, process stuck on "identity" page.

To Reproduce
Steps to reproduce the behavior:

  1. Open mobile app
  2. Tap create account
  3. Fill in username, email and password, click continue
  4. Fill identity, click continue
  5. Nothing happen

Expected behavior
Finishing subscription

Smartphone (please complete the following information):

  • Device: iPhone & Android

Popup window not disappearing

Describe the bug
When pressing Enter to confirm the suppression of a workspace, the popup message doesn't disappear. However, the suppression of the workspace is effective.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Workspace settings'
  2. Click on 'Delete Workspace'
  3. Enter the name of the workspace
  4. Click on 'Delete'
  5. Press Enter to confirm
  6. See error

Expected behavior
The popup message disappears when pressing enter.

Screenshots
Capture d’écran de 2020-07-17 15-29-22

Desktop (please complete the following information):

  • OS: Linux Ubuntu
  • Browser: Firefox
  • Version: 67.0

Additional context
None

Big companies - Front changes

Step 1 - Some front changes for big companies

  • (1) Remove "Team" in Tasks and replace with "See tasks for user" + user selector
  • (2) In UserListManager remove "add everyone" if workspace is more than 30 people (in workspace.total_members)
  • (3) Remove all usage of scope "twake" in user search (replace with "group" scope)
  • (4) In "Invite new collaborators" remove switch "Guest"

Step 2 Improve Twake user management for big companies and workspaces (> 5K)

  • Remove table "Company members" if company contains more than 30 people. (in workspace.group.total_members)
  • Separate in three tabs: members, guests and waiting
  • Paginate list of members (need #59)
  • Search members
  • Check menu options works

Popup channel creation

Problem

When a user wants to create a new private channel, he must first create the channel and use another menu in which he invites people.
He has to go through 2 popups to create his channel.

Device

All

Result expected

A user must be able to create a private channel and invite users on a single popup.

Solution / TODO

Update the popup creation

File upload does not work on new install

Describe the bug
A clear and concise description of what the bug is.
Uploading files doesn't appear to work correctly on a fresh install of Twake.

To Reproduce
Steps to reproduce the behavior:

  1. Install Twake
  2. Click Documents
  3. Click "Import from the computer"
  4. progress bar will show upload but file will not appear in Main
    3a. Create a new folder
    3b. Navigate into the folder and upload a file from computer
    3c. File appears as a list item but cannot be previewed or downloaded

Expected behavior
A clear and concise description of what you expected to happen.
Files should appear with an icon or preview and download correctly.

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser Chrome
  • Version 84.0.4147.89

Additional context
Fresh install on Ubuntu 20 with latest docker version.

Big companies - User management (back)

Improve Twake user management for big companies and workspaces (> 5K)

Backend

  • Add counters for companies and workspaces to keep track of guests, members, and emails
  • Paginate results in get members / guests / emails of workspace

Error when editing event dates

Describe the bug
I was creating an event in the calendar, I edited the start date, then the end date (which was not updating) and boom:
TypeError: this.sources[e] is undefined

To Reproduce
Steps to reproduce the behavior:

  1. Go to Calendar and create event
  2. Edit start date, end date
  3. See error

Context
This is not happening after reloading app, so may be related to #27

DKIM signer is always instanciated and attached, even if DKIM parameters aren't set

Describe the bug
In Parameters.php, when DKIM parameters are left empty or commented, TwakeMailer service try anyway to sign mail with DKIM, throwing a fatal error.

Complete Stacktrace :

Call Stack:
    0.0002     350744   1. {main}() /twake-core/bin/console:0
    0.0669    2966624   2. App\App->runCli() /twake-core/bin/console:9
    0.0669    2967080   3. Common\CommandsManager->run() /twake-core/app/App.php:134
    0.0669    2968792   4. Common\CommandsManager->execute() /twake-core/app/Common/CommandsManager.php:27
    0.0677    2985824   5. Twake\Core\Command\MailsQueueCommand->executeFromManager() /twake-core/app/Common/CommandsManager.php:46
    0.0677    2985824   6. Twake\Core\Command\MailsQueueCommand->execute() /twake-core/app/Common/Commands/ContainerAwareCommand.php: 27
   21.4116    8465976   7. Twake\Core\Services\TwakeMailer->sendInternal() /twake-core/src/Twake/Core/Command/MailsQueueCommand.php:6 6
   21.4298    9283392   8. Twake\Core\Services\TwakeMailer->sendHtml() /twake-core/src/Twake/Core/Services/TwakeMailer.php:95
   21.4834   11078552   9. Swift_Mailer->send() /twake-core/src/Twake/Core/Services/TwakeMailer.php:151
   21.8575   11103232  10. Swift_SmtpTransport->send() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php:71
   21.8583   11111592  11. Swift_SmtpTransport->sendTo() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Abstr actSmtpTransport.php:206
   21.8583   11111968  12. Swift_SmtpTransport->doMailTransaction() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Tran sport/AbstractSmtpTransport.php:516
   21.9756   11111968  13. Swift_SmtpTransport->streamMessage() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transpor t/AbstractSmtpTransport.php:500
   21.9761   11118448  14. Swift_Message->toByteStream() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Abstr actSmtpTransport.php:398
   21.9779   11122280  15. Swift_Message->doSign() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Message.php:169
   22.0229   11125736  16. Swift_Signers_DKIMSigner->addSignature() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mess age.php:203
   22.0234   11128096  17. Swift_Signers_DKIMSigner->getEncryptedHash() /twake-core/vendor/swiftmailer/swiftmailer/lib/classes/Swift/ Signers/DKIMSigner.php:551

To Reproduce
Steps to reproduce the behavior:

  1. In Parameters.php, don't set any DKIM settings, or comment this array block
  2. Try to send a mail

Expected behavior
Mail should be sent, even if DKIM settings aren't defined.

Possible solution
In TwakeMailer service (twake/backend/core/src/Twake/Core/Services/TwakeMailer.php), check if DKIM parameters are defined and are not left empty with

//Line 121
if(isset($this->mail_parameters["dkim"]) && 
   isset($this->mail_parameters["dkim"]["private_key"]) && $this->mail_parameters["dkim"]["private_key"] !== "" &&
   isset($this->mail_parameters["dkim"]["domain_name"]) && $this->mail_parameters["dkim"]["domain_name"] !== "" &&
   isset($this->mail_parameters["dkim"]["selector"]) && $this->mail_parameters["dkim"]["selector"] !== ""){
    /* Instanciate Swift_Signers_DKIMSigner $signer and attach it to SwiftMailer $this->mailer */
}

// Same for attachSigner line 149

Maybe consider to check this in the beginning of sendHtml method and store result in variable ($is_DKIM for exemple) to avoid duplicating those complex conditions on line 121 and line 149

//Line 117
$is_DKIM = false;
if(isset($this->mail_parameters["dkim"]) && 
   isset($this->mail_parameters["dkim"]["private_key"]) && $this->mail_parameters["dkim"]["private_key"] !== "" &&
   isset($this->mail_parameters["dkim"]["domain_name"]) && $this->mail_parameters["dkim"]["domain_name"] !== "" &&
   isset($this->mail_parameters["dkim"]["selector"]) && $this->mail_parameters["dkim"]["selector"] !== ""){
    $is_DKIM = true;
}

//Line 121
if($is_DKIM){
    /* Instanciate Swift_Signers_DKIMSigner $signer and attach it to SwiftMailer $this->mailer */
}

// Same for attachSigner line 149

Desktop (please complete the following information):

  • OS: Windows 10 2004
  • Browser: Firefox
  • Version: 78.0.2

Thanks ! 🤗

Specific notification on mention

Problem

When someone mentions a user in a thread, that user is not notified specifically for mentioning them.

Device

All

Result expected

Users need to know when their name is mentioned

Solution / TODO

Build a specific notification when users are mentioned

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.