# Designing a minimal, local-first version of lichess.

DevFeed: [Designing a minimal, local-first version of lichess.](<https://devfeed.tech/articles/designing-a-minimal-local-first-version-of-lichess-39402.md>)

Original publisher: [Read original article](<https://blog.pranshu-raj.in/posts/designing-tinychess/>)

Author: Pranshu Raj

Published: 2025-05-10T15:22:00Z

Content type: article

Language: en

Sources: [Pranshu Raj - blog on backend systems, performance and sidequests](<https://devfeed.tech/sources/pranshu-raj-blog-on-backend-systems-performance-and-sidequests.md>)

Topics: [Local-First](<https://devfeed.tech/topics/local-first.md>), [Go](<https://devfeed.tech/topics/go.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [rate-limiting](<https://devfeed.tech/topics/rate-limiting.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [go](<https://devfeed.tech/tags/go.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [latency](<https://devfeed.tech/tags/latency.md>), [local-first](<https://devfeed.tech/tags/local-first.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [rate-limiting](<https://devfeed.tech/tags/rate-limiting.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [websockets](<https://devfeed.tech/tags/websockets.md>)

## AI overview

The author outlines a plan for tinychess, a smaller local-first version of Lichess intended as a learning project. The planned system includes real-time gameplay, game validation and persistence, matchmaking, spectators, leaderboards, rate limiting, and scoring, using Go, WebSockets, JavaScript, and SQLite or a flat file.

## Source excerpt

How I'm planning to build tinychess, and what I've learnt so far while preparing to build it.