Digs:一款离线优先的iOS应用,用于浏览你的Discogs黑胶唱片收藏。
Digs: iOS app that syncs your Discogs collection and lets you browse it offline

原始链接: https://lustin.fr/blog/building-digs/

## Digs:一个简单的Discogs唱片库浏览器 对官方Discogs应用程序在移动设备上浏览的局限性感到沮丧,一位开发者创建了**Digs**,一个为黑胶唱片收藏家设计的精简移动应用程序。Digs专注于快速且*离线*访问您现有的Discogs唱片库,组织方式与您在文件夹中的结构完全一致。 该应用程序会将您的Discogs库同步到您的手机,允许您按文件夹浏览、搜索,甚至有一个“随机选择器”来重新发现唱片。它优先考虑速度和简洁性,省略了诸如愿望单管理和市场访问等功能。 Digs使用React Native、TypeScript和SQLite构建,利用巧妙的“令牌桶”速率限制器来规避Discogs的API限制。一个关键的设计原则是“本地优先”架构,确保所有数据都直接从手机数据库读取,以实现即时访问。开发者利用Claude Code进行快速代码生成,但强调产品决策和完善花费了最多的时间。 Digs目前在App Store上免费提供,没有广告或跟踪。

对不起。
相关文章

原文

2026-03-22

I’ve been collecting vinyl for years and Discogs is where I catalog everything. But browsing my collection on the go never really worked for me. The official app is quite full of features, but some basics were missing for me: folder navigation, offline mode. I wanted something simpler, fast and offline to dig through my records, organized the way I already organize them on my shelves.

So I built Digs.

What it does

It syncs your entire collection to your phone and lets you browse it offline. You still manage everything on Discogs. Digs just gives you a fast, mobile copy to dig through.

After the initial sync, your whole collection is available offline. You can browse by folder, search across artists, albums and labels, or hit the random picker to rediscover something you forgot you owned. Subsequent syncs are incremental – only what’s changed gets fetched.

I built this for a specific use case. If you organize your records into folders and want to quickly browse them without signal, it might be useful. If you want wantlist management, marketplace features, and digging through the many versions of a release this isn’t that.

The tech

It’s a React Native app built with Expo and TypeScript. Data lives in SQLite, with Drizzle ORM on top. Authentication goes through the official Discogs API using OAuth, with tokens stored in the iOS Keychain.

The sync pipeline was more interesting to build. It starts by fetching your folder structure, then does a paginated download of every release in your collection – artist, title, year, format, thumbnail. Once that’s done you can already browse everything. From there it progressively fetches full details for each release (tracklist, high-res images, ratings, videos) and caches images to disk. Each phase can be paused or cancelled, and the whole thing can run as a background task.

Rate limiting

The rate limiter gave me the most trouble. Discogs allows 60 requests per minute. The naive approach, counting your requests and stopping at 60, doesn’t work when you have multiple requests in flight. By the time request 58 comes back and tells you you’ve hit the limit, requests 59 through 65 are already on their way.

The solution I found is a token-bucket limiter that accounts for in-flight requests. It watches the X-Discogs-Ratelimit-Remaining header on every response, tracks how many requests are currently pending, and adjusts. When tokens run out, it probes with a single request to refresh the count from the response header. If it does hit a 429, it backs off exponentially using the Retry-After header.

Local-first architecture

All reads come from SQLite. I configured React Query with infinite stale time because the local DB is the source of truth, not a cache. In practice everything is instant: search, folder browsing, the random picker are all just SQLite queries.

Building with Claude Code

I built the whole thing with Claude Code. It took longer than I expected, but not how I expected.

The code part was fast. Claude Code is good at turning a clear idea into working code. What took time was figuring out what I actually wanted to build. Should sync be cancellable? Should the random picker filter by folder? Wantlists, yes or no? Editing, yes or no? Those product decisions are where I spent the most time. And then even once you know what you want and the code is written, you’re still testing on device, tweaking layouts, rethinking flows, going through App Store review. Making an app just takes time.

Try it

Digs is free on the App Store. No ads, no tracking whatsoever, no account beyond your Discogs login.

联系我们 contact @ memedata.com