{"id":13466961,"url":"https://github.com/mrusme/neonmodem","last_synced_at":"2025-05-16T10:06:33.436Z","repository":{"id":65200060,"uuid":"583532956","full_name":"mrusme/neonmodem","owner":"mrusme","description":"Neon Modem Overdrive","archived":false,"fork":false,"pushed_at":"2025-05-11T23:13:41.000Z","size":2543,"stargazers_count":615,"open_issues_count":20,"forks_count":21,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-12T00:21:18.751Z","etag":null,"topics":["api","api-client","ascii-art","bbs","bulletin-board","bulletin-board-system","bulletinboard","cli","command-line","command-line-tool","discourse","discourse-api","forum","forum-application","hacker-news","hackernews","lemmy","terminal","terminal-app","tui"],"latest_commit_sha":null,"homepage":"https://neonmodem.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrusme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["https://github.com/mrusme#support"]}},"created_at":"2022-12-30T04:03:34.000Z","updated_at":"2025-05-11T23:13:45.000Z","dependencies_parsed_at":"2023-02-10T05:45:51.189Z","dependency_job_id":"14df2f3b-c3a2-4eca-b759-e8259d55d7fd","html_url":"https://github.com/mrusme/neonmodem","commit_stats":{"total_commits":248,"total_committers":13,"mean_commits":"19.076923076923077","dds":0.08064516129032262,"last_synced_commit":"a237769cbfc526bec380d90e4a3b873fbb47e77c"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fneonmodem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fneonmodem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fneonmodem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrusme%2Fneonmodem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrusme","download_url":"https://codeload.github.com/mrusme/neonmodem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509476,"owners_count":22082891,"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":["api","api-client","ascii-art","bbs","bulletin-board","bulletin-board-system","bulletinboard","cli","command-line","command-line-tool","discourse","discourse-api","forum","forum-application","hacker-news","hackernews","lemmy","terminal","terminal-app","tui"],"created_at":"2024-07-31T15:00:51.813Z","updated_at":"2025-05-16T10:06:33.416Z","avatar_url":"https://github.com/mrusme.png","language":"Go","funding_links":["https://github.com/mrusme#support"],"categories":["Go","Applications","Projects","\u003ca name=\"online\"\u003e\u003c/a\u003eOnline search and resources"],"sub_categories":["RSS, News and Weather","Mobile / Desktop apps"],"readme":"Neon Modem Overdrive\n--------------------\n\n![Neon Modem Overdrive](splashscreen.png)\n\n[![Static \nBadge](https://img.shields.io/badge/Join_on_Matrix-green?style=for-the-badge\u0026logo=element\u0026logoColor=%23ffffff\u0026label=Chat\u0026labelColor=%23333\u0026color=%230DBD8B\u0026link=https%3A%2F%2Fmatrix.to%2F%23%2F%2521PHlbgZTdrhjkCJrfVY%253Amatrix.org)](https://matrix.to/#/%21PHlbgZTdrhjkCJrfVY%3Amatrix.org)\n\n[*Neon Modem Overdrive*][neonmodem] is a [BBS][wiki-bbs]-style command line client that \nsupports [Discourse][discourse], [Lemmy][lemmy], [Lobsters][lobsters] and \n[Hacker News][hackernews] as backends, and seamlessly integrates all of them \ninto a streamlined TUI. And yes, you heard that right, I really did call it \n*Neon Modem Overdrive*.\n\n*Neon Modem* is built in Go, using [Charm's Bubble Tea][bubbletea] TUI \nframework, but implements an own *window manager* (or *compositor* if you want) \nthat allows it to use a third dimension, on top of the two dimensional rendering \nthat Bubble Tea offers today. With that it is possible to display dialogs on top \nof one another, in order to offer a smoother UI experience.\n\n[More info here!](https://xn--gckvb8fzb.com/get-the-bbs-scene-vibes-back-with-neonmodem-overdrive/)\n\n\n## Support\n\n| System             | Available          | List Forums        | List Posts         | List Replies       | Create Post        | Create Reply       |\n| :----------------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |\n| Discourse          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| Lemmy              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| Lobsters           | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |                    |                    |\n| Hacker News        | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |                    |                    |\n| RSS+Disqus/Isso(?) |                    |                    |                    |                    |                    |                    |\n| Superhighway84     |                    |                    |                    |                    |                    |                    |\n| NNTP               |                    |                    |                    |                    |                    |                    |\n\n\n[neonmodem]: https://neonmodem.com\n[wiki-bbs]: https://en.wikipedia.org/wiki/Bulletin_board_system\n[discourse]: https://github.com/discourse\n[lemmy]: https://github.com/LemmyNet\n[lobsters]: https://github.com/lobsters/lobsters\n[hackernews]: https://news.ycombinator.com\n[bubbletea]: https://github.com/charmbracelet/bubbletea\n\n\n## Installation\n\n### From Release\n\nDownload the [latest\nrelease](https://github.com/mrusme/neonmodem/releases/latest) and unpack\nit:\n\n```sh\n$ tar -xzf ./neonmodem_*.tar.gz\n```\n\nThe binary is called `neonmodem`. Feel free to move it to e.g. `/usr/local/bin`.\n\n\n### From Sauce\n\nClone this repository\n\n- from [GitHub](https://github.com/mrusme/neonmodem)\n  ```sh\n  $ git clone git@github.com:mrusme/neonmodem.git\n  ```\n- from \n  [Radicle](https://app.radicle.xyz/nodes/seed.xn--gckvb8fzb.com/rad:z4GExf1wpsyn6WDc2dNAxVc6LPS9G)\n  ```sh\n  $ rad clone rad:z4GExf1wpsyn6WDc2dNAxVc6LPS9G\n  ```\n\nThen cd into the cloned directory and run:\n\n```sh\nmake\n```\n\nThe binary is called `neonmodem`. Feel free to move it to e.g. `/usr/local/bin`.\n\nFor Arch Linux an AUR package is available here: https://aur.archlinux.org/packages/neonmodem\n\nInstall with your favorite AUR helper.\n\nOn NetBSD, a package is available from the official repositories.\nTo install it, simply run `pkgin install neonmodem`.\n\n## Configuration\n\nBefore launching *Neon Modem Overdrive* it requires initial setup of the \nservices (a.k.a. *systems*). Run `neonmodem connect --help` to find out more.\n\nConnecting a service will add it to the configuration TOML. The configuration \nfile location depends on the operating system. On Unix systems, it is in \n`$XDG_CONFIG_HOME/neonmodem.toml` if `$XDG_CONFIG_HOME` is non-empty, otherwise \n`$HOME/.config/neonmodem.toml` is used. On Darwin, the configuration is in \n`$HOME/Library/Application Support/neonmodem.toml`. On Windows, it is in \n`%AppData%\\neonmodem.toml`.\n\n\n### Systems\n\n\n#### Discourse\n\nFor connecting to a Discourse instance you'll need to have an active account on \nthat instance. *Neon Modem* will store the instance URL, username and a user \nkey, but no password.\n\n```sh\nneonmodem connect --type discourse --url https://www.keebtalk.com\n```\n\n\n#### Lemmy\n\nFor connecting to a Lemmy instance you'll need to have an active account on that \ninstance. *Neon Modem* will store the instance URL, username and password.\n\n```sh\nneonmodem connect --type lemmy --url https://lemmy.ml\n```\n\n\n#### Lobsters\n\nFor connecting to a Lobsters instance you won't need an account, as the \nintegration is read-only. *Neon Modem* will store the instance URL.\n\n```sh\nneonmodem connect --type lobsters --url https://lobste.rs\n```\n\n\n#### Hacker News\n\nFor connecting to Hacker News you won't need an account, as the integration is \nread-only.\n\n```sh\nneonmodem connect --type hackernews\n```\n\n\n### UI\n\nThe UI can be fully customized via the `Theme` section in the configuration \nfile. To reset settings, all theme related configurations can simply be deleted \nfrom the configuration.\n\n\n## Run\n\nAfter setup *Neon Modem* can be launched by calling `neonmodem` without any \narguments. It will briefly display a splash screen, then switch to the posts \nlist, which will aggregate the latest posts from all connected systems. A \nprogress icon will be visible in the header while network requests are loading.\n\n\n### Usage\n\n![Neon Modem Overdrive](neonmodem.gif)\n\n\n#### Navigation\n\nIn the posts list:\n\n- `j`: Scroll down\n- `k`: Scroll up\n- `r`/`enter`: Open selected post\n- `n`: Write new post in on the system/forum of the current selected post\n- `C-e`: Open system selector\n- `C-t`: Open forum selector\n- `esc`: Quit\n\nIn the post view dialog:\n\n- `r`: Reply to post\n- `#r`: Reply to specific comment # in post, e.g. `3r` to reply to the reply #3\n- `z`: Load older replies (if available)\n- `esc`: Close dialog\n\nIn the new post / new reply dialog:\n\n- `tab`: Switch between elements (only in new post dialog)\n- `C-s`: Submit post/reply\n- `esc`: Close dialog\n\n\n## FAQ\n\n- **Q:** The post view is really slow when using a large terminal.\\\n  **A:** Turning off image rendering will improve performance significantly on \n  very large terminal windows and can be done by setting `RenderImages = false` \n  in the configuration.\n- **Q:** Can I haz Reddit?\\\n  **A:** I won't do the heavy lifting of integrating a proprietary platform with \n  a $15 billion valuation that can't even be bothered to maintain a solid set of \n  client API libraries. If you feel like, go ahead and PR!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrusme%2Fneonmodem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrusme%2Fneonmodem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrusme%2Fneonmodem/lists"}