command module
v0.0.0-...-b6b0f2d Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2020 License: AGPL-3.0 Imports: 13 Imported by: 0



Bitbucket open issues Docker Image Version (latest semver) Go Report Card

A proof of concept for an Apache Kafka based chat application written in Go.

Project Status

This project is a private proof of concept. Use it all you like, but do not expect any support as for the time being.

If I am happy with the outcome, I might well turn it into a library ready to use.


This project uses GNU make. However, this is more of a convenience. You can build felice perfectly without make. Just have a look at the Makefile on how to do stuff.

Target Description
felice Compiles the binary (default)
docker Builds the docker container
up Starts the environment defined in docker-compose.yml
down Tears down the compose environment and removes its volumes
stop Stops the compose environment. Restart with up
rebuild-compose Alias for down docker up
all Alias for felice rebuild-compose
clean Removes the binary
rmi Removes the docker image
really-clean Alias for down clean rmi

You can call the various targets with make [target[ target]...], for example

$ make clean felice
Removing binary
Building felice binary



You need to clone the repository and change into it

$ git clone https://mwmahlberg@bitbucket.org/mwmahlberg/felice.git
Cloning into 'felice'...
remote: Counting objects: 19, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 19 (delta 7), reused 0 (delta 0)
Unpacking objects: 100% (19/19), 20.54 KiB | 179.00 KiB/s, done.
$ cd felice

Now you can either set up the environment using a locally built image or you can use the prebuilt image available on hub.docker.com.

With a local build

You can build the environment and the client in one step

$ make felice up
Building felice binary
Starting environment
Creating network "felice_default" with the default driver
Creating volume "felice_zookeeper_data" with default driver
Creating volume "felice_kafka_data" with default driver
Building server
Step 1/11 : FROM golang:alpine as build
Creating felice_kafka_1     ... done
Using the image from hub.docker.com

First, you need to pull the docker image

$ docker pull mwmahlberg/felice
Using default tag: latest
latest: Pulling from mwmahlberg/felice
c9b1b535fdd9: Already exists
da703b02c485: Already exists
add6a9b8009e: Pull complete
Digest: sha256:571a1e517743f94750db9d011f48b5e744a9a813304baaf0df26f14c73601d34
Status: Downloaded newer image for mwmahlberg/felice:latest

Then, you will need to build the client and start the environment

$ make felice up
Building felice binary
Starting environment
Creating network "felice_default" with the default driver
Creating volume "felice_zookeeper_data" with default driver
Creating volume "felice_kafka_data" with default driver
Creating felice_zookeeper_1 ... done
Creating felice_server_1    ... done
Creating felice_kafka_1     ... done
Use the client

You have two options: you can use the client from within the docker image or use the local client.

In order to see all options, you can call the binary with the --help flag:

Usage: felice <command>

A chat server based on kafka

  --help                 Show context-sensitive help.
  --kafka="localhost"    url of kafka server ($KAFKA)

    run server

    run client

Run "felice <command> --help" for more information on a command.
Using the local client

Simply call ./felice client --user=yourName

Using the client from within the docker image

Call docker exec -it felice_server_1 /usr/local/bin/felice --user=yourName.


As written before, there is currently no support available. You may file issues, but it is unlikely that can put real effort into this project. It is just for fun.

However, there is an issue tracker set up.


Copyright (C) 2020 Markus Mahlberg

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.


The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL