Giter Site home page Giter Site logo

helpyio / helpy Goto Github PK

View Code? Open in Web Editor NEW
2.3K 67.0 493.0 88.42 MB

Helpy is a modern, open source helpdesk customer support application. Features include knowledgebase, community discussions and support tickets integrated with email.

Home Page: http://helpy.io/?source=ghh

License: MIT License

Ruby 52.01% CSS 0.34% HTML 30.01% JavaScript 8.83% Shell 0.06% Dockerfile 0.12% SCSS 8.61%
helpdesk knowledge-base forum support ticketing hacktoberfest

helpy's Introduction

Helpy: A Modern Helpdesk Platform

Helpy is a modern help desk platform written in Ruby on Rails and released under the MIT license. The goal of Helpy is to power your support email and ticketing, integrate seamlessly with your app, and run an amazing customer helpcenter.

Build Status Code Climate

Sponsor/Support Helpy

Helpy is licensed under the MIT license, and is an open-core project. This means that the core functionality is 100% open source and fully hackable or even re-sellable under the MIT license. See the features comparison below to understand what is included.

Helpy is a large system and cannot exist purely as a hobby project. If you use it in a money generating capacity, it makes good sense to support the project financially or by becoming an official sponsor or supporter.

https://www.patreon.com/helpyio

Open Source Features

Helpy is an integrated support solution- combining and leveraging synergies between support ticketing, Knowledgebase and a public community. Each feature is optional however, and can be easily disabled.

  • Multichannel ticketing: Integrated with inbound email via Sendgrid, Mandrill, Mailgun, etc.
  • Knowledgebase: Full text searchable and SEO optimized to help users answer questions before they contact you.
  • Mobile-friendly: Support requests come at all times, and Helpy works on all devices out of the box so you can delight customers with prompt answers, from anywhere and at anytime!
  • Community Support Forums: Customers and Agents can both answer questions in a publicly accessible forum, and vote both threads and replies up or down accordingly.
  • Embed Widget: Helpy Includes a lightweight javascript widget that allows your users to contact you from just about anywhere.
  • Multi-lingual: Helpy is fully multi-lingual and can provide support in multiple languages at the same time. Currently the app includes translations for 19 languages and is easy to translate.
  • Themeable: Customize the look and functionality of your Helpy without disturbing the underlying system that makes it all work. Helpy comes with two additional themes, and we hope to add more and get more from the community as time goes on.
  • Sends HTML email: Responses to customers can include html, emojis and attachments.
  • Customizable: Set colors to match your brand both on the helpcenter, and in the ticketing UI.
  • GDPR Compliant: Comply with GDPR right to be forgotten requests by deleting users and their history, or by anonymizing them.

Pro Version

We also offer a pro version with additional features designed to make your helpcenter even more awesome. This is available as either a turn-key SaaS or AWS/Azure marketplace product. Both spin up in seconds. Proceeds go directly towards supporting the continued development of the project. Some of the things found in the pro version:

  • Triggers: Insert events at any point in the ticket lifecycle. This includes an outbound JSON API.
  • Notifications: Browser notifications when new tickets are received, you are assigned to a ticket, etc.
  • Real time UI: When tickets arrive, they are automatically added to the UI
  • Custom Views: Add additional Ticketing queues to highlight just the tickets you need to see
  • Advanced reporting: A suite of additional reports on the performance of your ticketing and helpcenter knowledgebase
  • Advanced search: Easily filter and find tickets or customers when you have thousands
  • Customizable Request Forms: Easily Add questions to the ticket creation forms
  • AI Support Chatbot: Create a chatbot for your website to answer up 90% of tier one questions autonomously

Getting Started:

Helpy Pro - 30 Second one-click install via DigitalOcean

You can launch the free tier of Helpy Pro using the DigitalOcean Marketplace. This "one click" marketplace image spins up a dedicated VM within 30 seconds, running Ubuntu. Launch DigitalOcean Marketplace Image. Use of all features requires either a trial or paid license code, available here: Helpy License Center

Install Helpy via Docker

