README.md 3.0 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
> [!WARNING]
8
> Project is still under beta
9
> Try it out at [beta.alcove.tools](https://beta.alcove.tools)
10
11
## Reasoning
12
13
Alcove is built on two principles: **privacy** and **freedom of speech**.
14
15
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.
16
17
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.
18
19
## Tech Stack
20
21
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:
22
23
- `wss://relay.alcove.tools` - Bare metal server
24
- `wss://relay2.alcove.tools` - Hosted Railway instance
25
26
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.
27
28
> [!NOTE]
29
> While Alcove does everyhing possible to provide privacy it is still recommended to use a VPN to help mask IP addresses
30
31
## Quickstart
32
33
To start developing Alcove locally follow these steps:
34
35
1. Make sure [Bun](https://bun.sh) is installed
36
37
```bash
38
bun --version
39
```
40
41
2. Clone and install dependencies
42
43
```bash
44
git clone https://github.com/stevedylandev/alcove.git
45
cd alcove
46
bun install
47
```
48
49
3. Run the dev server
50
51
```bash
52
bun dev
53
```
54
55
4. Run a local relay (Optional)
56
57
```bash
58
bunx @evolu/relay start
59
```
60
61
Update the relay transport in `src/lib/evolu.ts`
62
63
## Roadmap
64
65
- [x] Mark posts as read/unread
66
- [x] Import/Export OPML
67
- [x] Import/Export account through mnemonic
68
- [x] Refresh/Update Feeds
69
- [ ] Tweakcn theme switching
70
71
## Acknowledgements
72
73
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
74
75
## Questions
76
77
[Send me an email](mailto:contact@stevedylan.dev?subject=Alcove)!