DuckChat - Stallman Inspired

DuckChat - Stallman Inspired

GitHub go.mod Go version of a Go module Latest Release License: GPL v3 Maintenance

Demo of current release.

This application runs completely on top of TCP , and we don't bother with high level protocols such as http, websockets and others. We've a simple run and we don't bother with message segments like request header, request body, crlf and stuffs.

We run a simple protocol that is your message ends with \n. How simple is that?

For now, there are few commands such as

Command Description Example
/join Join? /join
/quit Quit? /quit
/whisper DM? /whisper mahesh k xa yar
/nick Change Nickname? /nick mahesh
Comments
  • feat: add /users command

    feat: add /users command

    Description

    I added the /users command to list the number of connected clients

    Type of change

    Please delete options that are not relevant.

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [x] This change requires a documentation update.

    Test Configuration:

    • OS: Manjaro
    • Architecture:x86_64
    • Go Version:1.17.5

    Checklist:

    • [x] My code follows the style guidelines of this project.
    • [x] I have performed a self-review of my own code.
    • [ ] I have commented my code, particularly in hard-to-understand areas.
    • [x] I have made corresponding changes to the documentation.
    • [x] My changes generate no new warnings.
    • [ ] Any dependent changes have been merged and published in downstream modules.
  • feat: shows the list of users

    feat: shows the list of users

    Description

    added /users command to show the list of users. /count will show the number of users.

    Type of change

    Please delete options that are not relevant.

    • [x] New feature (non-breaking change which adds functionality)
    • [x] This change requires a documentation update.

    Test Configuration:

    • OS:Manjaro
    • Architecture:x86_64
    • Go Version:1.17.5

    Checklist:

    • [x] My code follows the style guidelines of this project.
    • [x] I have performed a self-review of my own code.
    • [x] My changes generate no new warnings.
  • no of users count wrong

    no of users count wrong

    I don't know if it is a bug or feature. Screenshot from 2022-02-12 20-37-37

    How to reproduce?

    1. Run the client
    2. use multiple /join commands in the same client interface

    After invoking multiple join commands, you can see the user's count growing which I think is wrong, As the no of users should be equal to no of unique connections.

    Correct me If I am wrong

    P.S. Will send PR tomorrow ,as I am just enjoying weekend for now

  • add auth mechanism for register and login

    add auth mechanism for register and login

    Description

    This PR adds a complete authentication mechanism to our chat application. The only issue I see as of now is where to store users credentials and what kind of encryption should be apply on them? I've been planning to use redis in near future. But, for now we're storing in memory.

    Two commands are added.

    • /login
    • /register

    Type of change

    Please delete options that are not relevant.

    • [x] New feature (non-breaking change which adds functionality)

    Test Configuration:

    • OS: Arch Linux
    • Architecture: x64
    • Go Version: 1.17.7

    Checklist:

    • [x] My code follows the style guidelines of this project.
    • [x] I have performed a self-review of my own code.
    • [ ] I have commented my code, particularly in hard-to-understand areas.
    • [x] I have made corresponding changes to the documentation.
    • [x] My changes generate no new warnings.
    • [x] Any dependent changes have been merged and published in downstream modules.
  • Refactor server

    Refactor server

    Refactor server to have a struct named server which holds a conn and number of online users in it, also maintain the number of online users by sending ping to users. the format for ping can be as follows

    1:1 Here, 1 denotes server. and another 1 denotes ping message.

    this should be discarded by client.

README snippets for Visual Code inspired by readme.so

vscode-readme This was inspired by @katherinepeterson who made the wonderful readme.so! Huge thanks. Configuration Make sure you have quickSuggestions

Feb 7, 2022
A stack oriented esoteric programming language inspired by poetry and forth

paperStack A stack oriented esoteric programming language inspired by poetry and forth What is paperStack A stack oriented language An esoteric progra

Nov 14, 2021
An easy-to-use Map Reduce Go parallel-computing framework inspired by 2021 6.824 lab1. It supports multiple workers on a single machine right now.

MapReduce This is an easy-to-use Map Reduce Go framework inspired by 2021 6.824 lab1. Feature Multiple workers on single machine right now. Easy to pa

Dec 5, 2022
Directed Acyclic Graph (DAG) inspired tasks queuing API.