Docker is the recommended way to quickly test or run Helpy in production.

  1. Install Docker and docker-compose
  2. Create config file from template cp docker/.env.sample docker/.env and edit docker/.env to match your needs
  3. Edit docker/Caddyfile to include your URL or turn on SSL
  4. Build Helpy from local git checkout docker-compose build
  5. Run docker-compose up -d to start all of the services

Install Helpy on your Local System

Although not required, installing locally is highly recommended and will make it easier for you to customize things like settings, colors and logos to match your site identity. To begin, clone Helpy from the official repo to your local system:

git clone https://github.com/helpyio/helpy.git

Configure Basic Settings

There is a settings option in the admin panel to set up things like i18n, system names, colors, the embeddable widget, etc. There is a full guide to getting set up at: Configuring Your Helpy Settings

Support Multiple Languages (optional)

Helpy includes support for Multilingual help sites, and multi-language knowledgebase articles. This page explains how to enable Helpy's international capabilities and provides an overview of what functionality this adds to Helpy: How To Set Up A Multilingual Helpy Support Knowledgebase

Set up your Helpy to send and receive email (optional)

Helpy has the ability to receive email at your support email addresses and import the messages as tickets in the web interface. Whenever you or the user replies to the email thread, Helpy captures the discussion and sends out messages accordingly. Follow the tutorial on Setting Up Your Helpy Installation To Send And Receive Email to set this up.

Configure oAuth (optional)

Helpy supports Omniauth login capabilities. This means you can allow your support users to sign in with a single click via any Omniauth provider- ie. Facebook, Twitter, Gmail, or many others. Read Setting Up Oauth For Your Helpy to see how.

Live Demo

There is also a live demo with fake data available at http://demo.helpy.io Admin User: [email protected] and password: 12345678

Installation

Helpy was designed to run on modern cloud providers, although it should work on any linux based system. There is a full guide to installing Helpy in the wiki: https://github.com/helpyio/helpy/wiki

Requirements are:

  • Ruby 2.4+
  • Rails 4.2.x
  • Postgres
  • A server like Unicorn, Puma or Passenger

Helpy leverages two external services to help out:

  • an email provider like Sendgrid
  • Google Analytics for stats (optional)

Contributing

Welcome, and thanks for contributing to Helpy. Together we are building the best customer support platform in the world. Here are some of the ways you can contribute:

  • Report or fix Bugs
  • Refactoring
  • Improve test coverage- As with any large and growing codebase, test coverage is not always as good as it could be. Help improving test coverage is always welcome and will help you learn how Helpy works. We use Minitest exclusively.
  • Translate the project- The community has already translated Helpy into 18 languages, but there are many more waiting. We need help getting Helpy translated into as many locales as possible! Please see the guide to translation for more details.
  • Build new features. There is a backlog of new features that we’d like to see built. Check out our roadmap for more insight on this, and if you would like to take one on, please get in touch with us to make sure someone is not already working on it.

General Guidelines:

  • Join us on Slack. Let me know you wish to contribute. Slack Status
  • Make your PRs granular. They should only include one piece of functionality per PR.
  • Check the roadmap: Trello If you want to build a feature, contact us to make sure no one else is already working on it
  • You must provide passing test coverage. We use minitest, see http://www.rubypigeon.com/posts/minitest-cheat-sheet/?utm_source=rubyweekly&utm_medium=email
  • You also must expose functionality to the API. We use Grape. API methods should be tested as well.
  • If your feature/bug fix/enhancement adds or changes text in the project, please create i18n strings in en.yml and any other locales you can.
  • We are hugely concerned with user experience, and a nice UI. Oftentimes that means we may take what you have contributed and “dress it up” or ask you to do the same.

Security Issues

If you have found a vulnerability or other security problem in Helpy, please do not open an issue on GitHub. Instead, contact [[email protected]](mailto: [email protected]) directly by email. See the SECURITY guide to learn more and see a hall of fame of security reporters.

License

Copyright 2016-2021, Helpy.io, LLC, Scott Miller and Contributors. Helpy Core is released under the MIT open source license. Please contribute back any enhancements you make. Also, I would appreciate if you kept the "powered by Helpy" blurb in the footer. This helps me keep track of how many are using Helpy.

Analytics

helpy's People

Contributors

