ZC_CORE
Zuri Chat Core Api
See the docs for everything: Zuri Chat Documentation
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
- Go 1.16 or lastest version already installed on your local machine.
- MongoDB
Installation
- Run an instance of MongoDB
$ mongod
- Create and populate a
.env
file with its keys corresponding values as listed inexample.env
- Run zc_core from project root directory
$ cd /path/to/zc_core
$ go run main.go
Testing
- Lint checks are done with golangci-lint - an aggregator of linters
$ cd /path/to/zc_core
$ golangci-lint run --timeout 2m
- 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.
- Fork/Clone the Project
- Create your Feature Branch (
git checkout -b [branch name]
) - Lint your Changes (
golangci-lint run --timeout 2m
) - Commit your Changes (
git commit -m "Added some amazing features"
) - Push to the Branch (
git push origin [branch name]
) - Open a Pull Request