Giter Site home page Giter Site logo

hqhs / gosupport Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 2.0 116.25 MB

Simple support dashboard with messangers/social networks support as primary feature

License: Apache License 2.0

Go 59.67% Makefile 0.28% JavaScript 18.89% CSS 13.39% Python 7.01% Mako 0.57% Dockerfile 0.19%
customer-care customer-care-bot customer-support golang golang-application helpdesk javascript preact support

gosupport's Introduction

Employee & Customer support dashboard

Setup

# complete list of commands used in gif above
$ git clone https://github.com/hqhs/gosupport.git
$ echo "POSTGRES_PASSWORD=s3cr3tpa$$sw0rd" > .env
$ make setuppostgres # docker required
$ make postgres # run database in docker container 
$ # run database migrations with alembic
$ cd scripts/ && virtualenv -p python3 .env
$ pip install -r requirements.txt
$ alembic upgrade head
$ go build .
$ ./gosupport serve \
    --dbpassword "3cr3tpa$$sw0d" \
    --tgtokens "707774881:AAHYC-8LDL20Xns1dabLzXCUXdt4YsvYLJs" # Already revoked, don't panic!

Features

  • Authorization sequence
  • Media support (photos & files)
  • Messaging part made as SPA, pure sockets & rest api.
  • Migrations with alembic & sqlalchemy for faster development
  • Small dependencies

Project status

This was one of the first real-world applications I made in go months ago. Since then I've learned a lot and done some refactoring before open sourcing it. It's not ready for use in production yet, but I'm looking forward to making it better.

Motivation

After hours spent on github I haven't found useful open source techsupport (also "helpdesk") dashboards with messangers/social networks integration as primary feature. There are some like zammad, but it requires 5 docker containers to run including Elasticsearch (sic!) and chats work only with webhooks (which in turn requires seperate static IP even for development). Time passed and I decided to write it by myself with Go as primary backend language.

Technology stack

  • Postgres as primary database choice, without any ORM, pure sql requests (feels "Go way").
  • Pure Go for backend with Chi router, gorilla websockets, and various social network/messangers api wrappers.
  • Preact for frontend with some templates rendering.

Those are the tools I used in active demo development stage:

  • Alembic & Sqlalchemy for migrations generation.
  • Bootstrap templates.

As you can see, then choosing between some nice and large library (such as gorm), and Go STD I'm almost always choose later for guaranteed backward compatibility, extensive documentation and stable performance. Code sometimes seems too verbose, but in return I always know what goes on "under the hood".

On the road to beta release

My primary pain is frontend part, all preact components currenty live in single main.js file, and it helps to make it useful (that is essential). Those are the features I plan to do before spending time on advertasing (writing on reddit/go mailing list):

  • Basic admin management (deleting & blocking & creating new admins)
  • Message & User search purely with postgres.
  • Test coverage.
  • Basic notification management (notificate on new message/then message is unanswered N hours/then user writes first time in a while)
  • (Optional) WeChat & Viber support

Contributing

If you feel somewhat interested, feel free to open issue/write to me on twitter or telegram. I'm going to make pause in active development after beta and try to bring some interest in project, and if I fail I'll just move on to some other stuff and project will become "yet another codebase for the sake of codebase" :)

But we want to work hard on it ;)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.