cga1123 avatar dependabot-preview[bot] avatar dependabot-support avatar dhoangk07 avatar felipewmartins avatar gprimola avatar hadifarnoud avatar hin101 avatar janrenz avatar kobim avatar nh-99 avatar noyainrain avatar olliebennett avatar ozmar-11 avatar pdewit avatar pepjo avatar pyo25 avatar rechdi avatar rynaro avatar scott avatar serg2294 avatar shaktik1989 avatar smaziano avatar swatijadhav avatar tapalilov avatar tcsizmadia avatar tibarra avatar tomatoturnip avatar x6iae avatar ypcs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

helpy's Issues

LDAP integration

This is maybe a long term goal, but it would be nice to have an LDAP connector so you can use it in your existing AD/LDAP infrastructure.

Community, topics and different languages problem

Hi there.
Just found about your app, and it looks great!

Now about the problem:
When you looking at the demo community http://demo.helpy.io/ru/community
under other than english language (Russian, for example), you get error if you want to look at some topic.

Error: http://demo.helpy.io/ru/topics/24-hacking-hard-drive-is-not-working-/posts
Success: http://demo.helpy.io/en/topics/24-hacking-hard-drive-is-not-working-/posts

Bug replicates also here:
http://demo.helpy.io/ru/community/3-Questions-and-Answers/topics

But Feature Requests works fine
http://demo.helpy.io/ru/topics/28-synthesizing-program-initial-questions/posts

I couldn't understand where is the problem, but probably it's because I hadn't install helpy yet.

use titleize only in english

Hi again,

I just want a let you know that the title case is only used in english (at least, it is not used in spanish or catalan) and looks horrible on other languages. I'm saying that because Helpy does .titleize every title without taking into consideration the locale.

I've removed every .titleize in my helpy fork and manually type the english titles in title case, but I realise this is not the correct way :/

Configuration via ENV vars

I propose we support configuration of Helpy via environment variables. The settings.yml is great, but it could be a nice idea to have, for example:

parent_site: ENV['SITE_NAME'] || `/parent-redirect.html`

This would allow us to configure most (all?) configuration via environment variables.

It would also make the "Deploy to Heroku" button really trivial to use; we could ask for the required info during deployment.

See also: Heroku "config vars" docs.

Refactor @page_title out of controllers

I see lots of instances in the controller such as:

@page_title = t(:start_discussion, default: "Start a New Discussion")
@title_tag = "#{Settings.site_name}: #{@page_title}"

This should be a view concern; is there any objection to using a quick custom helper like <%= title "Page Title" %> in the view, as described here or else something like the metamagic gem for a more comprehensive solution?

There is a title method in application_helper.rb but it doesn't appear to ever be used.

I do see that the page title is sometimes re-used in the call to add_breadcrumb but I don't think that's worthy of having these instance variables floating around clogging up the controllers. Open to counter-arguments so not refactoring yet :)

create tickets from custom email without the need of an third party provider like mandrill

First of all: I like to progress and look and feel of helpy a lot! Great project!

It would be nice if you can configure a custom support email and tickets than are created automatically without the need of an external / third party provider.

This would be easier to setup (as a user) and it is also better for data sensitive environments where the use of third party tools is not permitted.

add custom fields depending on community/category

It would be nice to add the possibility to configure custom fields for a new ticket depending on the community/category you choose.

So for example "bug report" may have other custom field then "Feature request".

Replace LESS with SCSS

This has a few benefits:

  • We can remove therubyracer and therefore the libv8 dependency, which are very clunky, and arguably overkill!
  • SCSS has become the prevalent CSS extension (vs. LESS).
  • Twitter Bootstrap is actually moving to SCSS for the next version and Bootstrapv3 support is in place already.

My cursory glance indicates that the codebase is using only basic LESS constructs, which means it should be quick to switch to SCSS. Would you consider accepting a PR providing this refactor?

API

Hey Scott,

I like what you're doing here and I'd like to help, if you'd like to have me. :)

Do you have any strong feelings towards using Grape[0] for the API?

Some other things I think would be roadmappable... jwt, multiple companies, assigning a group to a user — and having a group permission for forums/kb/tickets. I can talk more about them later (have a meeting to run to here shortly) but just putting it out there.

