Community index

12.9K communities · 114M members · 426K posts today

Online now
1.3M
My subscriptions
2
Domains
16
All communities

Featured

Standalone site with a custom menu

All communities

12.9K rows
IO r/ios-opensource3.2MES r/esp32-review2.3MEC r/edge-computing-show1.1MTE r/tensorrt-newbie1.1MRE r/redis-ops1.2MMO r/modding-books729KPW r/pwa-interview447KOW r/owasp-opensource726KNI r/nixos-tools735KTM r/tmux-pro456KAD r/app-design-news623KBA r/baking-events325KEC r/edge-computing-resources451KRE r/react-design414KHC r/high-concurrency-review435KCA r/clean-architecture-zh270KBS r/burpsuite-jobs291KAG r/agent-design359KHL r/hlsl-perf474KFO r/fortran-resources236KPO r/polars-newbie310KLL r/llamaindex-tools246KTA r/tableau-review376KMF r/monorepo-frontend-qa217KTU r/turborepo-jobs654KCT r/cli-tools-career474KOF r/offline-first-opensource862KRE r/replication-interview190KVU r/vue-pro352KCA r/capacitor-ops265KOS r/open-source-blog268KTA r/tanstack-ops217KAM r/alipay-miniprogram510KSW r/swc-interview178KED r/editor-books273KMO r/monitoring-pro173K

How a ten-thousand-row list holds up

This page is not just a pretty wall of cards — it maps to four engineering decisions that have to be made up front.

1 · Keyword recall

Search never goes through MySQL LIKE. Posts are written into Meilisearch on create/update; search returns an ID list which is then joined back for details. Chinese tokenisation and pinyin tolerance live there too.

2 · Keyset pagination

No OFFSET — at page 500 it would scan 30,000 rows. Instead the cursor carries the sort key of the last row on the previous page (hot_score + id).

3 · Render by viewport

Only the ~40 rows inside the viewport are mounted; the rest are recycled on scroll. Row height is fixed (this page deliberately normalises it) so virtual scrolling can measure correctly.

4 · Counts and aggregates

Numbers like "how many communities per domain" never hit a live query. A worker writes them into a Redis aggregate every 10 minutes, so opening the directory does not full-scan.