README.md 2.9 K raw
1
# Alcove
2
3
![cover](https://beta.alcove.tools/og.png)
4
5
A privacy focused RSS reader for the open web
6
7
[alcove.tools](https://alcove.tools)
8
9
## Reasoning
10
11
Alcove is built on two principles: **privacy** and **freedom of speech**.
12
13
Those two things are becoming harder to find these days, yet blogs and RSS feeds provide a way out. As long as someone is publishing and someone else is listening, these two fundamentals can help keep free speech alive.
14
15
Alcove accomplishes privacy through a "can't be evil" tech stack, which you can read more about [here](https://stevedylan.dev/posts/introducing-alcove/). **TLDR:** All of your feeds and posts that you read are encrypted locally and synced via cryptographic keypairs. Even if we wanted to read your stuff, we can't. We believe this is important as many other RSS readers cannot make the same promise and would have to hand over the data if ordered by authorities.
16
17
## Tech Stack
18
19
Alcove is built with [Evolu](https://evolu.dev) to handle the encrypted syncing of feeds. With Evolu each time the app is opened in a browser it spins up an identity used to encrypt and decrypt files, as well as an SQLite instance. As you add feeds or read posts, changes to the db are made and then encrypted before syncing with a relay. The relays let you access your data on another device by recovering your previous identity using a passphrase (mnemonic). Alcove currently has two relay instances:
20
21
- `wss://relay.alcove.tools` - Bare metal server
22
- `wss://relay2.alcove.tools` - Hosted Railway instance
23
24
The app also has to use a CORS proxy when fetching RSS feeds as most feeds do not allow cross origin fetching. Alcove will try a direct attempt first, and if it fails then it falls back to `proxy.alcove.tools`, which is a simple instance of [cors-proxy](https://github.com/stevedylandev/cors-proxy) that I have running on bare metal. If for any reason the main proxy is down it will use a fallback of `proxy2.alcove.tools` which is on a Cloudflare Worker.
25
26
> [!NOTE]
27
> While Alcove does everyhing possible to provide privacy it is still recommended to use a VPN to help mask IP addresses
28
29
## Quickstart
30
31
To start developing Alcove locally follow these steps:
32
33
1. Make sure [Bun](https://bun.sh) is installed
34
35
```bash
36
bun --version
37
```
38
39
2. Clone and install dependencies
40
41
```bash
42
git clone https://github.com/stevedylandev/alcove.git
43
cd alcove
44
bun install
45
```
46
47
3. Run the dev server
48
49
```bash
50
bun dev
51
```
52
53
4. Run a local relay (Optional)
54
55
```bash
56
bunx @evolu/relay start
57
```
58
59
Update the relay transport in `src/lib/evolu.ts`
60
61
## Roadmap
62
63
- [x] Mark posts as read/unread
64
- [x] Import/Export OPML
65
- [x] Import/Export account through mnemonic
66
- [x] Refresh/Update Feeds
67
- [ ] Tweakcn theme switching
68
69
## Acknowledgements
70
71
Alcove is heavily inspired by [NetNewsWire](https://netnewswire.com/) and [this post](https://inessential.com/2025/10/04/why-netnewswire-is-not-web-app.html) by Brent Simmons
72
73
## Questions
74
75
[Send me an email](mailto:contact@stevedylan.dev?subject=Alcove)!