flow Directed Acyclic Graph (DAG) inspired tasks queuing API. The examples directory contains samples. Status This project's API will not have any met

Jul 29, 2022
πŸ§€ Formaggo is a simple model checker inspired by TLA+, The checker and the models are written in Go

?? Formaggo. A cheesy exhaustive state checker in Go. Formaggo is a simple model checker inspired by TLA+. The checker and the models are written in G

Jan 23, 2022
A Go library inspired by chalk.js

colors A Go library inspired by chalk.js Print in these pretty colors Black DarkRed DarkGreen DarkYellow DarkBlue DarkMagenta DarkCyan LightGray DarkG

Jan 28, 2022
Pure Go line editor with history, inspired by linenoise

Liner Liner is a command line editor with history. It was inspired by linenoise; everything Unix-like is a VT100 (or is trying very hard to be). If yo

Jan 3, 2023
:art: Contextual fmt inspired by bootstrap color classes

Cfmt Contextual fmt It provides contextual formatting functions that have nearly identical usage of the fmt package. The ideas were borrowed from boot

Jan 7, 2023
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit.
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit.

go-prompt A library for building powerful interactive prompts inspired by python-prompt-toolkit, making it easier to build cross-platform command line

Jan 3, 2023
redis client implement by golang, inspired by jedis.

godis redis client implement by golang, refers to jedis. this library implements most of redis command, include normal redis command, cluster command,

Dec 6, 2022
Go time library inspired by Moment.js

Goment Current Version: 1.4.0 Changelog Goment is a port of the popular Javascript datetime library Moment.js. It follows the Moment.js API closely, w

Dec 24, 2022
Payment abstraction library - one interface for multiple payment processors ( inspired by Ruby's ActiveMerchant )

Sleet Payment abstraction library - interact with different Payment Service Providers (PsP) with one unified interface. Installation go get github.com

Dec 28, 2022
🐜🐜🐜 ants is a high-performance and low-cost goroutine pool in Go, inspired by fasthttp./ ants ζ˜―δΈ€δΈͺι«˜ζ€§θƒ½δΈ”δ½ŽζŸθ€—ηš„ goroutine 池。
🐜🐜🐜 ants is a high-performance and low-cost goroutine pool in Go, inspired by fasthttp./ ants ζ˜―δΈ€δΈͺι«˜ζ€§θƒ½δΈ”δ½ŽζŸθ€—ηš„ goroutine 池。

A goroutine pool for Go English | ???? δΈ­ζ–‡ ?? Introduction Library ants implements a goroutine pool with fixed capacity, managing and recycling a massi

Jan 2, 2023
⚑️ Express inspired web framework written in Go
⚑️ Express inspired web framework written in Go

Fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development w

Jan 2, 2023
Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.

Mango Mango is a modular web-application framework for Go, inspired by Rack and PEP333. Note: Not actively maintained. Overview Mango is most of all a

Nov 17, 2022
A Go framework for building JSON web services inspired by Dropwizard

Tiger Tonic A Go framework for building JSON web services inspired by Dropwizard. If HTML is your game, this will hurt a little. Like the Go language

Dec 9, 2022
Simple and lightweight Go web framework inspired by koa
Simple and lightweight Go web framework inspired by koa

VOX A golang web framework for humans, inspired by Koa heavily. Getting started Installation Using the go get power: $ go get -u github.com/aisk/vox B

Dec 14, 2022
Distributed hyperparameter optimization framework, inspired by Optuna.
Distributed hyperparameter optimization framework, inspired by Optuna.

Goptuna Distributed hyperparameter optimization framework, inspired by Optuna [1]. This library is particularly designed for machine learning, but eve

Jan 1, 2023
A simple dependency manager for Go (golang), inspired by Bundler.
A simple dependency manager for Go (golang), inspired by Bundler.

Goop A dependency manager for Go (golang), inspired by Bundler. It is different from other dependency managers in that it does not force you to mess w

Sep 27, 2022
Calendar heatmap inspired by Github contribution activity
Calendar heatmap inspired by Github contribution activity

Self-contained, plain Go implementation of calendar heatmap inspired by Github contribution activity. $ go build $ echo '{ "2020-05-16": 8, "2

Dec 25, 2022