Chat app that allows you to group multiple channels into one view.

hashchat Backend service

Getting Started

Essential steps to get your backend service deployed

A helloworld example has been shipped with the template to show the bare minimum setup - a server that listens on the configured port, a dockerfile, and some kubernetes manifests.

  • Webserver that listens on port 80
  • Dockerfile builds and serves on port 80

Deployment

Things that happened behind the scenes

  • The Github Org has already been configured with secrets that allow this project to deploy to the Onboarding cluster
  • CI/CD will run in Github actions to deploy your application
  • It will build an image and push to ECR (Elastic Container Registry)
  • it will create an ingress, service, and deployment in the Kubernetes cluster using kustomize during the CI pipeline
  • It will update the deployment to use the newly built docker image

Your local environment

To set up your local environment with access to AWS and Kubernetes, just run:

./scripts/setup-env.sh

This script will open a web browser and prompt you to log in with your Commit Gmail account, and then will configure an AWS profile and a Kubernetes context.

Creating secrets

The Playground uses a somewhat "quick and dirty" way to create secrets for your application without needing to commit them to your GitHub repository. In order to add secrets to your deployment:

  1. Rename secrets/secrets.yml.example to secrets.yml (note that secrets.yml has been added to the .gitignore file, so they will not be committed to your GitHub repository).
  2. Add secrets to the stringData section of your secrets.yml file as appropriate. In your deployed application, each secret key will be available as an environment variable.
  3. Run make upsert-secrets from the root of your application which will create the secrets object on your Kubernetes cluster server.
  4. Uncomment the secretRef and name lines from kubernetes/deploy/deployment.yml.
  5. That's it! Deploy your application in order for the secrets to be picked up, and you should now be able to access them as environment variables via the defined secret keys.

Structure

Kubernetes

The configuration of your application in Kubernetes uses https://kustomize.io/ and is run by the CI pipeline, the configuration is in the /kubernetes directory. Once the CI pipeline is finished, you can see the pod status on kubernetes in your application namespace:

kubectl -n hashchat get pods

Configuring

You can update the configuration of the deployment and adjust things like increasing the number of replicas and adding new environment variables in the kustomization file. The ingress and service control routing traffic to your application.

Github actions

Your repository comes with a end-to-end CI/CD pipeline, which includes the following steps:

  1. Checkout
  2. Unit Tests
  3. Build Image
  4. Upload Image to ECR
  5. Deploy image to cluster
Owner
Commit App Playground
Organization for hosting applications on a Zero-generated playground environment. Mostly for HOP demo apps.
Commit App Playground
Similar Resources

httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.

httpx is a fast and multi-purpose HTTP toolkit allows to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.

Features • Installation • Usage • Running httpx • Notes • Join Discord httpx is a fast and multi-purpose HTTP toolkit allow to run multiple probers us

Jan 8, 2023

Socketlogger allows multiple processes to log to a shared log file between processes.

Socketlogger allows multiple processes to log to a shared log file between processes.

socketlogger socketlogger is a language agnostic logging utility designed to allow mulitple applications, running on one or multiple computers, to wri

Dec 7, 2021

dumpr! is a tool to capture text based tcp traffic from the receivers point of view.

dumpr! is a tool to capture text based tcp traffic from the receivers point of view.

dumpr! dumpr! is a tool to capture text based tcp traffic. The project came about for the need to capture a web request from the back end. It was also

Dec 4, 2021

Simple HTTP view of an MPD server

mpd-web This repository contains a simple HTTP-server which allows basic control of an mpd server running upon localhost: Move to the next track. Move

Apr 10, 2022

View, edit, and save text files via http to the file system.

go-wiki View, edit, and save text files via http to the file system. (DONE) https://golang.org/doc/articles/wiki/ Instructions go run main.go In a web

Nov 25, 2021

Group peer to peer video calls for everyone written in Go and TypeScript

Peer Calls v4 WebRTC peer to peer calls for everyone. See it live in action at peercalls.com. The server has been completely rewriten in Go and all th

Dec 30, 2022

Automatic AWS Security Group ingress through DDNS

Auto DDNS Security Lambda Update AWS Security Group rules to an IP resolved from a DNS hostname. Useful to dynamically allow ingress from a DDNS hostn

Oct 19, 2021

Interface PancingIN v1.0 (group project DBMS)

PancingIN Prasyarat Telah memasang Go (direkomendasikan versi terbaru) Mengetahui cara menggunakan terminal / command line Telah melakukan clone/downl

Oct 30, 2021

A simple robot to ban users who send as channel in group chats.

GoLang Telegram Bot GoLang Telegram Bot, written in GoLang via gotgbot library. You can even use this repository as a template to make your own GoLang

Dec 14, 2021
Related tags
go-chat is a gRPC based chat CLI written in golang for command line lovers
go-chat is a gRPC based chat CLI written in golang for command line lovers

go-chat go-chat is a gRPC based chat CLI written in golang for command line lovers. This CLI allows you to chat with your friends without leaving the

Oct 14, 2022
Tcp chat go - Create tcp chat in golang

TCP chat in GO libs Go net package and goroutines and channels tcp tcp or transm

Feb 5, 2022
Go-random-chat - Fast and scalable real-time random chat written in go
Go-random-chat - Fast and scalable real-time random chat written in go

Go Random Chat Fast and scalable real-time random chat written in go. Features:

Dec 21, 2022
A little library for turning TCP connections into go channels.

netutils By Tim Henderson ([email protected]) This is a little library that was part of a larger project that I decided to pull out and make public.

Aug 13, 2020
DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

DeepCopy a portable app that allows you to copy all forms of specified file types from your entire file system of the computer

Dec 20, 2021
A pair of local reverse proxies (one in Windows, one in Linux) for Tailscale on WSL2

tailscale-wsl2 TL;DR Running two reverse proxies (one in Windows, one in the WSL2 Linux VM), the Windows Tailscale daemon can be accessed via WSL2: $

Dec 9, 2022
Cross-platform, multi-server chat app built using Fyne
Cross-platform, multi-server chat app built using Fyne

Fibro Really early days proof of concept for a cross-platform multi-server chat. Feel free to play, but don't expect it to do much! Features Multiple

Sep 10, 2022
This app brings the Matterbridge binary to your server to connect Nextcloud Talk with other chat services

This app brings the Matterbridge binary to your server to connect Nextcloud Talk with other chat services

Sep 12, 2022
Command-Line chat app in Go-Lang over TCP

gochat Simple chat communication app over TCP, wrriten in Golang. How does it work? Each client starts a TCP server, in a port that is defined by the

Jan 9, 2022
A cross-platform, decentralized, chat app based on SaltyIM for functionality and GioUI for UI

This project is shifted at https://git.mills.io/saltyim/app Salty UI A cross-platform, decentralized, chat app based on SaltyIM for functionality and

Aug 30, 2022