{"id":29028289,"url":"https://github.com/forceh91/retro-env-can-weather-chan","last_synced_at":"2026-03-01T22:02:10.396Z","repository":{"id":37523019,"uuid":"391239654","full_name":"Forceh91/retro-env-can-weather-chan","owner":"Forceh91","description":"Retro Environment Canada Weather Channel for your browser","archived":false,"fork":false,"pushed_at":"2026-02-23T22:29:09.000Z","size":7496,"stargazers_count":43,"open_issues_count":16,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-24T05:08:53.074Z","etag":null,"topics":["cable","cable-tv","canada","crawler","environment-canada","javascript","nodejs","react","recreation","retro","simulator","typescript","weather","weather-app","weather-channel","weather-conditions","weather-forecast","winnipeg"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/user/forceh91/live","language":"TypeScript","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/Forceh91.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"forceh","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-07-31T02:47:33.000Z","updated_at":"2026-02-23T22:27:03.000Z","dependencies_parsed_at":"2024-01-05T00:13:35.296Z","dependency_job_id":"a84141fd-f509-4dce-b648-f1790b9ded8d","html_url":"https://github.com/Forceh91/retro-env-can-weather-chan","commit_stats":{"total_commits":827,"total_committers":4,"mean_commits":206.75,"dds":0.5187424425634825,"last_synced_commit":"5e310f1b10581ab2175d8893bc4614c5e5b6df6d"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/Forceh91/retro-env-can-weather-chan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Forceh91%2Fretro-env-can-weather-chan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Forceh91%2Fretro-env-can-weather-chan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Forceh91%2Fretro-env-can-weather-chan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Forceh91%2Fretro-env-can-weather-chan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Forceh91","download_url":"https://codeload.github.com/Forceh91/retro-env-can-weather-chan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Forceh91%2Fretro-env-can-weather-chan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29986241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T21:06:37.093Z","status":"ssl_error","status_checked_at":"2026-03-01T21:05:45.052Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cable","cable-tv","canada","crawler","environment-canada","javascript","nodejs","react","recreation","retro","simulator","typescript","weather","weather-app","weather-channel","weather-conditions","weather-forecast","winnipeg"],"created_at":"2025-06-26T07:06:14.319Z","updated_at":"2026-03-01T22:02:10.360Z","avatar_url":"https://github.com/Forceh91.png","language":"TypeScript","funding_links":["https://ko-fi.com/forceh"],"categories":[],"sub_categories":[],"readme":"# Retro Envrionment Canada Weather Channel\n\nThis project is a simulator of the Environemnt Canada Weather Channel that Winnipeg broadcast via cable from the 80s to the early 2000s. This project aims to recreate the mid-90s version of the channel.\n\n## Features\n\nThis project includes all of the features from the original weather channel such as:\n\n- Weather alerts/warnings/watches issued by ECCC (based off weather station lat/long)\n- Current conditions and forecast\n- 5 day outlook\n- Temperature records for last year, normal, and all-time\n- Air Quality Health Index readings and warnings\n- Province temperature and precipitation tracking\n- Conditions across Canada (MB, West, East)\n- Conditions across the US\n- Sunspot forecats\n- Stats for the current day (sunrise/set, Canada hot/cold spots) and total precipitation for the current season\n- Stats for last month\n- Windchill (in the old watts per square metre format)\n- Flavours\n\nSome of the above features are season/time of month specific and will automatically come and go as required\n\n## Project Setup\n\n### Dependencies\n\nThis project has a few dependencies that need downloading and installing before you can use it\n\n- Internet connection\n- [Node v18 or above](https://nodejs.org/en)\n- [Yarn package manager](https://yarnpkg.com/)\n\n### Installation\n\nOnce you have download (and extracted) either the repository or the latest release you need to open your terminal window and navigate to the folder this project is based in and install the required Node modules\n\n```\nyarn install\n```\n\n## Running the simulator\n\n### End-users\n\nIf you have download the project from the releases page then all you need to do is run the following command in your terminal window.\n\n```\nyarn start\n```\n\nIf successful you should see something similar to below in your terminal window\n\n```\nyarn run v1.22.10\n$ tsx src/server.ts\n[2023-10-14 13:34:52] [CONFIG] Loading config file (./cfg/rwc-config.json) ...\n[2023-10-14 13:34:52] [CONFIG] Loaded weather channel. Location: Toronto, ON (s0000458)\n[2023-10-14 13:34:52] [CONFIG] Checking available flavours from cfg/flavours\n[2023-10-14 13:34:52] [CONFIG] Loading flavour (screen rotation) stats\n[2023-10-14 13:34:52] [FLAVOUR_LOADER] Successfully loaded flavour Stats\n[2023-10-14 13:34:52] [CONFIG] Loading crawler messages from ./cfg/crawler.txt\n[2023-10-14 13:34:52] [CONFIG] Loaded 4 crawler messages\n[2023-10-14 13:34:52] [CONFIG] Loading playlist from music\n[2023-10-14 13:34:52] [HISTORICAL_TEMP_PRECIP] Initializing historical data for station ID: 51459\n[2023-10-14 13:34:52] [CLIMATE_NORMALS] Initializing climate normals for station ID: 5051\n[2023-10-14 13:34:52] [CONDITIONS] Started AMQP conditions listener\n[2023-10-14 13:34:53] [PROVINCETRACKING] Loading province tracking from db/province_tracking.json\n[2023-10-14 13:34:53] [PROVINCETRACKING] Loaded province tracking from json\n[2023-10-14 13:34:53] [PROVINCETRACKING] Tracking 6 locations across the province\n[2023-10-14 13:34:53] [PROVINCETRACKING] Switching over tracking and setting display value\n[2023-10-14 13:34:53] [PROVINCETRACKING] Updating data for stations\n[2023-10-14 13:34:53] [ALERT_MONITOR] Started AMQP alerts listener\n[2023-10-14 13:34:53] [ALERT_MONITOR] Loading stored CAP files\n[2023-10-14 13:34:53] [CANADA_HOT_COLD_SPOTS] Updating canada/provincial hot/cold spots\n[2023-10-14 13:34:53] [USA] Fetching latest observations\n[2023-10-14 13:34:53] [AQHI] Air quality will be tracked\n[2023-10-14 13:34:53] [AQHI] Fetching latest AQHI observation\n[2023-10-14 13:34:53] [SERVER] Starting RWC...\n[2023-10-14 13:34:53] [STORAGE] Validating directory structure\n[2023-10-14 13:34:53] [STORAGE] Validated directory structure\n[2023-10-14 13:34:53] [SERVER] Started RWC\n```\n\n#### Using Docker\n\nClone the repo locally, then run:\n\n```bash\ndocker-compose up -d\n```\n\nThis will use the provided `Dockerfile` to build the container and run the app.\n\nThe configuration (cfg) will, by default, be stored within a docker volume. You may update the `docker-compose.yml` file to instead store it in a bind mount (in the host's file system) so that the config is more portable. It is also possible to pass a music directory into the container using the same method. The `docker-compose.yml` file has examples of each.\n\nIt is recommended to store these (cfg, music) outside of the cloned respository.\n\n### Developers\n\nFor those of you wishing to do development work there is hot-reload available for the simulator. You will need multiple terminal windows open for this.\n\nBackend work:\n\n```\nyarn dev\n```\n\nDisplay work:\n\n```\nyarn display\n```\n\n### Port configuration\n\nBy default the simulator will run on port 8600, however if you find it is already in use you can pass the `--port \u003cport number\u003e` flag when doing either `yarn start` or `yarn dev`.\n\n## Channel Configuration\n\nBy default no configuration is required and the simulator will automatically point to Winnipeg as the main weather channel. However if you want to change the main station or go more in-depth and fully utilize the simulator you should navigate to the [configuration screen](http://localhost:8600/config).\n\nThis will allow you to setup extra features such as custom screen rotation (flavours), Air Quality readings, rejecting in-hour condition updates, alternative temperature record source, crawler messages, and more.\n\n### Automatic reload\n\nWhen your config is saved the updated changes should reflect on the display no more than 5 minutes later (including playlist changes).\n\n### Setting up a playlist\n\nWhen the simulator runs for the first time you will notice that a `music` directory is created for you. If you wish to update your playlist simply add/remove files to the `music` directory add then scroll to \"Playlist\" in the \"Display\" tab on the [configuration screen](http://localhost:8600/config). Once there you will see a \"Regenerate playlist\" button. Depending on the size of your playlist this may take a few seconds.\n\n## Viewing the channel\n\nThe output of the simulator can be accessed via [the browser](http://localhost:8600) and for the best experience you should set your browser window to a resolution of 640x480. The simulator will always render at a resolution of 640x480 regardless of browser window size.\n\n## Thanks/Props/Credits\n\n- **Environment and Climate Change Canada** ([Website](https://www.canada.ca/en/services/environment/weather.html)): API, AMQP, and documentation\n- **@wpgne** ([Mastodon](https://mastodon.social/@wpgne), [YouTube](https://www.youtube.com/@wpgne)): Source material and input throughout the development of the project\n- **@drdevlin** ([GitHub](https://github.com/drdevlin)): [ec-weather-js](https://github.com/drdevlin/ec-weather-js) project\n\n## Support the project\n\n- [@matthdn91](https://threads.net/@matthdn91) on Threads\n- Follow us on on Mastodon: [@ecweatherchannel](https://thecanadian.social/@ecweatherchannel), [@forceh91](https://techhub.social/@forceh91)\n- Donations via [ko-fi](https://ko-fi.com/forceh)\n- 24/7 livestreams for Winnipeg and Toronto on [YouTube](https://www.youtube.com/@Forceh91/streams)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforceh91%2Fretro-env-can-weather-chan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforceh91%2Fretro-env-can-weather-chan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforceh91%2Fretro-env-can-weather-chan/lists"}