Skip to content

rbarbalat/Cypher

Repository files navigation

Cypher Group Project

About

Advanced Team Communication and Collaboration Platform Cypher is a cutting-edge web application that revolutionizes team communication and collaboration. Designed to enhance productivity and streamline workflows, Cypher provides a comprehensive suite of features that empower teams to effectively collaborate, share knowledge, and stay connected. With its intuitive interface and robust functionality, Cypher is poised to become the go-to platform for seamless and efficient team communication.

Development Team

Jonathan Carter : GitHub Logo LinkedIn Logo | Omar El Sahlah : GitHub Logo LinkedIn Logo Twitter Logo | Roman Barbalat : GitHub Logo LinkedIn Logo | Chris Eke : GitHub Logo LinkedIn Logo

Jonathan, Omar, Chris, and Roman have successfully completed this project with a strong desire to continue their learning and personal development. As a cohesive group, we are proud to announce the completion of Cypher. Moving forward, we eagerly anticipate collaborating with exceptional companies. To inquire about our availability for future projects, please feel free to reach out to us using the contact information provided above.

Languages & Tools

Visual Studio Code JavaScript Python Flask HTML5 CSS3 React React Router Redux Render Git GitHub Node.js npm Amazon AWS SQLAlchemy WTForms Werkzeug Socket.io Postgres SQLite

Landing Page

The landing page

• To explore the features without creating a profile, simply click on 'Login' and select 'Demo User'.

The landing page

• Users are provided with a personalized meet the developers, allowing them to associate a face with the project.

The landing page

• After logging in users have the ability to join existing teams or create a team of their own.

The landing page

• Inside a team users are able to join existing channels, create a new channels, participate in channel wide chats and engage in private conversations with team members

API-Routes

This web app uses the following API routes to dynamically update the page to create a single-page-app-like feel for the user for specific features.

Teams

  • Returns a list of all Teams (each team is a dictionary)

    • GET /api/teams/

      [
          {
              "id": "Integer",
              "name": "String",
              "image": "String",
              "users": "[Users]",
              "num_members": "Integer"
          }
      ]
  • Returns a list of all the Teams that the user is a member of (each team is a dictionary)

    • GET /api/teams/currentuser

      [
          {
              "id": "Integer",
              "name": "String",
              "image": "String",
              "users": "[Users]",
              "num_members": "Integer"
          }
      ]
  • Returns a dictionary representing a single Team with the specified id

    • GET /api/teams/<int:id>

      {
          "id": "Integer",
          "name": "String",
          "image": "String",
          "users": "[Users]",
          "num_members": "Integer"
      }
  • Returns a dictionary of the newly created Team

    • POST /api/teams/

      {
          "id": "Integer",
          "name": "String",
          "description": "String",
          "image": "String"
      }
  • Returns a list of dictionaries representing the members of the team with the specififed id.

    • GET /api/teams/<int:id>/members

      [
          {
              "id": "Integer",
              "name": "String"
          }
      ]
  • The current user joins the team with specified id and a dictionary with successful response is returned

    • POST /api/teams/<int:id>/members

      {
          "message": "added"
      }
  • Returns a confirmation message of the successful deletion of specified team if the current user is the team owner.

    • DELETE /api/teams/<int:id>

      {
          "message": "Team Deleted"
      }
  • Returns a confirmation message that the member was deleted

    • DELETE /api/teams/<int:team_id>/member/<int:member_id>

      {
          "message": "Successfully Deleted"
      }

