{"id":16762434,"url":"https://github.com/tlack/popup-chat","last_synced_at":"2025-03-21T23:32:47.017Z","repository":{"id":145865879,"uuid":"60572230","full_name":"tlack/popup-chat","owner":"tlack","description":"esp8266 instant message board/chat room - runs as open wifi access point (captive portal)","archived":false,"fork":false,"pushed_at":"2016-06-07T05:01:43.000Z","size":16,"stargazers_count":53,"open_issues_count":1,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-18T06:11:15.903Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/tlack.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-07T01:25:27.000Z","updated_at":"2025-02-22T18:29:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"b77a80ac-d738-4d57-ba16-c5f60a75bded","html_url":"https://github.com/tlack/popup-chat","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/tlack%2Fpopup-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlack%2Fpopup-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlack%2Fpopup-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlack%2Fpopup-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tlack","download_url":"https://codeload.github.com/tlack/popup-chat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244885337,"owners_count":20526284,"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-10-13T04:44:44.456Z","updated_at":"2025-03-21T23:32:47.009Z","avatar_url":"https://github.com/tlack.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PopupChat \n\nPopupChat is an open anonymous instant chat room.\n\n![Screenshot of PopupChat Arduino instant chat room](http://www.modernmethod.com/send/files/popupchatscreenshot.jpg)\n\nPopupChat is an Arduino sketch that turns your ESP8266 into an open wifi access\npoint that connects users to an anonymous chat room.  The user is (usually)\nsent directly into a popup web browser with the software open as soon as they\nconnect to the wireless AP, because it acts like a Captive Portal (think \"hotel\nwifi\").\n\n## Ethics\n\nPopupChat features impermanence. All data is temporary, and PopupChat maintains\nno logs. The entire system is reset to its default state when power is cycled. \n\n## Purpose\n\nI wanted to explore the ESP8266 and I'm fascinated by the opportunities that\nhighly connected low cost devices like the ESP8266 (and hopefully ESP32)\nengender.\n\nData points:\n\n- It's conjectured that the ESP8266 can run for up to 17 days on merely a watch\n\tbattery\n- The chip costs $2 in bulk, or $10 for a deee-luxe development board\n- Not much of an operating system to cause confusing behavior\n- Single-purposes devices theoretically enable a smaller attack surface for\n\tsecurity attacks (in practice vendor bugs probably mitigate the benefit here..\n\tnote ESP8266 buggy TLS)\n\n## Inspiration\n\nI miss the hyper local and easy to operate bulletin board systems of my youth.\nMy favorite part was checking the Wall to see who's logged on and left a message.\nSimilar to the old fingerd protocol, it was way easier to communicate \n\n## Scenarios for usage\n\nAll kinds of adhoc communication and group chat systems could be assisted by\nsoftware like this running on low-cost boards like the ESP8266.\n\n- Disaster relief/mountain rescue organization, triage, etc.\n- On-premises customer chat\n- Community bulletin board\n- Public soapbox\n\n## Current status\n\n- *Pretty bare bones*. Just a proof of concept.\n- I don't think I nailed the Android Captive Portal experience. Doesn't seem to\n\tpop up the browser. Some more useful info here:\n\thttp://serverfault.com/questions/679393/captive-portal-popups-the-definitive-guide\n- Needs great JS UI with autoupdate in order to feel like a finished product.\n- Would be best rewritten under NodeMCU.\n- Permanency is a valid goal for some situations. PopupChat would benefit from\n\ta version that can store things permanently. The ideal interface would be the\n\tNodeMCU `file` API.\n- Needs a fine-grained control panel/sysop menu with a way to delete troll\n\tdroppings.\n- System should maintain some kind of history of its up times and down times so\n\tthat the sysop can understand issues relating to installation/power/hardware\n\tetc. I've experienced a few surprise restarts.\n- Needs dates, especially system reset dates.\n\n## Installation\n\nI used Arduino to make this, but I'd like to rebuild it with NodeMCU.\n\nEdit the configuration at the top of the .ino file and upload it to your 8266. That's about all it should take.\n\n## Building public PopupChat nodes\n\nIt would be cool to leave some nodes running this publicly, in a well known and\nidentified public place. This is just an idea so far. I'm waiting to receive\nmore ESP8266s before I can test out the idea more thoroughly.\n\nYou must design not just the experience of using your product (art piece or\nwhatever it ends up being), but also the way it interacts with the environment\naround it. Please think carefully before starting.\n\n### Bill of Materials\n\nYou don't need any outbound internet connectivity, so that's a nice time saver.\n\nI used the [Elecrow ESP8266 IoT\nboard](http://www.amazon.com/Elecrow-ESP8266-Module-Battery-Charging/dp/B01DEQI4W2).\nThe difficult-to-source Wemos D1 Mini may be a better board to use because of\nits smaller footprint and easier stacking with other boards/shields. I haven't\nhad a chance to use it yet.\n\nSome ESP8266 boards allow you to connect an external wifi antenna, but not most\nof them. Consider if you need this feature or not. I would suggest the range is\nOK out of the box with the internal antenna. ESP-12F, a recent variant, is said\nto have a better antenna.\n\nI've had some good luck so far with this 20,000mAh USB solar battery charger. I need to put it through its paces more\nintelligently. [ZeroLemon SolarJuice 20k mAh solar battery charger](http://www.amazon.com/ZeroLemon-SolarJuice-20000mAh-Portable-Technology/dp/B00NIOGKL8)\n\nYou'll want to find a way to shape it and install it in the installation space.\nDo you need to worry about vandalism and abuse?\n\nFor the enclosure itself, I've had good luck with InstaMorph so far in terms of\nshaping a tough box to mount things in. It dries pretty strong and you can\nreheat and reshape bits as neededed. Plus it's cheap and nontoxic. \n\nTo attach to its mounting point (where you decide it to be), I might consider\n[CastTape](http://www.amazon.com/CASTtape-Strength-Automotive-Plumbing-Emergency/dp/B01A6DSVBU?ie=UTF8\u0026psc=1\u0026redirect=true\u0026ref_=oh_aui_detailpage_o00_s01),\na carbon fiber product that works similar to Duct Tape - but far more messy, and of course stronger by weight than steel.\nBe warned that CF can inhibit RF signals (wifi range!) and trap heat, so use with care, and avoid enclosing the antenna area.\n\nFor outdoor use you should consider products that inhibit moisture. Luckily this is a well known problem in electronics. My first thought would be \nsome combination of:\n\n- \"Liquid electrical tape\" compounds like [Gardner's](http://www.amazon.com/Gardner-Bender-LTB-400-4-Ounce-Electrical/dp/B000FPAN2K).\n- a few coats of [PlastiDip](http://www.amazon.com/Performix-11218-Multi-Purpose-Coating-Aerosol/dp/B008PO6368). It's available in many colors, and a clear\n  variant, but I suggest you make your product's presence known in the conscious environment of the public space where it lives because that's the right thing\n\tto do. PlastiDip also lends a nice, comfortable materiality to surfaces on which it's applied.\n- Final top coat of [NeverWet](http://www.amazon.com/Oleum-274232-Never-Multi-Purpose/dp/B00DNQBFAW), which I confess to not having worked with.\n\n### Concerns with public installations\n\nI've had some random reboots using solar battery chargers. Even when it's just\nslightly cloudy. More research required.\n\nIt would be best to have NodeMCU running on these public nodes so that you can\nremotely connect and debug them. It will be almost impossible to re-connect a\nserial terminal to these when problems develop.\n\nDo not intrude on the privacy of others.\n\n## Provenance/License\n\nMuch of the concepts behind this were hashed out with B. Lee (TX), whose blue\nskies screed infected me in a heady manner. Thanks to Gil C. (FL) for help\nunderstanding Arduino. \n\nMIT license. Based on Captive Portal by M. Ray Burnette 20150831. \n\nBuilt at [Building.co](http://building.co) in Miami, FL.\n\n## Contact\n\n@tlack on Twitter\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlack%2Fpopup-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlack%2Fpopup-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlack%2Fpopup-chat/lists"}