{"id":26652317,"url":"https://github.com/cragglesg/waveband","last_synced_at":"2025-03-25T03:49:32.166Z","repository":{"id":264482719,"uuid":"893204509","full_name":"CragglesG/waveband","owner":"CragglesG","description":"An upcoming Hack Club YSWS","archived":false,"fork":false,"pushed_at":"2025-03-18T19:27:16.000Z","size":1203,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T20:31:20.593Z","etag":null,"topics":["example-project","hackclub","website","ysws"],"latest_commit_sha":null,"homepage":"https://waveband-ysws.vercel.app","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/CragglesG.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":"2024-11-23T20:05:29.000Z","updated_at":"2025-03-18T19:27:16.000Z","dependencies_parsed_at":"2024-11-24T17:17:42.515Z","dependency_job_id":"d90c0d31-43c2-40a3-8dd8-7d845d30ecd4","html_url":"https://github.com/CragglesG/waveband","commit_stats":null,"previous_names":["cragglesg/ads-b-ysws","cragglesg/waveband"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CragglesG%2Fwaveband","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CragglesG%2Fwaveband/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CragglesG%2Fwaveband/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CragglesG%2Fwaveband/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CragglesG","download_url":"https://codeload.github.com/CragglesG/waveband/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245394766,"owners_count":20608123,"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":["example-project","hackclub","website","ysws"],"created_at":"2025-03-25T03:49:31.700Z","updated_at":"2025-03-25T03:49:32.155Z","avatar_url":"https://github.com/CragglesG.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Waveband\n\nThis is the repo for Waveband, an upcoming Hack Club YSWS where you ship a program that uses an RTL-SDR dongle, and we ship one out to you!\n\n**Interested? RSVP [here](https://airtable.com/appgaxO7wo2xGGIir/pag6C6wGzrVLAUJdL/form)**\n\n## Table of Contents\n\n- [What's a YSWS?](#whats-a-ysws)\n- [What's an RTL-SDR dongle?](#whats-an-rtl-sdr-dongle)\n- [How can I get started?](#how-can-i-get-started)\n- [Example Projects](#example-projects)\n  - [Rust1090](#rust1090)\n  - [RTL-SDR Radio](#rtl-sdr-radio)\n  - [SDR-Weather](#sdr-weather)\n- [What are the rules for submissions?](#what-are-the-rules-for-submissions)\n- [Website](#website)\n\n## What's a YSWS?\n\nA \"You Ship, We Ship\" is a type of program for teenagers run by [Hack Club](https://hackclub.com). During a YSWS, teenagers can create their own program in return for a free prize. To participate in this YSWS, you'll need to create a program that uses an RTL-SDR dongle in a unique way, and in return, we'll ship one out to you!\n\n## What's an RTL-SDR dongle?\n\nAn RTL-SDR dongle is a small USB device that can receive radio waves anywhere from 24MHz-1.7GHz in frequency. This means it can pick up on FM radio, aircraft signals, weather balloon data, phone signals, amateur radio, and more! It can even recieve TV broadcasts in Europe! The name RTL-SDR comes from the name of the chip used in these models – the RTL2823U – and the type of radio which it is: a _Software-Defined Radio_. Software-defined radios can be controlled entirely using code, and that's what makes them so powerful!\n\n## How can I get started?\n\nGetting started with Waveband and RTL-SDR is easy! For the purpose of this YSWS, you won't need to install any drivers or additional software, as you can test your program using the Waveband API (the API is currently a WIP. You'll be able to find more information about it here when it's done.) Firstly, you need to come up with an idea. This can be anything that uses an RTL-SDR dongle, as long as you can spend ~9hrs working on it. Next, you need to implement your idea! You might need to do a bit of research if you've chosen an ambitious idea or you're new to SDR. You can use any language and tools you want, as long as a large portion of code is written by you. Feel free to ask in #waveband in the [Hack Club Slack](https://hackclub.com/slack) for help if you need it. Finally, you can submit your project! You'll need to have created some sort of demo for this; if your project contains a web interface, then you should host it online. If it doesn't, a video and installation instructions should suffice.\n\n\u003c!--\n## What's the Waveband API?\n\nThe Waveband API is an easy way to test your project using data from a remote dongle. You'll need a token to use the API, which you can get by running `/waveband` anywhere in the [Hack Club Slack](https://hackclub.com/slack). If you're using Python, JavaScript, or Rust, there are libraries available to make it easy to receive data from the API. You can find them [here](api/README.md). If not, you'll have to check out the Waveband API Specification and communicate with the API yourself.\n\n### Waveband API Specification\n\nBelow is the usual exchange between the client and server. If you are interacting with the API directly, you'll need to follow these steps:\n\n1. Client connects to Server using a TCP stream.\n\n2. Server sends \"Hello\" terminated by CRLF (\"\\r\\n\") to the Client.\n\n3. Client sends \"Hi\" which is also terminated by a CRLF.\n\n4. This is followed by a byte: 0 for FM Radio data, 1 for ADS-B, and 2 for HAM Radio data.\n\n5. Client sends the length of their token followed by their token, without a terminating CRLF.\n\n6. Server assess whether the token is valid, and if it is, it sends the relevant data. If not, it terminates the connection.\n--\u003e\n\n## Example Projects\n\nWe've compiled a list of example projects that show you what kind of projects you can build for Waveband, which we've listed here.\n\n### Rust1090\n\nRust1090 is a program that complements [dump1090](https://github.com/antirez/dump1090) with additional features such as statistics tracking, a dashboard, and dark mode. it was built by @TuinboonDev, and you can check it out [here](https://github.com/TuinboonDev/rust1090).\n\n### RTL-SDR Radio\n\nRTL-SDR Radio is a cross-platform, minimalistic desktop app for listening to FM and AM radio and decoding ADS-B signals from aircraft. It was built by @njfdev and you can view its GitHub repository [here](https://github.com/njfdev/rtlsdr-radio).\n\n### SDR-Weather\n\nSDR-Weather is a program that uses an RTL-SDR dongle to receive weather data from nearby aircraft. It then presents this data using TTS (Text To Speech) and an auto-generated Leaflet.js map. It was built by @CragglesG and you can see it [here](examples/sdr-weather).\n\n## What are the rules for submissions?\n\n* You can build your submission on top of dump1090 or similar software, but most code must be written by you.\n* Your submission must have a unique idea; projects will be checked for plagiarism and fraud.\n* You may use AI tools such as GitHub Copilot to assist with debugging and autocompletion, but you may not use AI to generate large amounts of code or provide ideas.\n* Your project must be open source\n* You may not work extensively with others on your project, but you can get help if you’re stuck.\n* You must spend at least 9 hours on your project (exceptions may be made for particularly impressive projects)\n\n## Website\n\nThe Waveband website is located in the [`website` directory](website/). It's based on the [Vine](https://github.com/N1k0s1/Vine) website. You can view it [here](https://waveband-ysws.vercel.app).\n\n\u003cbr\u003e\n\n[🔼 Back to top](#waveband)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcragglesg%2Fwaveband","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcragglesg%2Fwaveband","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcragglesg%2Fwaveband/lists"}