Channels

  • Returns a list of all Channels. Each channel is a dictionary.

    • GET /api/channels/

      [
        {
            "id": "Integer",
            "name": "String",
            "description": "String",
            "private": "Boolean",
            "team_id": "Integer",
            "numMembers": "Integer",
            "users": "[Users]"
        }
      ]
  • Returns a list of all Channels that belong to the specified team. Each channel is a dictionary.

    • GET /api/teams/<int:id>/channels

      [
          {
              "id": "Integer",
              "name": "String",
              "description": "String",
              "private": "Boolean",
              "team_id": "Integer"
          }
      ]
  • Returns a list of channels in the specified team the current user is a member of. Each channel is a dictionary.

    • GET /api/teams/<int:id>/channels/user

      [
          {
              "id": "Integer",
              "name": "String",
              "description": "String",
              "private": "Boolean",
              "team_id": "Integer"
          }
      ]
  • Returns a dictionary of the specified channel.

    • GET /api/channels/<int:id>

      {
          "id": "Integer",
          "name": "String",
          "private": "Boolean",
          "team_id": "Integer",
          "description": "String",
          "users": "[Users]",
          "num_members": "Integer"
      }
  • Returns a list of all members of a channel. Each member is a dictionary.

    • GET /api/channels/<int:id>/members

      [
          {
              "id": "Integer",
              "username": "String",
              "status": "String"
          }
      ]
  • Returns a dictionary of the newly created channel.

    • POST /api/teams/<int:id>/channels

      {
          "id": "Integer",
          "name": "String",
          "private": "Boolean",
          "team_id": "Integer",
          "description": "String",
          "users": "[Users]"
      }
  • Returns a confirmation that the current user successfully joined the specified channel.

    • POST /api/channels/<int:id>/members/<int:user_id>

      {
          "message": "Member Added"
      }
  • Deletes a member from the channel and returns a list of the remaining channels that the current user belongs to.

    • DELETE /api/channels/<int:id>/members/<int:user_id>

      [
          {
              "id": "Integer",
              "name": "String",
              "description": "String",
              "private": "Boolean",
              "team_id": "Integer"
          }
      ]
  • If user is a team owner or channel owner, returns confirmation message of successful deletion of Channel

    • DELETE /api/teams/<int:id>

      {
          "message": "Channel Deleted"
      }

Live Chat

  • Get a Live Chat Message by Id and returns the message

    • GET /api/chats/<int:id>

      {
          "id": "Integer",
          "message": "String",
          "created_at": "Date",
          "sender_id": "Integer",
      }
  • Update a Live Chat message by its id and returns the message

    • PATCH /api/chats/<int:id>

      {
          "id": "Integer",
          "message": "String",
          "created_at": "Date",
          "sender_id": "Integer",
      }
  • Deletes a Live Chat message and returns a confirmation message

    • DELETE /api/chats/<int:id>

      {
          "message": "Message Deleted"
      }
  • Returns an ordered list of messages that belong to a Channel

    • GET /api/channels/<int:id>/chats

      [
          {
              "id": "Integer",
              "message": "String",
              "created_at": "Date",
              "sender_id": "Integer",
              "username": "String",
              "image": "String"
          }
      ]
  • Returns an updated list of of messages including the newly created message

    • POST /api/channels/<int:id>/chats

      [
          {
              "id": "Integer",
              "message": "String",
              "created_at": "Date",
              "sender_id": "Integer"
          }
      ]

Direct Messages

  • Returns a list of all Direct Message partners for the user

    • GET /api/messages/

      [
          {
              "id": "Integer",
              "partner": "String",
              "image": "String"
          }
      ]
  • Creates a Direct Message message and returns the message

    • POST /api/messages/<int:id>

      {
          "id": "Integer",
          "sender_id": "String",
          "recipient_id": "Date",
          "message": "String",
          "created_at": "Date"
      }
  • Returns an ordered list of messages that belong to a direct message between two users

    • GET /api/messages/<int:user_id>/<int:recipient_id>

      {
          "messages": [
                          {
                              "id": "Integer",
                              "sender": "String",
                              "recipient": "String",
                              "sender_id": "Integer",
                              "recipient_id": "Integer",
                              "message": "String",
                              "created_at": "Date",
                              "partner": "Integer",
                              "image": "String"
                          }
                      ],
          "user": "{User}"
      }
  • Returns an updated list of of messages including the newly created message

    • POST /api/messages/<int:user_id>/<int:recipient_id>

      [
          {
              "id": "Integer",
              "sender_id": "Integer",
              "recipient_id": "Integer",
              "message": "String",
              "created_at": "Date"
          }
      ]
  • If the user is the sender of the message, Returns the list of messages with the updated message

    • PATCH /api/messages/<int:id>

      [
          {
              "id": "Integer",
              "sender_id": "Integer",
              "recipient_id": "Integer",
              "message": "String",
              "created_at": "Date"
          }
      ]
  • If the user is the sender of the message, Returns a confirmation message that the specified message was deleted

    • DELETE /api/messages/<int:id>

      {
          "message": "Message Deleted"
      }

About

A group project for App Academy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages