{"id":13594614,"url":"https://github.com/davidcelis/sparkles","last_synced_at":"2025-03-23T08:31:41.411Z","repository":{"id":38994260,"uuid":"420253230","full_name":"davidcelis/sparkles","owner":"davidcelis","description":"✨ Recognize teammates in slack by awarding them sparkles!","archived":false,"fork":false,"pushed_at":"2024-07-30T19:10:40.000Z","size":1084,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-18T18:57:50.312Z","etag":null,"topics":["rails","ruby","slack","slack-app","slack-commands","sparkles"],"latest_commit_sha":null,"homepage":"https://sparkles.lol","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidcelis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"davidcelis","ko_fi":"davidcelis"}},"created_at":"2021-10-22T22:04:43.000Z","updated_at":"2024-11-08T06:29:50.000Z","dependencies_parsed_at":"2024-07-30T23:24:59.854Z","dependency_job_id":null,"html_url":"https://github.com/davidcelis/sparkles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcelis%2Fsparkles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcelis%2Fsparkles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcelis%2Fsparkles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidcelis%2Fsparkles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidcelis","download_url":"https://codeload.github.com/davidcelis/sparkles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245078067,"owners_count":20557274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rails","ruby","slack","slack-app","slack-commands","sparkles"],"created_at":"2024-08-01T16:01:36.505Z","updated_at":"2025-03-23T08:31:41.082Z","avatar_url":"https://github.com/davidcelis.png","language":"Ruby","readme":"# ✨ Sparkles ✨\n\nSparkles is a simple little Slack application for recognizing people in the form of ~~meaningless internet points~~ sparkles!\n\n![A screenshot of David using the /sparkle command in Slack, giving Annabelle a sparkle for recommending a great sushi restaurant.](./app/assets/images/give-a-sparkle.png)\n\n## Usage\n\nTip: You can always view usage information in Slack using `/sparkle help` and `/sparkles help`.\n\n### Give a sparkle to somebody\n\nTo sparkle someone, use `/sparkle` immediately followed by a username and, optionally, a reason:\n\n`/sparkle @davidcelis [reason]`\n\nReasons don’t require any particular format, but if you want them to flow better when reading them later, it’s best to start any reason with a coordinating conjunction (that’s just a fancy way to say words like \"for\",  \"because\", or \"so\").\n\n`/sparkle @davidcelis for being so awesome`\n\nYou can also give a sparkle to someone by reacting to one of their messages with the `:sparkle:` emoji! This is a great way to give someone a sparkle point if you just liked what they said or want to celebrate good news or some kind of announcement.\n\n### View your team’s leaderboard\n\nYou can check out the leaderboard for your team at any time by using the `/sparkles` command!\n\n### View your (or somebody else’s) sparkles\n\nTo see the sparkles you or someone else have received, you can pass a username to the `/sparkles` command (e.g. `/sparkles @davidcelis`). If you just want to see your own sparkles, you can also enter `/sparkles me` into the chat box.\n\n## Self-hosting\n\nBoth the slack application and [sparkles.lol](https://sparkles.lol) are free to use! Except for the reasons given for sparkles, we never store messages from Slack itself, and the OAuth scopes requested are minimal:\n\n* `commands` (adds the `/sparkle` command to your workspace)\n* `chat:write` (so we can post a confirmation when someone gives out a sparkle)\n* `reactions:read` (so we can give people a sparkle via emoji reactions)\n* `users:read` (so we can confirm that the user you’re trying to give a sparkle to is a member of the workspace)\n\nHowever, maybe you work for an organization with extremely strict rules about what data is allowed into or out of Slack. If that’s the case, Sparkles is easy to host yourself! In fact, with only a little bit of configuration, you can host Sparkles on Heroku or with Dokku.\n\n### Requirements\n\nSparkles is a Rails application using the following dependencies:\n\n* Ruby 3 (and Bundler)\n* PostgreSQL 16\n\nAt least, these are the versions in use upon writing this README. Depending on the dependency, they may be updated randomly; the publicly available Sparkles application is hosted via Dokku, so dependency management is less of a concern. For this reason, I highly recommend hosting via a service like Heroku or Dokku so that you can take advantage of buildpacks.\n\n### Create a Slack application\n\nSlack recently made it easy to create a preconfigured Slack application using App Manifests. Visit https://api.slack.com/apps?new_app=1 and choose the option to create an app from an app manifest. Choose a development workspace (it’s best to choose one that you control so that you can install Sparkles yourself without requiring review from a workspace admin) and paste in the contents of our example [app_manifest.yml](config/app_manifest.example.json) file, making sure to replace `example.com` in any URL with the domain where you’re planning to host Sparkles.\n\n### Generate an encrypted credentials file\n\nNewer Rails applications use encrypted YAML files to store application secrets. You’ll need to generate one with your own credentials:\n\n```sh\n$ bin/rails credentials:edit\n```\n\nThis will create two new files: `config/credentials.yml.enc` and `master.key`. Keep the former in version control and keep the latter excluded. Our standard `.gitignore` file handles this for you.\n\nWhen you run the above command, you should find yourself in a text editor for the `config/credentials.yml.enc` file; paste the following in, adding adding the required values:\n\n```yaml\n# Found on your Slack application's \"Basic Information\" page\nslack:\n  client_id: # required\n  client_secret: # required\n  signing_secret: # required\n\n# An ingestion URL for error handling using Sentry. This isn't required, but\n# Sentry has a generous free tier, so you may as well sign up and set up a\n# quick project at http://sentry.io/signup/\n#\n# Example: https://aa80f6df85a993c7657ec39a0@o12345.ingest.sentry.io/1234567\nsentry_dsn: # optional, a SENTRY_DSN environment variable works as well\n\n# Used as the base secret for all MessageVerifiers in Rails, including the one\n# protecting cookies. Generate one by running `rails secret`.\nsecret_key_base: # required\n```\n\n### Deploy the Rails application\n\nYou can deploy Sparkles however you like; the only required process is the Rails server itself (Puma, by default) to handle web requests. Sparkles includes a `Procfile` to declare these processes, so deployment to a service like Heroku or Dokku is easy. However you deploy, you’ll need to define a couple environment variables:\n\n* `DATABASE_URL`: A connection string for a PostgreSQL database. This is defined automatically for you if you’re using something like Heroku or Dokku and add the PostgreSQL plugin/resource.\n* `RAILS_MASTER_KEY`: The contents of the `master.key` file you generated earlier.\n\n## Development\n\nEncountered a bug? Have an idea for something that Sparkles doesn’t do yet? Feel free to [file an issue](https://github.com/davidcelis/sparkles/issues/new). Or, if you’re a developer yourself, [fork the repository](https://github.com/davidcelis/sparkles/fork), make some changes, and open a Pull Request!\n\n\n## Acknowledgements\n\nSparles is inspired by an [old Hubot script](https://github.com/pmn/sparkles/blob/master/scripts/sparkles.coffee) that was very popular at GitHub and gave us a fun, silly way to show appreciation to fellow hubbers. Everybody loved sparkles except [@scottjg](https://github.com/scottjg) and [@dreww](https://github.com/dreww).\n","funding_links":["https://github.com/sponsors/davidcelis","https://ko-fi.com/davidcelis"],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidcelis%2Fsparkles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidcelis%2Fsparkles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidcelis%2Fsparkles/lists"}