Tools: β™ŸοΈ I built a Free API for Go (Baduk) Problems with 49k+ puzzles

Tools: β™ŸοΈ I built a Free API for Go (Baduk) Problems with 49k+ puzzles

Source: Dev.to

πŸ’‘ What is Go Problem API? ## πŸ› οΈ The Tech Stack ## πŸš€ How to use it ## πŸ”— Try it out ## πŸ’­ Feedback? Hello Dev Community! πŸ‘‹ I'm a developer who loves the board game Go (also known as Baduk or Weiqi). Recently, I wanted to build a simple app to practice "Tsumego" (Life & Death problems), but I realized there wasn't an easy-to-use API that provided a large dataset of problems for developers. Most resources were either locked behind legacy websites or required complex parsing. So, I decided to build my own and open it up for everyone! πŸš€ It is a free RESTful API that serves over 49,500+ Go problems. It's designed for developers who want to build: For those interested in how it was built, I used: I optimized the queries to ensure the latency remains low (usually under 20ms). It's hosted on RapidAPI. You can fetch a random problem easily. Here is a quick example using JavaScript (Fetch): You can test the endpoints, see the response format, and get your free API key directly on RapidAPI: πŸ‘‰ Get started with Go Problem API This is a side project I built to help the Go/Baduk community. I'm actively working to improve it, so your feedback is incredibly valuable. Please let me know in the comments below! If you build something cool with it, drop a linkβ€”I’d love to see it. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse CODE_BLOCK: const url = '[https://go-problem-api.p.rapidapi.com/random](https://go-problem-api.p.rapidapi.com/random)'; const options = { method: 'GET', headers: { 'x-rapidapi-key': 'YOUR_API_KEY_HERE', 'x-rapidapi-host': 'go-problem-api.p.rapidapi.com' } }; try { const response = await fetch(url, options); const result = await response.json(); console.log(result); } catch (error) { console.error(error); } Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: const url = '[https://go-problem-api.p.rapidapi.com/random](https://go-problem-api.p.rapidapi.com/random)'; const options = { method: 'GET', headers: { 'x-rapidapi-key': 'YOUR_API_KEY_HERE', 'x-rapidapi-host': 'go-problem-api.p.rapidapi.com' } }; try { const response = await fetch(url, options); const result = await response.json(); console.log(result); } catch (error) { console.error(error); } CODE_BLOCK: const url = '[https://go-problem-api.p.rapidapi.com/random](https://go-problem-api.p.rapidapi.com/random)'; const options = { method: 'GET', headers: { 'x-rapidapi-key': 'YOUR_API_KEY_HERE', 'x-rapidapi-host': 'go-problem-api.p.rapidapi.com' } }; try { const response = await fetch(url, options); const result = await response.json(); console.log(result); } catch (error) { console.error(error); } - Go training apps - Daily puzzle widgets - Bots or AI training sets - Backend: Node.js with Express - Database: PostgreSQL (hosted on Neon) - API Gateway: RapidAPI (for management and analytics) - Does the JSON structure make sense? - Are there specific features you'd like to see? - Did you run into any issues?