···11# Red Dwarf
22Red Dwarf is a Bluesky client that does not use any AppView servers, instead it gathers the data from [Constellation](https://constellation.microcosm.blue/) and each users' PDS.
3344-
44+
5566huge thanks to [Microcosm](https://microcosm.blue/) for making this possible
77···5252and for list feeds, you can just use something like graze or skyfeed to input a list of users and output a custom feed
53535454## Tanstack Router
5555-it does the job, nothing very specific was used here
5555+something specific was used here
5656+5757+so tanstack router is used as the base, but the home route is using tanstack-router-keepalive to preserve the route for better responsiveness, and it also saves scroll position of feeds into jotai (persistent)
5858+5959+i previously used a tanstack router loader to ensure the tanstack query cache is ready to prevent scroll jumps but it is way too slow so i replaced it with tanstack-router-keepalive
6060+6161+## Icons
6262+this project uses Material icons. do not the light variant. sometimes i use `Mdi` if the icon needed doesnt exist in `MaterialSymbols`
56635757-im planning to use the loader system on select pages to prevent loss of scroll positon and state though its really complex so i havent done it yet but the migration to tanstack query is a huge first step towards this goal6464+the project uses unplugin icon auto import, so you can just use the component and itll just work!
6565+6666+the format is:
6767+```tsx
6868+<IconMaterialSymbols{icon name here} />
6969+// or
7070+<IconMdi{icon name here} />
7171+```
7272+7373+you can get the full list of icon names from iconify ([Material Symbols](https://icon-sets.iconify.design/material-symbols/) or [MDI](https://icon-sets.iconify.design/mdi/))
7474+7575+while it is nice to keep everything consistent by using material icons, if the icon you need is not provided by either material symbols nor mdi, you are allowed to just grab any icon from any pack (please do prioritize icons that fit in)