GithubHelp home page GithubHelp logo

zxenonx / zc_core Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zurichat/zc_core

0.0 0.0 0.0 13.73 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 85.86% HTML 13.69% Shell 0.12% Makefile 0.33%

zc_core's Introduction

ZC_CORE Go Reference

Zuri Chat Core Api

See the docs for everything: Zuri Chat Documentation

GitHub repo size

Description

The Zuri Chat Core (ZC_Core) is an open source API that serves as the backend and backbone of Zuri Chat - an open source slack clone developed during the HNG8 internship program

Zuri Chat implements a plug-in system that allows for much more functionality because different plugins can be developed by different creators. These plugins can then rest on the Zuri Chat Core backbone (ZC_Core) which is written in Golang

Language

ZC_Core was written in Go because it is a fast, compiled language and it is easily scaled. Concurrency in Go is also ideal for implementing a plugin structure. This makes it easy to build on the project and allows for future expansion.

API Documentation

A list of the endpoints and the functions they implement can be found here detailing information about the all API resources.

Getting Started

This is an example of how you can setup your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

  1. Go 1.16 or lastest version already installed on your local machine.
  2. MongoDB

Installation

  1. Run an instance of MongoDB
$ mongod
  1. Create and populate a .env file with its keys corresponding values as listed in example.env
  2. Run zc_core from project root directory
$ cd /path/to/zc_core
$ go run main.go

Testing

  1. Lint checks are done with golangci-lint - an aggregator of linters
$ cd /path/to/zc_core
$ golangci-lint run --timeout 2m
  1. Automated unit and integration tests done with golang's builtin testing package.
$ go test -v ./...  -cover

Features

  • Blog: Content management package for the CRUD of blog posts and associated services
  • Contact: Service to process all user-related inquiries, complaints, and service-related suggestions
  • Data: Data management for plugins
  • Docs: OpenAPI specification for all resources
  • External: Desktop application download, email subscriptions, etc...
  • Marketplace: Plugins marketplace
  • Messaging: Realtime messaging service with SocketIO
  • Organizations: Organization management system
  • Plugin: Plugin management system
  • Realtime Communication (RTC): Connection authentication, subcription and pulishing service with centrifugo proxy server
  • Report: Report generation and viewing service
  • Services: Mail and file upload service package
  • Users: User management system
  • Utils: Utility package of shared helper functions and data types

Contributing

Pull requests are welcome from the zc_core_main team. Please review the issues created before making a pull request or create an issue if the issue you solve is not already listed.

  1. Fork/Clone the Project
  2. Create your Feature Branch (git checkout -b [branch name])
  3. Lint your Changes (golangci-lint run --timeout 2m)
  4. Commit your Changes (git commit -m "Added some amazing features")
  5. Push to the Branch (git push origin [branch name])
  6. Open a Pull Request

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.