{"id":13687523,"url":"https://github.com/srid/Taut","last_synced_at":"2025-05-01T12:34:22.924Z","repository":{"id":66668572,"uuid":"123702642","full_name":"srid/Taut","owner":"srid","description":"An ambitious Slack JSON export viewer.","archived":false,"fork":false,"pushed_at":"2020-09-18T22:19:52.000Z","size":1192,"stargazers_count":24,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-11T00:42:29.286Z","etag":null,"topics":["haskell","obelisk","reflex","reflex-frp","slack"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/srid.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-03-03T15:08:01.000Z","updated_at":"2022-07-18T22:29:58.000Z","dependencies_parsed_at":"2024-01-14T18:09:25.987Z","dependency_job_id":null,"html_url":"https://github.com/srid/Taut","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srid%2FTaut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srid%2FTaut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srid%2FTaut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srid%2FTaut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/srid","download_url":"https://codeload.github.com/srid/Taut/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224257747,"owners_count":17281769,"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":["haskell","obelisk","reflex","reflex-frp","slack"],"created_at":"2024-08-02T15:00:55.945Z","updated_at":"2025-05-01T12:34:22.916Z","avatar_url":"https://github.com/srid.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"# Taut\n\nAn ambitious [Slack export\ndata](https://get.slack.help/hc/en-us/articles/201658943-Export-your-workspace-data)\nviewer written in Haskell.\n\nTaut was used to access and search over 50,000 messages in a Slack community I helped manage (we have migrated to Zulip), and is now ready for general use.\n\n## Features\n\n- Read directly from the Slack export data zip archive\n- Access _all_ messages, and search them as you would on Slack.\n- Every message comes with its own permalink\n- Only accessible to the organization's members (uses Slack's login)\n\n## Running locally\n\n1. Install [obelisk](https://github.com/obsidiansystems/obelisk)\n1. Set`config/backend/slackExportPath` to where you downloaded your Slack export\n   zip.\n1. Run `ob run` and visit http://127.0.0.1:8000\n\n## Running production app\n\nTo deploy the app either locally or elsewhere follow these instructions. In\nfuture we could automate all of this using Nix. Alternatively, if the machine\nyou are deploying to is reserved _exclusively_ for running Taut, you may use\n[`ob deploy`](https://github.com/obsidiansystems/obelisk#deploying).\n\n```bash\n# Create a directory to hold deployment configuration.\nmkdir -p deploy/prod\ncp -r config deploy/prod/ \n\n# Create a Slack OAuth app, and add its keys here:\npushd deploy/prod \necho \"...\" \u003e config/backend/oauthClientID\necho \"...\" \u003e config/backend/oauthClientSecret\n# As a Slack admin download a copy of your Slack export data. \n# It should be a zip file. Add its path here.\necho \"...\" \u003e config/backend/slackExportPath\npopd\n\n# When ready to create a new deployment:\n# Do a full build of the app, and copy the binaries to deploy directory\nnix-build -A exe  # This creates ./result \nrm -f deploy/prod/*  # This would leave the \"config\" directory as is\ncp -r result/* deploy/prod/\n\n# Run the app\n./backend --port 9000\n\n# Visit http://localhost:9000 for profit!\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrid%2FTaut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrid%2FTaut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrid%2FTaut/lists"}