{"id":24953898,"url":"https://github.com/razorblade23/smartdarts_v2","last_synced_at":"2026-03-10T15:03:37.246Z","repository":{"id":272234768,"uuid":"914621880","full_name":"razorblade23/SmartDarts_v2","owner":"razorblade23","description":"SmartDarts is a web-based application designed to bring smart functionality to electronic dartboards","archived":false,"fork":false,"pushed_at":"2025-02-05T15:00:16.000Z","size":948,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-08T00:31:57.069Z","etag":null,"topics":["electronics","flask-application","python3","raspberry-pi","uv","webapp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/razorblade23.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":"2025-01-10T00:50:26.000Z","updated_at":"2025-02-05T14:51:46.000Z","dependencies_parsed_at":"2025-02-03T04:16:14.629Z","dependency_job_id":null,"html_url":"https://github.com/razorblade23/SmartDarts_v2","commit_stats":null,"previous_names":["razorblade23/smartdarts_v2_sbc","razorblade23/smartdarts_v2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/razorblade23/SmartDarts_v2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razorblade23%2FSmartDarts_v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razorblade23%2FSmartDarts_v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razorblade23%2FSmartDarts_v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razorblade23%2FSmartDarts_v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razorblade23","download_url":"https://codeload.github.com/razorblade23/SmartDarts_v2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razorblade23%2FSmartDarts_v2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279453842,"owners_count":26172867,"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":"2025-10-18T02:00:06.492Z","response_time":62,"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":["electronics","flask-application","python3","raspberry-pi","uv","webapp"],"created_at":"2025-02-03T04:16:31.340Z","updated_at":"2025-10-18T02:30:28.568Z","avatar_url":"https://github.com/razorblade23.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/razorblade23/SmartDarts_v2_sbc/actions/workflows/python-app.yml/badge.svg?branch=master\u0026event=push)](https://github.com/razorblade23/SmartDarts_v2_sbc/actions/workflows/python-app.yml)\n\n\n# SmartDarts 🎯\n\nSmartDarts is a web-based application designed to bring smart functionality to electronic dartboards. It is built to run on single-board computers (SBCs) like Raspberry Pi and interfaces with the physical dartboard via GPIO pins to accurately register hits. The project aims to make local dart games more engaging and interactive.\n\n---\n\n# WARNING ⚠️\nTHIS IS A WORK IN PROGRESS AND LOTS OF FEATURES ARE MISSING.\n\n---\n\n## Features ✨\n\n### Current Capabilities: 🚀\n- **Dartboard Integration**:\n  - Uses GPIO pins to connect and interact with physical electronic dartboards. (currently only RPi supported, contributers welcome)\n  - Configurable for various dartboard models via a guided initialization process. This allows you to map specific pins to numbers on the dartboard. (not fully finished)\n\n- **Player Support**:\n  - Supports up to 8 players in a single game session. (X01 game (single out) only for now)\n  - WARNING: Lacks proper boundaries and will go beyond zero\n\n- **Game Modes**:\n  1. **X01**: \n     - 180, 301, 501, 701, 901 -\u003e Single Out\n\n- **Simulation Mode**:\n  - Its possible to run the application in simulation mode.\n  - This DOES NOT require hardware components, wiring and physical dartboard, and is used for testing the application logic.\n\n  - A script in root dir called `sim_cli.py` can be used to simulate throwing darts in specified game. Game must be initialized, players added and game started.\n\n### Work in Progress: 🛠️\n- Enhanced user interface.\n- Additional game modes and options.\n- Advanced analytics and scoring breakdowns.\n- Remote game hosting and multiplayer support.\n- Better README with more information on the topic\n\n---\n\n## Dartboard GPIO Connections 🔌\n\n### Overview\nThe dartboard connects to the GPIO pins of the SBC in a matrix configuration. \n\nEach dartboard segment (e.g., specific numbers, doubles, and triples) corresponds to a row and column connection. \n\n### INFO: Basic connection schema provided\n\n### Wiring Explanation\n1. **Matrix Layout**:\n   - The dartboard uses a matrix system where rows and columns correspond to specific GPIO pins.\n   - When a dart hits a segment, it closes the circuit at the intersection of the respective row and column.\n\n2. **Resistors**:\n   - Each column is connected via pull-down resistors to prevent floating signals and ensure stable readings.\n\n---\n\n## Getting Started 🏁\n\n### Prerequisites\nTo use SmartDarts (as intended), you will need:\n- A single-board computer (e.g., Raspberry Pi) with GPIO support\n- A compatible electronic dartboard. (nearly any can be used)\n- Basic understanding of electronics\n- Some thin wire (0.50 - 0.75mm)\n- Some resistors\n- Small solderboard (or breadboard for prototyping)\n- Basic soldering skills (if using solderboard)\n\n### Installation\nInstallation has 2 methods, using standard pip or using uv (https://docs.astral.sh/uv/)\nBoth methods are fine\n\n\n1. Clone this repository to your SBC:\n   ```bash\n\n   git clone https://github.com/razorblade23/SmartDarts_v2_sbc\n   cd SmartDarts_v2_sbc\n   \n   ```\n\n### Installation -\u003e Method: 1 💻\nInstall the necessary dependencies:\n   ```bash\n\n   sudo apt-get update\n   sudo apt-get install -y python3 python3-pip\n   python3 -m venv .venv\n   source .venv/bin/activate\n   pip install pip-tools\n   pip-compile pyproject.toml\n   pip install -r requirements.txt\n\n   ```\n### Installation -\u003e Method: 2 🖥️\n#### Requires `uv` to be installed\nInstall the necessary dependencies:\n   ```bash\n\n   uv sync\n   \n   ```\n\n\n\n3. Run the application:\n   ```bash\n\n   uv run run.py\n\n   ```\n\n4. Access the SmartDarts interface by navigating to `http://\u003cyour-sbc-ip\u003e:5000` in your browser.\n\n---\n\n## Usage 🕹️\n\n### Initial Setup 🔧\n1. Power up your SBC and connect it to the local network.\n2. Launch the application and configure your dartboard with guided proccess.\n3. Once configured, you can select a game mode and add players to begin playing.\n\n### Initial setup without SBC (Simulation mode)\n- A script in root dir called `sim_cli.py` can be used to simulate throwing darts in specified game. \n- You can simulate throwing darts by entering `game ID` which is shown on the playfield\n- Darts are entered in format: [`M:S`] -\u003e where `M` is multiplier and `S` is score\n* Examples: `D:8`, `T:10`, `S:25`, `D18`, `T17`, etc...\n- You can enter only one dart at a time (to simulate real darts game)\n\n### Simulation mode video example\n\n[Watch the video](https://drive.google.com/file/d/1RKydZ4Jgd9roUBoIV6txFK-O_1VpIAq-/view?usp=drivesdk)\n---\n\n## Contributing 🤝\nContributions are welcome! To contribute:\n1. Fork this repository.\n2. Create a branch for your feature or bug fix:\n3. Commit your changes:\n4. Push to your branch and submit a pull request.\n\n---\n\n## License 📜\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n## Acknowledgements 🙏\n- The Raspberry Pi community for GPIO libraries and support.\n- Dart enthusiasts worldwide for game inspiration.\n\n---\n\nEnjoy playing darts with SmartDarts!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazorblade23%2Fsmartdarts_v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazorblade23%2Fsmartdarts_v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazorblade23%2Fsmartdarts_v2/lists"}