I was going to create and opensource my own helpdesk solution until I stumbled upon this badboy. My stack was going to be similar, except I would have used activeadmin to crank out the admin back-end stuff.

[0] https://github.com/ruby-grape/grape

Cheers,

New "Companies using Helpy" List

A good way to engage with the community; it would be nice to have a list somewhere of companies using this tool. It would provide a sense of security and community adoption which could help uptake.

Missing i18n keys

there still seem to be some translated strings that aren't displayed properly.
URL: .../topics/new

ask a question: "subject"
URL: .../users/edit
my profile: "signature"
URL: .../community/.../edit
Allow topic voting
Allow post voting
URL: .../ticket/...
Ticket Number:
Opened On:

We are getting lots of "Error R14 (Memory quota exceeded)" on Herkou

Hi again,

sometimes we get a 500 error when we try to post a new article, I've check the logs and I found
that Error R14 (Memory quota exceeded) keeps repeating all over again.

I've also found that this error keeps repeating:

Rendered admin/articles.html.erb within layouts/admin (13.3ms)
ActionView::Template::Error (undefined method `gsub' for nil:NilClass):
22: <span id="row-<%= doc.id %>" data-toggle="dropdown" aria-expanded="false" class='btn dropdown-toggle glyphicon glyphicon-align-justify'></span>
23: <ul class="dropdown-menu dropdown-menu-right" role="menu">
24: <li><%= link_to t(:edit, default: 'Edit'), edit_category_doc_path(doc.category.id, doc.id, lang: I18n.locale) %></li>
25: <li><%= link_to t(:delete, default: 'Delete'), doc, data: {confirm: t(:delete_confirm, default: 'Please confirm you really want to DELETE this')}, method: :delete, remote: true, class: 'less-important' %></li>
26: <li><%= link_to t(:view_on_site, default: 'View on Site'), category_doc_path(doc.category, doc), {target: "_blank"} %></li>
27: </ul>
28: </div>
app/models/doc.rb:56:in `to_param'
app/views/admin/articles.html.erb:25:in `block in _app_views_admin_articles_html_erb___2712434889001218502_70267151824380'
app/views/admin/articles.html.erb:12:in `_app_views_admin_articles_html_erb___2712434889001218502_70267151824380'
app/controllers/admin_controller.rb:29:in `articles'

Started GET "/admin/content/5/articles" for 80.64.37.217 at 2016-02-20 10:10:57 +0000
Parameters: {"category_id"=>"5"}
!!! initiate tracker without client id !!!
Processing by AdminController#articles as HTML
User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Category Load (0.5ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" = $1 ORDER BY "categories"."id" ASC LIMIT 1 [["id", 5]]
Doc Load (0.6ms) SELECT "docs".* FROM "docs" WHERE "docs"."category_id" = $1 ORDER BY rank ASC, title ASC [["category_id", 5]]
(1.4ms) SELECT COUNT(*) FROM "doc_translations" WHERE "doc_translations"."doc_id" = $1 AND "doc_translations"."locale" = $2 [["doc_id", 7], ["locale", "en"]]
(0.5ms) SELECT COUNT(*) FROM "doc_translations" WHERE "doc_translations"."doc_id" = $1 AND "doc_translations"."locale" = $2 [["doc_id", 7], ["locale", "es"]]
Completed 500 Internal Server Error in 45ms (ActiveRecord: 6.5ms)

I've tried to track down the issue but I've never worked with Ruby nor Ruby on Rails.

So you have any Idea about what may cause the issue?

Installation on Ubuntu 14.04

The Installation section is not very friendly unless using Heroku. Any suggestions on how do install it on a Ubuntu machine?

Missing i18n: Admin Views

Admin Topic:

  • Move forum dropdown: The word "Move"
  • Post Dropdown: Not translated at all
  • Reply to this Topic

Admin creating a new topic:

  • Discussion Management header

Article Edit:

  • "Additional Settings" Header
  • Article Status: Published vs. Draft
  • Save Changes

Admin Communities

  • Admin Communities Header
  • Community TH

Error messsage about missing email in new ticket view is duplicated

Maybe already fixed with #54 but I'm not sure about, because this happens on a different view than #54 is concerning:

If a non logged in user tries to create e new ticket on /de/topics/new and leaves the email fiel blank, the error message below the email input field is printed tiwce instead of once.

See this two picture of a german instance:
selection_004

API?

Hey mate, was just wondering if you have any plans for an API?

Organization feature request

Hi Scott!
Great work there :)

Is it possible to add the concept of 'organization' to the project?
For example, the project will support multiple organizations where each organization has its own users, admins, posts, topics, users, forums, etc. It is like adding a new level of abstraction to the whole project.

This can be done right now by installing multiple versions of the app (setting up multiple databases accordingly) which is not practical at all. Is there any other 'easier' way to do it?

I think it would be a great feature.

Regards,

Thanos

How to add support users?

Hi,

I've setup a helpy installation on heroku. I've been able to login with the default admin user and change it to my own user. However, I'm not able to add more users to the support team. How should I do this?

Cheers,
Michael

Your Tickets not aligned

The rows on the your tickets view are not perfectly aligned, the status is not in the vertical middle

Let users read articles in other languages if they are not translated to the user's language

Hello again 😄,

First of all, we love using helpy and we love the speed of development.

Having that said, we find that we cannot always translate the knowledge base articles to all languages before making them public. This leads to some languages having less articles. Most of our users are able to fully understand more than one language even though they prefer one or another. We feel that it would be grate to let users browse and search for articles that are not yet translated.

For example, we have a category named "Billing" in there some articles are not translated into catalan yet, but we would love that catalan users can see the links, lets say, in english. When they click the article it would load in english with a banner saying:

This article has not been translated to your language yet. You can read the article in the
following languages: <"spanish", "english">

With a drop down menu to select the available languages.

If we go further it would be possible to offer an automatically translated version apart from the versions in other languages. But this is more than what I would dare to ask for.

This is just an example of how it could work, I'm sure there are other options available, but something to handle untranslated article would be nice.

I hope you can use this as inspiration to improve heply even more 😄

CSS Suggestions from @BobMoree

Concerning the CSS, I just came across a bug:

.media, .media .body {
overflow: hidden;
}

Because of this default bootstrap styling, you cannot access the edit post drop-down fully.
At least that's what happened when I was in the admin on the ticket detail page.
Just make it: overflow:visible; (this does mess with the lay-out a little, but saves the UX)

There's also something wrong with the nav-collapse for the header nav. I get a
horizontal scroll bar, but I'm not sure exactly yet about the cleanest way to fix this.

I want to use flexbox for the pipeline and the main lay-out (getting the wrappers to stay
in the preferred position, i.e. the footer fixed at the body). This would require something like
the following. The following does seem to have some unintended consequences, which I will
look into.

body {
display: flex;
flex-flow: row wrap;
height: 100vh;
align-items: flex-start;
}

upper-wrapper, #body-wrapper, #footer-wrapper {

width: 100%;

}

footer-wrapper {

align-self: flex-end;

}

Responsive bug

At one breakpoint I am seeing the discussion fold underneath the users info. This could be a regression because I don't remember seeing it before.

screen shot 2016-03-01 at 9 06 56 am

Creating a new ticket as an admin and leaving the email field blank, breaks the open tickets view

Creating as an admin a new ticket on behalf of a customer via the admin interface (/admin/tickets/new) and leaving the Email field blanks breaks the view of "new tickets") (/admin/tickets?locale=de&status=new) because the database field user_id in the tables topics and posts is NULL.

Proposed solutions to fix this

  • make the email field mandatory
  • assign a no e-mail provided user to tickets witout an e-mail entered

Peronally, I'd prefer the second option, because we have sometimes customers without an e-mail and just a phone numer. If this bug get's fixed by implementing the first suggestion, then we would have to enter ad dummy e-mail address by ourself to record such tickets. this would lead in missinformation about users, because every ticket would be assigned to the same dummy email address user.

More context, if needed:

  • When a non logged in user tries to post a new ticket on /de/topics/new without entering data in the email field, the form returns an error and everything works as expected.
  • To fix tickets without an email entered on the database level I had to assign the entry in the topics table with an user_idother than NULL. After doing this, I could view the new tickets view again, but the post isn't viewable too when i try to click it. To fix this, I had to assign once more an user_id to the entry in the posts table of my PostgreSQL database.

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.