{"id":20687858,"url":"https://github.com/cribbles/tiktak","last_synced_at":"2025-11-09T23:04:40.179Z","repository":{"id":32497215,"uuid":"36077889","full_name":"cribbles/tiktak","owner":"cribbles","description":"anonymous forum engine for Rails 4","archived":false,"fork":false,"pushed_at":"2015-10-02T21:30:35.000Z","size":682,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-17T16:52:35.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://acb-api.herokuapp.com/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cribbles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-22T14:55:03.000Z","updated_at":"2015-07-11T01:32:25.000Z","dependencies_parsed_at":"2022-09-10T06:13:38.161Z","dependency_job_id":null,"html_url":"https://github.com/cribbles/tiktak","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/cribbles%2Ftiktak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Ftiktak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Ftiktak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Ftiktak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cribbles","download_url":"https://codeload.github.com/cribbles/tiktak/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242945838,"owners_count":20210762,"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":[],"created_at":"2024-11-16T22:58:29.115Z","updated_at":"2025-11-09T23:04:40.134Z","avatar_url":"https://github.com/cribbles.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TikTak\n\n[Live](http://acb-api.herokuapp.com/).\n\n## Summary\n\nTikTak provides a light-weight, Yik Yak-like anonymous forum system with\nBBS-style assets.\n\n## Languages:\n\n- Ruby\n- Javascript\n- HTML/CSS\n\n## Frameworks:\n\n- Rails 4\n- SASS\n\n## Libraries and Technologies:\n\n- jQuery\n- will_paginate\n- Rack::Attack\n- SettingsLogic\n- [Faker::YikYak](https://github.com/cribbles/faker-yikyak)\n- reCAPTCHA\n\n## Test Suite\n\n- Rspec\n- FactoryGirl\n- Capybara\n\n## Features\n\n- Secure, hand-rolled Rails user auth\n- E-mail authentication\n- Password resets\n- Private messaging\n- Post quoting\n- Hellbanning\n- IP whitelisting / blacklisting / caching\n- Post reporting\n- A straight-forward moderation system\n\n## Deploying\n\nSite-wide globals, e.g. the name of your campus or institution, are stored in\n[`config/settings.yml`](./config/settings.yml) and accessed through the\nSettings\nmodel.\n\nTikTak uses user mailers (for sign-in / sign-up / lost password) and reCAPTCHA\n(for spam control). You'll need to get these set up for production.\n\nI deployed mailers with Heroku using Sendgrid. If you configuration is\ndifferent, you'll need to change your settings in\n`config/environments/production.rb`.\n\n## Notes\n\n### Private Messaging\n\nTikTak is fully anonymous, so private messaging works differently than on most\nsocial platforms.\n\nAnyone who's signed in has the ability to make themselves available for contact\nby other registered users. When you send someone a private message, you can\noffer to exchange e-mails through the application's handshake system. If they\naccept, the e-mails for both sender and recipient will be revealed to each\nother.\n\nIn production, you'll definitely want to provide an e-mail regex specific to\nyour campus / institution / organization in\n[`config/settings.yml`](./config/settings.yml). This helps to ensure integrity\namong contactees. The principle behind exchanging e-mails is that only\nindividuals who have authenticated through a 'my-cool-school.edu' account\nshould\nbe available for contact. (Of course, this says nothing about who _in\nparticular_ a user might be getting in contact with.)\n\n### Hellbanning\n\nTikTak provides an implementation of\n[hellbanning](https://en.wikipedia.org/wiki/Stealth_banning) (also known as\nshadowbanning on some sites).\n\nThe conventional practice for hellbanning is to make a registered user's posts\nonly available to themselves. Because TikTak is anonymous and allows anyone to\npost - with or without an account - this won't do. Instead, hellbanning is done\nby IP address. A user posting from a hellbanned IP address can view all posts\nmade by themselves and other hellbanned users, but nobody else can see their\nposts.\n\nHellbanning is tightly coupled to the topic index and show views, to the point\nof paginating these views separately for hellbanned and non-hellbanned users.\nThis way, hellbanned users can appear to be bumping their own and others'\nthreads, but replying to a thread from a hellbanned IP address won't bump it\nfor\nthe rest of the site.\n\n### Seed Data\n\nI wrote a small gem to produce seed data:\n[Faker::YikYak](https://github.com/cribbles/faker-yikyak). This makes Danny\nGlunz's [YikYakov](https://github.com/dglunz/yikyakov) available in a slightly\nmore modular form under the [Faker](https://github.com/stympy/faker) namespace\n(a la Faker::Hacker).\n\nCalling `Faker::YikYak.words(n)` will produce a Markov chain of length _n_\nwords, generated from YikYak sample data. See the [Heroku live\nsite](http://acb-api.herokuapp.com) for an example of what this looks like.\n\n## License\n\nTikTak is released under the [MIT License](/LICENSE).\n\n---\nDeveloped by [Chris Sloop](http://chrissloop.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcribbles%2Ftiktak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcribbles%2Ftiktak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcribbles%2Ftiktak/lists"}