GithubHelp home page GithubHelp logo

zurichat / zc_core Goto Github PK

View Code? Open in Web Editor NEW
129.0 129.0 82.0 47.01 MB

The Zuri Core is an open-source API that serves as the backend and backbone of Zuri Chat

Home Page: https://zuri.chat

Go 86.09% HTML 13.43% Shell 0.16% Makefile 0.32%
centrifugo golang hngi8 hnginternship zuri zurichat zuritoken

zc_core's People

Contributors

0xdod avatar abiolafasanya avatar abiona01 avatar aminujb avatar bamimore-tomi avatar bori7 avatar bwise1 avatar coledrain avatar davidhods avatar dtamilore avatar eniayomi avatar enigbe avatar enikebraimoh avatar farouqu avatar harbiola78 avatar helewud avatar khrees2412 avatar kinglighthill avatar lexemmy avatar markessien avatar nedu avatar ntekim-jotham avatar nwokoyechigozie avatar oduchep avatar samsoft00 avatar surdy-a avatar tolumadamori avatar ufiairene avatar uhiuex avatar utukj 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

zc_core's Issues

Organization: Update Name

Provision an operation to alter the value of an organization name

Note
When name is updated, the organization url is also updated, the organization url is set with a default value at the point of creation (since it was not required) e.g. name.slack.com, if name exists already, random word should be appended and verified to be unique before saving. E.g. name-group.slack.com or nameworkspace.slack.com. Organization names are NOT unique, organization url MUST be unique.

Endpoint: /organizations/{org_id}/name method=PATCH body=name

Organization: Create Organization Instance

Provision an operation to create organization instance in the database

  • Required field to create an organization โ†’ Owner email
  • Default Organization name (e.g Slack) is also set for the organization. Name is NOT unique
  • Default UNIQUE (to the owner) organization-url is set after validation. format = org_name+.zuri.com E.g slack.zuri.com
  • If name exists, random words should be appended to org_name to make it unique, e.g slack-hq.zuri.com

Endpoint: /organizations method=POST body=owner_email

Auth

Log in and registration with jwt

Organization: Get an organization

Provision an operation that retrieves a single organization instance in the database
Endpoint: /organizations/{org_id} method=GET

User: items collection

As a user in an organization, i want to have a collection of saved items where i can bookmark important items i might need later.

Organization: Delete organization

Provision an operation that deletes an organization instance in the database

Endpoint: /organizations/{org_id} method=DELETE

Note
*Password verification must be done before operation is executed

Organization: Update Logo

Some tips on choosing a good icon:

  • Use a solid background color.
  • Use a graphical logo or image rather than text.
  • Leave some space around your icon.
  • Upload an image that is 132px square or larger.

File is stored on an external server that returns a url of the image. This url is what is stored.

Endpoint: /organizations/{org_id}/logo POST form file upload

User: user status

As a user i want to be able to set my status, so others can know when I'm available or not

User: Join zurichat

As a new user, I should be able to join zurichat with a verified work email, so that I can join organizations

Organization: Update member status

Provision an operation to alter the value of a member status

Endpoint: /organizations/{org_id}/members/{member_id}/status method=PUT body=status

Organization: Create Organization Model

A definition of the schema of an organization instance
Fields:

  • ID : string (*MongoDb generates and returns ID for created objects, this may suffice.)
  • Name : string
  • LogoUrl : string
  • Owner email : string
  • Organization url : string
  • Date Created : time
  • Members : key, value type of -> user_id: User (user defined type)
  • Channels : key, value type of -> channel_id: Channel (user defined type)
  • Apps: key, value type of -> app_id: App(user defined type)
  • Settings : Settings (user defined type)

Organization: Create Member

Who is a member?
A member is user (registered on the platform) that is invited to join an organization through invitation links sent to their email.
Schema

  • ID
  • Files
  • Logo
  • Name
  • Email
  • Display Name
  • Bio
  • Pronouns
  • Phone number
  • Time Zone
  • Socials: Social user defined type (url, title, id)
  • Preferences
  • isActive

Provision an operation to create a member instance in an organization
Endpoint: /organizations/{org_id}/member method=POST body=member_email

Data: Plugin stores file

As a plugin that a registered user uses, I want to store the file(s) my user uploaded to the database

messaging: Web socket connection

Establish a web socket connection so that messages can sync realtime and a user should be able to detect when another user is typing

User: Add user bio

As a user, i should be able to add information about me and what i do to my profile for a workspace

User: leave a room (channel)

As a user of an organization, I should be able to leave a room (or channel) that I am present in and would no longer like to be a part of.

User: Set timezone

As a user, i should be able to set timezone so that others in my organization can know my working hours.

messaging: Rooms

This endpoint will retrieve a list of all the rooms the authenticated user is in

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.