chore: updated docs 279df285
Steve · 2026-05-09 12:19 5 file(s) · +111 −0
README.md +3 −0
16 16
| [**Shrink**](apps/shrink) | Image compression and resizing | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/enYUFb?referralCode=JGcIp6) |
17 17
| [**Cellar**](apps/cellar) | Minimal wine collection tracker | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/MNprVh?referralCode=JGcIp6) |
18 18
| [**Posts**](apps/posts) | Minimal CMS blog with admin interface | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/tYtJYp?referralCode=JGcIp6) |
19 +
| [**Bookmarks**](apps/bookmarks) | Minimal link saver with categories and JSON API | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/DZfr5P?referralCode=JGcIp6) |
20 +
| [**Library**](apps/library) | Minimal book tracker with Google Books search | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/tepdeI?referralCode=JGcIp6) |
21 +
| [**Easel**](apps/easel) | Daily public-domain painting from the Art Institute of Chicago | [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/0DpuRE?referralCode=JGcIp6) |
19 22
20 23
## Shared Crates
21 24
docs/docs/pages/apps/bookmarks.mdx +8 −0
1 1
# Bookmarks
2 2
3 +
![demo of bookmarks](https://assets.andromeda.build/bookmarks-demo.png)
4 +
3 5
Bookmarks is a single-user link saver. Add links via the admin panel or JSON API, organize them into categories, and view them on a public index page grouped by category.
4 6
5 7
- Single Rust binary with embedded assets
24 26
`BOOKMARKS_PASSWORD` is required to access the admin panel. `BOOKMARKS_API_KEY` is only needed if you want to create links from outside the browser.
25 27
26 28
## Deploy
29 +
30 +
### Railway
31 +
32 +
The easiest way to deploy Bookmarks is with the one-click Railway template. See the [Deploying with Railway](/deploy-railway) guide for a walkthrough of the process. Bookmarks requires `BOOKMARKS_PASSWORD` during the configure step.
33 +
34 +
[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/DZfr5P?referralCode=JGcIp6)
27 35
28 36
### Docker
29 37
docs/docs/pages/apps/easel.mdx (added) +88 −0
1 +
# Easel
2 +
3 +
![demo of easel](https://assets.andromeda.build/easel-demo.jpg)
4 +
5 +
A self-hosted daily painting viewer built with Rust. One public-domain artwork from the [Art Institute of Chicago](https://api.artic.edu/docs/) per calendar day, persisted to SQLite.
6 +
7 +
- Single Rust binary with embedded assets
8 +
- One artwork per day, picked from AIC's public-domain collection
9 +
- Past days browsable via archive; future days unavailable until populated
10 +
- Atom feed at `/feed.xml`
11 +
- JSON API for today, any day, and the full archive
12 +
- Optional backfill of missing past days on startup
13 +
- Dark themed UI with Commit Mono font
14 +
- SQLite for persistent storage
15 +
16 +
## Configure
17 +
18 +
### Environment Variables
19 +
20 +
| Variable | Description | Default |
21 +
|---|---|---|
22 +
| `HOST` | Server bind address | `127.0.0.1` |
23 +
| `PORT` | Server port | `4242` |
24 +
| `EASEL_DB_PATH` | SQLite database file path | `easel.sqlite` |
25 +
| `EASEL_TIMEZONE` | IANA timezone for day boundary | `UTC` |
26 +
| `EASEL_CLASSIFICATIONS` | Comma-separated `classification_title` filter | `painting` |
27 +
| `EASEL_EXCLUDE_TERMS` | Comma-separated phrases excluded across title/description/term/subject/category/classification | `erotic,erotica,shunga` |
28 +
| `EASEL_BACKFILL_DAYS` | On boot, fill missing past N days (0 disables) | `0` |
29 +
| `EASEL_MAX_DEDUP_RETRIES` | Retries when picking a non-duplicate artwork | `10` |
30 +
| `EASEL_BASE_URL` | Public base URL for absolute links in `/feed.xml` | `http://localhost:4242` |
31 +
32 +
## Deploy
33 +
34 +
### Railway
35 +
36 +
The easiest way to deploy Easel is with the one-click Railway template. See the [Deploying with Railway](/deploy-railway) guide for a walkthrough of the process.
37 +
38 +
[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/0DpuRE?referralCode=JGcIp6)
39 +
40 +
### Docker
41 +
42 +
```bash
43 +
cd apps/easel
44 +
cp .env.example .env
45 +
docker compose up -d
46 +
```
47 +
48 +
### Binary
49 +
50 +
Install with Homebrew:
51 +
52 +
```bash
53 +
brew install stevedylandev/tap/easel
54 +
```
55 +
56 +
Or grab a prebuilt binary from the [releases page](https://github.com/stevedylandev/andromeda/releases?q=easel&expanded=true).
57 +
58 +
You can also build from source:
59 +
60 +
```bash
61 +
cargo build --release -p easel
62 +
```
63 +
64 +
The resulting binary is self-contained with all assets embedded. Copy it to your server with a configured `.env` file and run it directly.
65 +
66 +
## Use
67 +
68 +
Visit `/` for today's artwork. Browse past days at `/day/{YYYY-MM-DD}` or the full collection at `/archive`. Subscribe to `/feed.xml` for an Atom feed of new daily paintings.
69 +
70 +
### Routes
71 +
72 +
| Route | Description |
73 +
|---|---|
74 +
| `GET /` | Today's artwork |
75 +
| `GET /day/{YYYY-MM-DD}` | Specific past day |
76 +
| `GET /archive` | Full archive |
77 +
| `GET /feed.xml` | Atom feed |
78 +
| `GET /api/today` | JSON of today |
79 +
| `GET /api/day/{YYYY-MM-DD}` | JSON of specific day |
80 +
| `GET /api/archive` | JSON list |
81 +
82 +
## Image source
83 +
84 +
Images served from AIC's IIIF endpoint:
85 +
86 +
```
87 +
https://www.artic.edu/iiif/2/{image_id}/full/843,/0/default.jpg
88 +
```
docs/docs/pages/apps/library.mdx +8 −0
1 1
# Library
2 2
3 +
![demo of library](https://assets.andromeda.build/library-demo.png)
4 +
3 5
A simple, self-hosted book tracker built with Rust.
4 6
5 7
- Single binary with embedded assets
32 34
The `GOOGLE_BOOKS_API_KEY` is optional — searches work without it but are rate-limited.
33 35
34 36
## Deploy
37 +
38 +
### Railway
39 +
40 +
The easiest way to deploy Library is with the one-click Railway template. See the [Deploying with Railway](/deploy-railway) guide for a walkthrough of the process. Library requires `ADMIN_PASSWORD` during the configure step, and optionally `GOOGLE_BOOKS_API_KEY` for book search.
41 +
42 +
[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/tepdeI?referralCode=JGcIp6)
35 43
36 44
### Docker
37 45
docs/vocs.config.ts +4 −0
49 49
          link: '/apps/cellar',
50 50
        },
51 51
        {
52 +
          text: 'Easel',
53 +
          link: '/apps/easel',
54 +
        },
55 +
        {
52 56
          text: 'Feeds',
53 57
          link: '/apps/feeds',
54 58
        },