{"id":19489461,"url":"https://github.com/1j01/natter","last_synced_at":"2025-06-15T10:07:49.583Z","repository":{"id":49839133,"uuid":"46944941","full_name":"1j01/natter","owner":"1j01","description":"💬 A chat app (not in active development)","archived":false,"fork":false,"pushed_at":"2022-07-27T06:44:50.000Z","size":1686,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-25T19:34:58.881Z","etag":null,"topics":["avatar","chat","chat-app","chat-application","communication","emoji","natter","web-app","web-application"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/1j01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security-rules.bolt","support":null}},"created_at":"2015-11-26T20:07:36.000Z","updated_at":"2023-11-15T16:54:20.000Z","dependencies_parsed_at":"2022-09-03T23:42:02.270Z","dependency_job_id":null,"html_url":"https://github.com/1j01/natter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/1j01/natter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fnatter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fnatter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fnatter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fnatter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1j01","download_url":"https://codeload.github.com/1j01/natter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fnatter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259957271,"owners_count":22937545,"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":["avatar","chat","chat-app","chat-application","communication","emoji","natter","web-app","web-application"],"created_at":"2024-11-10T21:08:38.711Z","updated_at":"2025-06-15T10:07:49.557Z","avatar_url":"https://github.com/1j01.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Natter\n\n### It's a chat app.\n\nFeatures:\n\n* Full rich text editing, with emoji and images\n* [Avastars][]: the best default avatar images around, procedurally generated based on your username\n* Paste a link to automatically embed videos from YouTube, Vimeo, and other sites, audio from SoundCloud, and even code fiddles like CodePen and JSFiddle\n* Drag and drop anything anywhere, e.g. image to avatar, image/audio/video/other file to chat or to a user\n* Easily send feedback (via chat; but don't worry you won't have to \"friend\"/\"unfriend\" Feedback or anything)\n* Pick emoji from a dynamic interactive map with axes representing emotional factors, instead of just a grid\n* Upload custom emoji/gifs easily for personal use\n* Use drawing mode to send handwritten messages and pictures\n* Insert emoji in drawing mode and position, rotate, flip and scale them\n\nDesign goals:\n\n* Deep user expressivity: to communicate with others, the user needs to be able to communicate with the app\n* Simplicity: easy to get started, easy to use\n\n### Status\n\nThe app has been defunct for a long time, but I've started remaking it.\n\nEverything is to be rewritten, this time using [Firebase][], [CoffeeScript][], [React][] and [Draft.js][].\n\n\u003c!--\n### The Secret Hidden Section (omg)\n\nNotes (that could become tests):\n\n* When you type a message and refresh the page, it should be saved\n* When you double-click a message, it should edit the message\n* You should also be able to edit a message on mobile\n* You should be able to edit or delete messages from a context menu\n* When you drag and drop an image (or maybe video? if it can make gifs and crop in 3D), your avatar should get bigger to show it as a drop target\n\nLinks:\n\nUse this for searching for contacts (eventually):\n\thttps://github.com/firebase/flashlight\n\thttps://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html\n\nAutomatic embedding (not enough):\n\thttps://www.npmjs.com/package/oembed-auto\n\thttps://github.com/egoist/autoembed\n\nAutomatic linking\n\thttps://github.com/egoist/autolink.js\n\nBots are fun:\n\thttps://cleverbot.io/ \n\n\n### The Secret Hidden Section II: Corporate Agenda Edition\n\nA communications platform needs to have the lowest barrier to entry as possible.\n\nTheoretical monetization strategies and limitations:\n\tads\n\t\thopefully unobtrusive\n\t\talmost definitely the way to go\n\tpaid up-front\n\t\tconsidered as a \"feature\" by some, but for things like todo apps and email\n\t\t(the real feature is not having ads -- btw Hulu, you screwed this up)\n\t\tlimits the barrier to entry too much for a communications platform\n\tpay for small extra feature\n\t\ti.e. not showing a \"Sent with MailChimp\" watermark in an email\n\t\tunlimited history logs\n\t\t\t1. feels like an artificial limit to begin with\n\t\t\t2. unless it's economically disingenuous, it doesn't unlock preexisting history and offer immediate value\n\t\t\t3. people still might think it will unlock previous history, and complain that they weren't able to recover their PGP key or whatever\n\t\tcommunication features\n\t\t\te.g. \"stickers\", \"emoji packs\", \"more GIFs 4 the lolz\", or something similar to drawing mode\n\t\t\tmakes the communication platform asynchronous\n\t\t\t1. can feel elitist\n\t\t\t2. can create a situation where one person can't respond in the same way (which they would naturally want to)\n\t\t\t3. I want to make this an open platform where you can use your own emojis, GIFs, and other means of expression\n\t\t\t\t(which might warrant a third-party \"store\" type of thing to discourage chrome extensions that could be malicious)\n\tfree trial, with referral as an alternative to payment\n\t\t1. complicated to implement\n\t\t2. no one likes free trials, as they're inherently somewhat arbitrary\n\t\t3. referrals could be nice though\n\t\t4. only makes sense for mobile apps, and if there's a web version, it can likely do everything you need\n\tdonations\n\t\t1. possibly less reliable than other channels although I have no data\n\t\t2. who's gonna donate, though?\n\tPatreon\n\t\tlike donations, but more reliable?\n\tpay to remove ads for everyone for a period of time\n\t\t1. complicated to implement\n\t\t2. this could be cool though\n\n--\u003e\n\n[Firebase]: https://www.firebase.com/\n[CoffeeScript]: http://coffeescript.org/\n[React]: https://facebook.github.io/react/\n[Draft.js]: https://facebook.github.io/draft-js/\n[Avastars]: https://rawgit.com/1j01/natter/master/app/components.html\n[main app screen]: https://rawgit.com/1j01/natter/master/app/index.html\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fnatter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1j01%2Fnatter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fnatter/lists"}