Skip to content

BerryBytes/01cloud-support

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

01CLOUD-SUPPORT

A Go-based support ticketing backend with gRPC services, HTTP APIs, Swagger docs, notification workflows, and multi-tenant project support.

Go License API

01CLOUD-SUPPORT is designed for teams that need a backend service to manage support operations across organizations, projects, and applications. It exposes both gRPC and REST-style HTTP interfaces, includes generated API documentation, and integrates notification and email workflows for ticket activity.

Why This Project

  • Dual API surface for internal service communication and external HTTP access
  • Ticket lifecycle management for support teams and customer-facing workflows
  • Multi-tenant domain model for organizations, projects, applications, and users
  • Swagger documentation for HTTP consumers
  • Email and notification hooks for operational updates
  • Docker-friendly build flow and Make targets for local development

Highlights

Area What it provides
Ticketing Create, update, comment on, and track support tickets
APIs gRPC services plus HTTP endpoints
Documentation Swagger UI and generated OpenAPI artifacts
Data layer GORM-based models and relational database support
Notifications Internal notification flow and mailer integration
Operations Local Make commands, Docker targets, and protobuf generation

Tech Stack

  • Go
  • gRPC and Protocol Buffers
  • Gorilla Mux
  • GORM
  • Swagger / OpenAPI
  • PostgreSQL-compatible relational databases
  • Docker

Quick Start

Prerequisites

  • Go 1.13 or newer
  • PostgreSQL or another compatible relational database
  • Make
  • Docker if you want to use container-based targets

1. Configure the environment

cp .env.sample .env

The sample environment includes defaults for:

  • gRPC server port
  • HTTP server port
  • Database connection settings
  • Notification service endpoint
  • SMTP configuration
  • Support email recipients

2. Start the services

Run the gRPC server:

make run

Run the HTTP server:

make run-api

Run the sample gRPC client:

make run-client

3. Validate the project

Run tests:

make test-dev

Run lint checks:

make lint

Format Go files:

make format

API Surface

HTTP API

  • Base URL: http://localhost:5000
  • Swagger UI: http://localhost:5000/swagger/index.html
  • Specs: docs/swagger.json and docs/swagger.yaml

gRPC API

  • Default listener: localhost:50051
  • Proto definitions: pkg/proto/
  • Handy local test client: make run-client

If you prefer an interactive gRPC workflow, you can use Evans CLI:

evans -r repl

Common Commands

Task Command
Start gRPC server make run
Start HTTP server make run-api
Run client make run-client
Run tests make test-dev
Run lint make lint
Format code make format
Generate protobuf code make gen-proto
Build Docker image make build

Configuration

The application reads runtime settings from .env. The most important variables are:

Variable Purpose
GRPC_SERVER_PORT gRPC server port
HTTP_SERVER_PORT HTTP server port
DB_TYPE Database driver
DB_HOST / DB_PORT Database host and port
DB_USER / DB_PASSWORD Database credentials
DB_NAME Primary database name
GRPC_SUPPORT_SERVER HTTP layer connection to support gRPC
GRPC_NOTIFICATION_SERVER Notification service endpoint
TICKET_API Public HTTP URL used in docs/routes
HOST_URL Base URL used in email links
SUPPORT_EMAILS Comma-separated support recipients

See .env.sample for the full template.

Project Layout

.
├── client/                  # Example gRPC client
├── cmd/server/              # gRPC server entrypoint
├── docs/                    # Swagger artifacts
├── http/                    # HTTP server entrypoint and handlers
├── internal/mailer/         # Email delivery logic
├── internal/models/         # Domain and persistence models
├── internal/notifications/  # Notification workflow
├── internal/ticket/         # Ticket service logic
├── pkg/proto/               # Protocol buffer definitions and generated code
└── utils/                   # Shared helpers and constants

Contributing

Contributions are welcome. Start with CONTRIBUTING.md for setup, workflow, and pull request expectations.

Please also review:

License

This project is licensed under the Apache License 2.0. See LICENSE for details.

About

01cloud-support is a Go-based support ticketing backend built for teams managing support operations across organizations, projects, and applications. It provides both gRPC services and HTTP APIs, includes Swagger/OpenAPI documentation, and supports ticket creation, updates, comments and email workflows in a multi-tenant architecture.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors