{"id":22208293,"url":"https://github.com/steenhansen/repository-list","last_synced_at":"2026-01-05T16:41:05.520Z","repository":{"id":38071462,"uuid":"504651500","full_name":"steenhansen/repository-list","owner":"steenhansen","description":"Repository explanations with links to GitHub, webpages, NPM, containers","archived":false,"fork":false,"pushed_at":"2024-05-08T22:53:20.000Z","size":173714,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-25T04:36:51.831Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/steenhansen.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-17T19:33:46.000Z","updated_at":"2024-05-08T22:53:23.000Z","dependencies_parsed_at":"2023-12-22T00:49:16.991Z","dependency_job_id":"12f91057-a0cb-4465-b283-d354865f1a24","html_url":"https://github.com/steenhansen/repository-list","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/steenhansen/repository-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steenhansen%2Frepository-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steenhansen%2Frepository-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steenhansen%2Frepository-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steenhansen%2Frepository-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steenhansen","download_url":"https://codeload.github.com/steenhansen/repository-list/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steenhansen%2Frepository-list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28217664,"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","status":"online","status_checked_at":"2026-01-05T02:00:06.358Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-12-02T19:17:24.209Z","updated_at":"2026-01-05T16:41:05.493Z","avatar_url":"https://github.com/steenhansen.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ca name=\"phone-recipes\"\u003e\u003c/a\u003e\n\n\u003cbr\u003e \n\n### Phone-Recipes app for mobile or browser.\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![](images/android-web-combo.jpg)\n\n| |Repo|Site|Shared Tech|Different Tech| CI/CD  \u0026amp; Tests|\n|-|----|----|----|-----|---|\n|**Android**| [react-native\u003cbr\u003e-phone-recipes][rec_m] | [play.google.com\u003cbr\u003e/store/apps][rec_a]  | React-Hooks, OAuth2, Redux,\u003cbr\u003eMongoDB, [Storybook](https://6269af43d179dc004af9a1ec-ltzwmhwlbd.chromatic.com/?path=/story/pages-minimalpage--minimal-page)|**React Native** |Build, test, deploy\u003cbr\u003e backend [CI/CD](https://github.com/steenhansen/type-czech-phone-recipes/actions/runs/8317745868/job/23219385924) |\n|**Web**| [type-czech\u003cbr\u003e-phone-recipes][rec_g]   | [phone-recipes.\u003cbr\u003eherokuapp.com][rec_w] |  React-Hooks, OAuth2, Redux,\u003cbr\u003eMongoDB, [Storybook](https://6269af43d179dc004af9a1ec-ltzwmhwlbd.chromatic.com/?path=/story/pages-minimalpage--minimal-page)| **Node.js**,\u003cbr\u003evite-plugin-ssr|Mocha-JS tests,\u003cbr\u003e [Selenium-E2E](https://github.com/steenhansen/type-czech-phone-recipes/tree/main/test-selenium),\u003cbr\u003e\u0026amp; Vitest-JSX |\n\n\n\n[ppd_g]: https://github.com/steenhansen/python-podcast-downloader\n[gpd_g]: https://github.com/steenhansen/go-podcast-downloader#screen-shot\n[gdo_w]: https://github.com/steenhansen/go-podcast-downloader/raw/main/Gui-Podcast-Downloader.exe.zip\n\n[rpd_g]: https://github.com/steenhansen/rust-podcast-downloader#s\n\n[esg_g]: https://github.com/steenhansen/elixir-liveview-snake#s\n\n[esg_w]: https://evening-eyrie-25210-f2edb2eac607.herokuapp.com/Projects-Game/Players-Name\n\n\u003cbr\u003e\n\n\n\n\n| Projects |   |\n| -        | - |\n| **Rust**: TUI, Ratatui \u003cbr\u003e [GIT: rust-podcast-downloader][rpd_g] \u003cbr\u003e\u003cbr\u003eMouse driven podcast downloader with Terminal User Interface| [\u003cimg src=\"./images/ratatui-run.gif\" height=\"100\"\u003e](./images/ratatui-run.gif) | \n| **Elixir** -  Phoenix, LiveView, SVG\u003cbr\u003e [GIT : elixir-liveview-snake][esg_g]  \u003cbr\u003e\u003cbr\u003e[LIVE SITE : multi-player multi-game online snake game ][esg_w]|  [\u003cimg src=\"./images/list-elixir.webp\" height=\"100\"\u003e](https://evening-eyrie-25210-f2edb2eac607.herokuapp.com/images/list-elixir.webp) | \n\n\n\n\n\n| Functional Repos | Site                                                  | Tech                                                                                                                                                                                                                                                                                             |About|Tests|\n| ------------------------------------ | -------------------------------------------------------- | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------- | --|\n| [rust-podcast-downloader][rpd_g] | | Rust | Rust podcast downloader with mouse driven Terminal User Interface | \n| [elixir-liveview\u003cbr\u003e-snake][esg_g]    | [evening-eyrie.herokuapp.com][esg_w]    | Elixir, Phoenix, LiveView, SVG                     | Elixir multi-player online snake game with minimal Javascript | \n| [python-podcast\u003cbr\u003e-downloader][ppd_g]    |     | Python                      | Python podcast downloader for Windows console |\n| [go-podcast\u003cbr\u003e-downloader][gpd_g]    | [Gui-Podcast-Downloader.exe.zip][gdo_w]    | Go channels, Fyne,  goroutines, and waitgroups                      | Go podcast downloader for Windows console and Gui |20\n| [type-czech][tcz_g]                  | [npmjs.com/package\u003cbr\u003e/type-czech][tcz_n]                                     | TypeCzech, NPM                                                                                                                                                                                                                                    | Javascript runtime type checking à la clojure.spec with a tutorial of [75 pages of live editable examples](https://jsfiddle.net/steen_hansen/1Lshcept/?Example-Contents) on JsFiddle.                                                                |[2456](https://github.com/steenhansen/type-czech#run-2444-tests)\n| [type-czech\u003cbr\u003e-always-on][aon_g]        | [type-czech-always-on\u003cbr\u003e.onrender.com][aon_w]\u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]\u003c/sup\u003e | TypeCzech, Ajax        | Type checking Roman, Word, Float, and Integer ajax variables in browser and server                                                                                             |\n| [type-czech\u003cbr\u003e-canonical][can_g]        | [type-czech-canonical\u003cbr\u003e.onrender.com][can_w]\u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]\u003c/sup\u003e | TypeCzech                                     | Simplest run time type checking example                                                 |\n| [rxjs-breakout][brk_g]               | [github.io/gh-pages][brk_w]                                 | RxJS, canvas, immutablejs   | Online breakout game  |\n| [crash-sms][sms_g]                   |                           | Clojure, SMS, DynamoDB   | Old website monitor that ran on Heroku  |\n| [rxjs-label\u003cbr\u003e-maker][lbl_g]            | [github.io/\u003cbr\u003erxjs-label-maker][lbl_w]                      | RxJS \u0026amp; Snap-Shot Tests | RxJS interface with validation example         |\n| [rxjs-drag\u003cbr\u003e-n-drop][drg_g]            | [github.io/\u003cbr\u003erxjs-drag-n-drop][drg_w]                       | RxJS         | Basic RxJs drag-n-drop example                                                                                                                                                                                                                                                                                          |\n|                                      | [codepen.io/\u003cbr\u003esteen-hansen][aut_c]        | RxJS Subjects \u0026amp; BehaviorSubject              | RxJS log in example                                                                                                                                                                                                                                                       |     | [clojure-text-diff ][ctd_g] |     | Clojure | Clojure |\n| [Either\u003cbr\u003e-Monad][mon_g]                |                                                          | Either Monad                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                                      |\n| [Validation\u003cbr\u003e-Monad][val_g]            |                                                          | Validation Monad                                                                                                                                                                                                                                                                                         |                                                                                                                                                                                                                     |\n| [Ramda-\u003cbr\u003eTransducers ][ram_g]          |                                                          | Ramda Transducers                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                        |\n| [React Native\u003cbr\u003eGoogle Signin\u003cbr\u003eVerified  ][rnt_g]          |                                                          | Google Signin, React Native                                                                                                                                                                       | Guide for using Google Signin with React Native                                                                                                                                                                                                                                                                                   |\n\n[rec_a]: https://play.google.com/store/apps/details?id=com.fonecook3\n[rec_m]: https://github.com/steenhansen/react-native-phone-recipes#fast-start\n[rec_g]: https://github.com/steenhansen/type-czech-phone-recipes#fast-start\n[rec_w]: https://phone-recipes.herokuapp.com/steenhansen1942/gmail.com\n[tcz_g]: https://github.com/steenhansen/type-czech\n[tcz_n]: https://www.npmjs.com/package/type-czech\n[aon_g]: https://github.com/steenhansen/type-czech-always-on\n[aon_w]: https://type-czech-always-on.onrender.com/#freehosting-wait-for-at-least-150-seconds\n\n[can_g]: https://github.com/steenhansen/type-czech-canonical\n[can_w]: https://type-czech-canonical.onrender.com/#freehosting-wait-for-at-least-150-seconds\n\n\n[brk_g]: https://github.com/steenhansen/rxjs-breakout\n[brk_w]: https://steenhansen.github.io/gh-pages/\n[sms_g]: https://github.com/steenhansen/crash-sms\n[lbl_g]: https://github.com/steenhansen/rxjs-label-maker\n[lbl_w]: https://steenhansen.github.io/rxjs-label-maker/\n[drg_g]: https://github.com/steenhansen/rxjs-drag-n-drop\n[drg_w]: https://steenhansen.github.io/rxjs-drag-n-drop/\n[aut_c]: https://codepen.io/steen-hansen/pen/XWEXYgQ\n[ctd_g]: https://github.com/steenhansen/clojure-text-diff\n[mon_g]: https://gist.github.com/steenhansen/f9a9e9eee2fd563e378d8ddfce98cf0a\n[val_g]: https://gist.github.com/steenhansen/5a0dbad5388a79ebb900b257fc7a129c\n[ram_g]: https://gist.github.com/steenhansen/3e8c320725c6196c9a259661473dec42\n[php_a]: https://gist.github.com/steenhansen/6b15623db6139c429c4fdf6f46ae9745\n[rnt_g]: https://github.com/steenhansen/react-native-google-signin-verified\n\n| Docker \u0026amp; Database Repos | Site                                        | Tech                | About                                                      |\n| ----------------------------------------- | ---------------------------------------------- | ---------------------|------------------------------------------------------------ |\n| [sffaudio-search-docker-compose ][sli_g]  | [45.79.183.31/\u003cbr\u003e?author=isaac-asimov][sli_w]       | Docker-Compose, Node.js, Neo4j-Graph-DB, SVG, SPA, REST API                | Live Neo4j GraphDB running on Linode. API handles [Multiple authors][sli_m], [PDFs, and MP3s][sli_r]. Was second attempt to replace search on [sffaudio.com](sffaudio.com), a WordPress site.              |\n| [sffaudio-search-docker-run ][swi_g]      | [hub.docker.com/\u003cbr\u003er/steenhansen/\u003cbr\u003esff-audio-search][swi_d]                          | Docker-Run, Node.js, Neo4j-Graph-DB, SVG, SPA             | Windows or Linode example      |\n| [sffaudio-search-kubernetes][sku_g]       | [hub.docker.com/\u003cbr\u003er/steenhansen/\u003cbr\u003esff-audio-kube][sku_d]                          | Kubernetes, Node.js, Neo4j-Graph-DB, SVG, SPA | Linode example  |\n| [sffaudio-graph-ql ][sgr_g]               | [sffaudio-graph-ql\u003cbr\u003e.onrender.com][sgr_w] \u003cbr\u003e \u003csup\u003e[150sec free hosting cold start] | GraphQL, MongoDB    | 'Arthur C. Clark' GraphQL media via '\u0026#9658;' run button   |\n|                                           | [sffaudio-graph-ql\u003cbr\u003e.onrender.com][sgr_j]\u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]     | GraphQL, MongoDB                  | JSON output. \u003cbr\u003e\u003cbr\u003e First attempt to replace search on [sffaudio.com](sffaudio.com), a WordPress site.\n\n[sli_g]: https://github.com/steenhansen/sffaudio-search-docker-compose\n[sli_w]: http://45.79.183.31/?author=isaac-asimov\n[sli_m]: http://45.79.183.31/?book=sci-fi-private-eye\u0026author=isaac-asimov,robert-silverberg,poul-anderson,fred-saberhagen,edward-wellen,philip-k-dick\n[sli_r]: http://45.79.183.31/?book=beyond-lies-the-wub\u0026author=philip-k-dick\u0026view=rsd\u0026choice=1\n[swi_g]: https://github.com/steenhansen/sffaudio-search-docker-run\n[swi_d]: https://hub.docker.com/r/steenhansen/sff-audio-search\n[sku_g]: https://github.com/steenhansen/sffaudio-search-kubernetes\n[sku_d]: https://hub.docker.com/r/steenhansen/sff-audio-kube\n[sgr_g]: https://github.com/steenhansen/sffaudio-graph-ql\n[sgr_w]: https://sffaudio-graph-ql.onrender.com/graphiql?operationName=serch_ql\u0026query=query%20serch_ql(%24search_parameter%3A%20String!)%20%7B%0A%20%20search_site_content(search_text%3A%20%24search_parameter)%20%7B%0A%20%20%20%20%20%20...%20on%20ArticlePage%7B%20ID%20headline%20article_post%20%20%20%7D%2C%0A%20%20%20%20...%20on%20MentionPage%7B%20ID%20headline%20mention_post%20%20%20%7D%2C%0A%20%20%20%20...%20on%20RsdMedia%20%7B%20ID%20rsd_post%20resource%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20book%7B%20author%20title%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20podcast%20%7B%20description%20mp3%20length%20episode%20%7D%20%20%20%7D%2C%0A%20%20%20%20...%20on%20SffAudioMedia%20%7B%20ID%20sffaudio_post%20narrator%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20possiblebook%7B%20author%20title%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20podcast%20%7B%20description%20mp3%20length%20episode%20%7D%20%20%20%7D%0A%20%20%7D%0A%7D%0A\u0026variables=%7B%0A%20%20%22search_parameter%22%3A%20%22Clarke%22%0A%7D\n\n\n[sgr_j]: https://sffaudio-graph-ql.onrender.com/graphql?operationName=serch_ql\u0026query=%0Aquery%20serch_ql(%24search_parameter%3A%20String!)%20%7B%0A%20search_site_content(search_text%3A%20%24search_parameter)%20%7B%0A%20...%20on%20ArticlePage%7B%20ID%20headline%20article_post%20%7D%2C%0A%20...%20on%20MentionPage%7B%20ID%20headline%20mention_post%20%7D%2C%0A%20...%20on%20RsdMedia%20%7B%20ID%20rsd_post%20resource%0A%20book%20%7B%20author%20title%20%7D%0A%20podcast%20%7B%20description%20mp3%20length%20episode%20%7D%20%7D%2C%0A%20...%20on%20SffAudioMedia%20%7B%20ID%20sffaudio_post%20narrator%20about%0A%20possiblebook%7B%20author%20title%20%7D%0A%20podcast%20%7B%20description%20mp3%20length%20episode%20%7D%20%7D%2C%0A%20...%20on%20PdfMedia%20%7B%20ID%0A%20book%20%7B%20author%20title%20%7D%0A%20issues%20%7B%20url%20publisher%20pages%20%7D%20%7D%0A%20%7D%0A%7D%20\u0026variables=%7B%20%22search_parameter%22%3A%20%22clarke%22%7D\n\n| Object-Oriented Repos                  | Site                                                                 | Tech                    | About                                                  |Tests\n| ----------------------------------- | ----------------------------------------------------------------------- | ----------------------------------|-------------------------------------------- |--|\n| [podcast-downloader][dsk_g]         | [podcast-downloader\u003cbr\u003e-exes.zip][dsk_w]                                           | Lazarus/Delphi RAD for Windows                   |Desktop exe podcast downloader    | 22\n| [electric-snakes][elc_g]            | [electric-snakes.\u003cbr\u003eonrender.com][elc_w] \u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]\u003c/sup\u003e               | Node.js, Typescript, websockets, Redux, immutable.js                           | Online Multi-Computer Snake Game, server decides which browser wins |\n| [react-hover-grid][rhg_g]           | [npmjs.com/package/\u003cbr\u003ereact-hover-grid][rhg_n]                                  | SSR React                                         | Image grids that automatically resize to match browser width  |\n|    [react-hover-grid-examples][rhg_e]                                  | [react-hover-grid\u003cbr\u003e.onrender.com][rhg_w] \u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]\u003c/sup\u003e           |        GraphicsMagick, Sharp           |Nodejs Image processing |\n| [gmap-dragdrop-react][map_g]        | [npmjs.com/package/\u003cbr\u003egmap-dragdrop-react][map_n]                                     | React       |React component enabling Drag\u0026amp;Drop\u003cbr\u003ebetween \u0026amp; on Google Maps |\n|   [gmap-dragdrop-examples][map_e]                                | [gmap-dragdrop-examples\u003cbr\u003e.onrender.com][map_w] \u003cbr\u003e \u003csup\u003e[150sec free hosting cold start]\u003c/sup\u003e             | React                       | Example of Drag\u0026amp;Drop\u003cbr\u003e between \u0026amp; on Google Maps |\n| [Isomorphic-React-on-Heroku][iso_g] | [sffaudio.herokuapp\u003cbr\u003e.com/podcast][pod_h] |   Prototypal Inheritance, SSR, MongoDb | Fast loading, searchable, and sortable podcast list for WordPress inclusion|\n|                                     | [sffaudio.herokuapp\u003cbr\u003e.com/rsd][rsd_h]      | Prototypal Inheritance, SSR, MongoDb  | Fast loading, searchable, and sortable podcast list for WordPress inclusion|\n| [php-google-api-example][php_g]     |                             | Deprecated PHP                   | Google Sheets as user authentication and authorization database for a WordPress site|\n| [sffaudio-podcasts-angular][ang_g]  |            | Deprecated Angular                                                | WordPress page replaced by React   |\n\n[pod_h]: https://sffaudio.herokuapp.com/podcast/table\n[rsd_h]: https://sffaudio.herokuapp.com/rsd/table\n[pod_s]: https://docs.google.com/spreadsheets/d/1cWtA1AaY83cBuU_6vt64adDeR-dfT-X1U5VgvCRVMAg/edit#gid=0\n[rsd_s]: https://docs.google.com/spreadsheets/d/1VFMgWy6wmTkFIpeNW-NkZdWmpz5iZcuULgMpjn8_QgU/edit#gid=0\n[pod_w]: https://www.sffaudio.com/the-sffaudio-podcast/\n[rsd_w]: https://www.sffaudio.com/reading-short-and-deep/\n[elc_g]: https://github.com/steenhansen/electric-snakes\n[elc_w]: https://electric-snakes.onrender.com/create-game/#freehosting-wait-for-at-least-150-seconds\n[dsk_g]: https://github.com/steenhansen/podcast-downloader#screen-shot\n[dsk_w]: https://github.com/steenhansen/podcast-downloader/raw/master/podcast-downloader-exes.zip\n[rhg_g]: https://github.com/steenhansen/react-hover-grid\n[rhg_n]: https://www.npmjs.com/package/react-hover-grid\n[rhg_w]: https://react-hover-grid.onrender.com/#freehosting-wait-for-at-least-150-seconds\n[rhg_e]: https://github.com/steenhansen/react-hover-grid-examples\n[map_g]: https://github.com/steenhansen/gmap-dragdrop-react\n[map_n]: https://www.npmjs.com/package/gmap-dragdrop-react\n[map_w]: https://gmap-dragdrop-examples.onrender.com/maps#freehosting-wait-for-at-least-150-seconds\n[map_e]: https://github.com/steenhansen/gmap-dragdrop-examples\n[iso_g]: https://github.com/steenhansen/Isomorphic-React-on-Heroku\n[php_g]: https://github.com/steenhansen/php-google-api-example\n[ang_g]: https://github.com/steenhansen/sffaudio-podcasts-angular\n\n\u003cbr\u003e\u003cbr\u003e\n [150sec free hosting cold start] indicates that the site is hosted for free on [render.com](https://render.com/). Free sites on render.com take 150 seconds or more to start.\n\n\n---\n\n[Hansen Displays, 1/3 Owner](https://web.archive.org/web/20110204235449/http://hansendisplays.com/) - [Post Card](/images/hansen-displays-photo.jpg) - [Price List](/images/hansen-displays-brochure_us.pdf)\n\n[Persistant RAM Cartridge, 1/3 Owner](https://atariage.com/forums/topic/287343-the-persistent-ram-cartridge/) - [Persistant RAM Image](/images/persistant-ram-front.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteenhansen%2Frepository-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteenhansen%2Frepository-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteenhansen%2Frepository-list/lists"}