moonshot-rails 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 267a4749786b23adbc02bc666be3043bb2f3a29a27b9fc811c2d6bcd558ed7a8
4
- data.tar.gz: 1274e6d80f830c37ae7800e42338d887516cea203c813b0c047b6cf5e558f6e6
3
+ metadata.gz: 80ae99ac2e3300a7795f3612397bb4c338c3fe4641392ba83bc2d6910f14cdd6
4
+ data.tar.gz: 0b20b0277be40bc1ac7bb57a2c49e5da29726e4d7a400b1777759ad11c8e74d8
5
5
  SHA512:
6
- metadata.gz: b0eebc47467f82c19e79e059041d8d488d01cf30dd890ccba7b41cf6ec63c8a66f0a31e6d2c56012821a7c51c73bd25524fb093e3d69006cd3c7529b47610f8b
7
- data.tar.gz: 96bd0210245d379cfb1f5c8935d27fbb07b4f31fa7ea5dd71c16ef1375aca59f10db77adf1f173dbd95dd9949860e1883433ac95c3ff910a7aa0fc62aafbc88b
6
+ metadata.gz: a53608e24e4cabd49d5c426124774e526e1f898f1535615a1bb104384a8088f88197550be8a20f62c714565397d6ce3f82ebe494244c03c0a09971ebd28d63d9
7
+ data.tar.gz: 4813fce7da2d850201bfe19e084f7e3371d8e51370be47539d34a239cf6d9a6415d00bb5f78429dc558b28c4ba56e2f549ebb538894bac1c4446a1a6375c55b8
data/README.md CHANGED
@@ -1,12 +1,84 @@
1
1
  # Moonshot Rails
2
2
 
3
+ A collection of Stimulus controllers and other helpers enabling faster building of SaaS applications using modern Rails and Stimulus. Most of these are heavily opinionated.
4
+
5
+ 1. [Post Hog Analytics Stimulusjs wrapper](#1-post-hog-analytics-stimulusjs-wrapper)
6
+ 2. [Shepherdjs Stimulusjs wrapper](#2-shepherdjs-stimulusjs-wrapper)
7
+ 3. [Crisp Chat Stimulusjs wrapper](#3-crisp-chat-stimulusjs-wrapper)
8
+
3
9
  ## Installation
4
10
 
5
11
  ```bash
6
12
  bundle add moonshot-rails
7
13
  yarn add moonshot-rails
14
+
8
15
  ```
9
16
 
17
+ ### Include all the stimulus controllers
18
+
19
+ ```bash
20
+ # append this to `app/javascript/controllers/index.js`
21
+
22
+ import { registerControllers } from 'moonshot-rails'
23
+ registerControllers(application)
24
+ ```
25
+
26
+ ### You can also pick and choose which controllers to include
27
+
28
+ ```bash
29
+ # append this to `app/javascript/controllers/index.js`
30
+
31
+ import { PostHogController } from 'moonshot-rails'
32
+ application.register('post-hog', PostHogController)
33
+
34
+ # see the full list at https://github.com/cionescu/moonshot-rails/blob/main/app/assets/javascripts/moonshot/index.js
35
+ ```
36
+
37
+ ## Contents
38
+
39
+ ### 1. Post Hog Analytics Stimulusjs wrapper
40
+
41
+ I tend to use [PostHog](https://posthog.com/) for session tracking and product usage analytics.
42
+
43
+ #### Usage:
44
+
45
+ In your layout file, add the following:
46
+
47
+ ```erb
48
+ = post_hog_tracker user: @user, enabled: Rails.env.production?, api_key: Settings.post_hog.api_key
49
+ ```
50
+
51
+ Your `User` model needs to implement the following methods:
52
+ * `id` - used to uniquely identify the user. I usually use the `id` column.
53
+ * `tracker_name` - the display name for the user object. Could be `User#full_name`.
54
+ * `tracker_email` - another way to identify the user.
55
+
56
+ ### 2. Shepherdjs Stimulusjs wrapper
57
+
58
+ *TODO*
59
+
60
+ ### 3. Crisp Chat Stimulusjs wrapper
61
+
62
+ [Crisp](https://crisp.chat/) is one of the options for a live chat/support widget. I tend to like to like it because it comes with an npm package, meaning I can wrap it in a Stimulus controller.
63
+
64
+ In the layout file, add the following:
65
+
66
+ ```erb
67
+ = crisp_chat user: current_user, enabled: Rails.env.production?, wrapper: :div, api_key: Settings.crisp.api_key
68
+ ```
69
+
70
+ If you want to activate (open) the chat widget when clicking a link on the page, you can follow this pattern:
71
+
72
+ ```erb
73
+ You can reach out to us via the
74
+ = crisp_chat(user: current_user, enabled: Rails.env.production?, wrapper: :span, api_key: Settings.crisp.api_key) do
75
+ = link_to 'in-app chat', '#', data: { action: 'click->crisp#open' }, class: 'btn-link text-primary'
76
+ ```
77
+
78
+ Similarly to the PostHog wrapper, the `User` model needs to implement the following methods:
79
+ * `tracker_name` - the display name for the user object. Could be `User#full_name`.
80
+ * `tracker_email` - another way to identify the user.
81
+
10
82
  ## Release
11
83
 
12
84
  ### Ruby Gem
@@ -0,0 +1,24 @@
1
+ import { Crisp } from "crisp-sdk-web"
2
+ import { Controller } from "@hotwired/stimulus"
3
+
4
+ export default class extends Controller {
5
+ static values = {
6
+ websiteId: String,
7
+ identification: Object
8
+ }
9
+
10
+ connect() {
11
+ Crisp.configure(this.websiteIdValue)
12
+ if (Object.keys(this.identificationValue).length) {
13
+ const { email, name } = this.identificationValue
14
+
15
+ Crisp.user.setEmail(email)
16
+ Crisp.user.setNickname(name)
17
+ }
18
+ }
19
+
20
+ open(e) {
21
+ e.preventDefault()
22
+ Crisp.chat.open()
23
+ }
24
+ }
@@ -1,11 +1,13 @@
1
1
  import PostHogController from './post_hog_controller'
2
2
  import ShepherdController from './shepherd_controller'
3
+ import CrispController from './crisp_controller'
3
4
 
4
5
  export {
5
- PostHogController, ShepherdController
6
+ PostHogController, ShepherdController, CrispController
6
7
  }
7
8
 
8
9
  export function registerControllers(application) {
9
10
  application.register('shepherd', ShepherdController)
10
11
  application.register('post-hog', PostHogController)
12
+ application.register('crisp', CrispController)
11
13
  }