Merge pull request #2 from stevedylandev/chore/update-readme-meta
0ad7c3d7
Update READMEs across repos
7 file(s) · +190 −142
Update READMEs across repos
| 6 | 6 | ||
| 7 | 7 | ## Apps |
|
| 8 | 8 | ||
| 9 | - | | App | Description | |
|
| 10 | - | |---|---| |
|
| 11 | - | | [**Sipp**](apps/sipp) | Minimal code sharing with web UI and TUI | |
|
| 12 | - | | [**Feeds**](apps/feeds) | Minimal RSS reader with FreshRSS and OPML support | |
|
| 13 | - | | [**Parcels**](apps/parcels) | Minimal package tracking (USPS) | |
|
| 14 | - | | [**Jotts**](apps/jotts) | Minimal markdown notes app | |
|
| 15 | - | | [**OG**](apps/og) | Open Graph tag inspector | |
|
| 16 | - | | [**Shrink**](apps/shrink) | Image compression and resizing | |
|
| 9 | + | | App | Description | Deploy | |
|
| 10 | + | |---|---|---| |
|
| 11 | + | | [**Sipp**](apps/sipp) | Minimal code sharing with web UI and TUI | [](https://railway.com/deploy/Axcf_D?referralCode=JGcIp6) | |
|
| 12 | + | | [**Feeds**](apps/feeds) | Minimal RSS reader with FreshRSS and OPML support | [](https://railway.com/deploy/Ezvmhx?referralCode=JGcIp6) | |
|
| 13 | + | | [**Parcels**](apps/parcels) | Minimal package tracking (USPS) | [](https://railway.com/deploy/HNQUs4?referralCode=JGcIp6) | |
|
| 14 | + | | [**Jotts**](apps/jotts) | Minimal markdown notes app | [](https://railway.com/deploy/DLhUhH?referralCode=JGcIp6) | |
|
| 15 | + | | [**OG**](apps/og) | Open Graph tag inspector | [](https://railway.com/deploy/OdXBt_?referralCode=JGcIp6) | |
|
| 16 | + | | [**Shrink**](apps/shrink) | Image compression and resizing | [](https://railway.com/deploy/enYUFb?referralCode=JGcIp6) | |
|
| 17 | 17 | ||
| 18 | 18 | ## Shared Crates |
|
| 19 | 19 |
| 4 | 4 | ||
| 5 | 5 | Minimal RSS Feeds |
|
| 6 | 6 | ||
| 7 | - | ## About |
|
| 7 | + | ## Quickstart |
|
| 8 | + | ||
| 9 | + | 1. Make sure [Rust](https://www.rust-lang.org/tools/install) is installed |
|
| 10 | + | ||
| 11 | + | ```bash |
|
| 12 | + | rustc --version |
|
| 13 | + | ``` |
|
| 14 | + | ||
| 15 | + | 2. Clone and build |
|
| 16 | + | ||
| 17 | + | ```bash |
|
| 18 | + | git clone https://github.com/stevedylandev/feeds |
|
| 19 | + | cd feeds |
|
| 20 | + | cargo build |
|
| 21 | + | ``` |
|
| 22 | + | ||
| 23 | + | 3. Run the dev server |
|
| 24 | + | ||
| 25 | + | ```bash |
|
| 26 | + | cargo run |
|
| 27 | + | # Server running on http://localhost:3000 |
|
| 28 | + | ``` |
|
| 29 | + | ||
| 30 | + | ### Environment Variables |
|
| 31 | + | ||
| 32 | + | | Variable | Description | Default | |
|
| 33 | + | |---|---|---| |
|
| 34 | + | | `FRESHRSS_URL` | URL of your FreshRSS instance | — | |
|
| 35 | + | | `FRESHRSS_USERNAME` | FreshRSS username | — | |
|
| 36 | + | | `FRESHRSS_PASSWORD` | FreshRSS password | — | |
|
| 37 | + | | `ADMIN_PASSWORD` | Password for the admin panel | — | |
|
| 38 | + | | `COOKIE_SECURE` | Enable HTTPS-only cookies | `false` | |
|
| 39 | + | ||
| 40 | + | ## Overview |
|
| 8 | 41 | ||
| 9 | - | Feeds is a minimal RSS reader that mimics the original experience of RSS. It's just a list of posts. No categories, no marking a post read or unread, and there is no in-app reading. With this approach you have to read the post on the authors personal website and experience it in it's original context. While this may not work well if you have loads of news feeds, I personally love it for [my approach to blogs](https://blogfeeds.net). |
|
| 42 | + | Feeds is a minimal RSS reader that mimics the original experience of RSS. It's just a list of posts. No categories, no marking a post read or unread, and there is no in-app reading. With this approach you have to read the post on the author's personal website and experience it in its original context. A few highlights: |
|
| 10 | 43 | ||
| 11 | - | This app is also MIT open sourced and designed to be self-hosted; fork the code and change it to your liking! |
|
| 44 | + | - Single Rust binary with embedded assets |
|
| 45 | + | - Multiple feed sources: URL params, OPML file, or FreshRSS API |
|
| 46 | + | - Password-protected admin panel for managing subscriptions |
|
| 47 | + | - Feeds API with JSON and OPML export |
|
| 48 | + | - Dark themed UI with Commit Mono font |
|
| 12 | 49 | ||
| 13 | 50 | ## Usage |
|
| 14 | 51 | ||
| 67 | 104 | /feeds?format=opml |
|
| 68 | 105 | ``` |
|
| 69 | 106 | ||
| 70 | - | ## Quickstart |
|
| 107 | + | ## Structure |
|
| 71 | 108 | ||
| 72 | - | 1. Make sure [Rust](https://www.rust-lang.org/tools/install) is installed |
|
| 73 | - | ||
| 74 | - | ```bash |
|
| 75 | - | rustc --version |
|
| 76 | 109 | ``` |
|
| 77 | - | ||
| 78 | - | 2. Clone and build |
|
| 79 | - | ||
| 80 | - | ```bash |
|
| 81 | - | git clone https://github.com/stevedylandev/feeds |
|
| 82 | - | cd feeds |
|
| 83 | - | cargo build |
|
| 110 | + | feeds/ |
|
| 111 | + | ├── src/ |
|
| 112 | + | │ ├── main.rs # Axum server with routing, templates, and static asset serving |
|
| 113 | + | │ ├── feeds.rs # Feed fetching, OPML parsing, and FreshRSS API integration |
|
| 114 | + | │ ├── auth.rs # Session-based authentication with constant-time password verification |
|
| 115 | + | │ └── models.rs # Data structures for feeds and FreshRSS responses |
|
| 116 | + | ├── templates/ # Askama HTML templates |
|
| 117 | + | ├── assets/ # Static assets embedded at compile time via rust-embed |
|
| 118 | + | ├── Dockerfile |
|
| 119 | + | └── docker-compose.yml |
|
| 84 | 120 | ``` |
|
| 85 | - | ||
| 86 | - | 3. Run the dev server |
|
| 87 | - | ||
| 88 | - | ```bash |
|
| 89 | - | cargo run |
|
| 90 | - | # Server running on http://localhost:3000 |
|
| 91 | - | ``` |
|
| 92 | - | ||
| 93 | - | ## Project Structure |
|
| 94 | - | ||
| 95 | - | The architecture is intentionally simple: |
|
| 96 | - | - **`src/main.rs`** - Axum server with routing, templates, and static asset serving |
|
| 97 | - | - **`src/feeds.rs`** - Feed fetching, OPML parsing, and FreshRSS API integration |
|
| 98 | - | - **`src/auth.rs`** - Session-based authentication with constant-time password verification |
|
| 99 | - | - **`src/models.rs`** - Data structures for feeds and FreshRSS responses |
|
| 100 | - | - **`src/templates/`** - Askama HTML templates |
|
| 101 | - | - **`assets/`** - Static assets embedded at compile time via `rust-embed` |
|
| 102 | - | ||
| 103 | - | ## Environment Variables |
|
| 104 | - | ||
| 105 | - | | Variable | Description | Required | |
|
| 106 | - | |---|---|---| |
|
| 107 | - | | `FRESHRSS_URL` | URL of your FreshRSS instance | For FreshRSS mode | |
|
| 108 | - | | `FRESHRSS_USERNAME` | FreshRSS username | For FreshRSS mode | |
|
| 109 | - | | `FRESHRSS_PASSWORD` | FreshRSS password | For FreshRSS mode | |
|
| 110 | - | | `ADMIN_PASSWORD` | Password for the admin panel | For admin access | |
|
| 111 | - | | `COOKIE_SECURE` | Set to `true` for HTTPS environments | No | |
|
| 112 | 121 | ||
| 113 | 122 | ## Deployment |
|
| 114 | 123 | ||
| 115 | 124 | Since Feeds compiles to a single binary, deployment is straightforward on any platform. |
|
| 116 | 125 | ||
| 117 | - | ### Docker |
|
| 126 | + | ### Railway |
|
| 118 | 127 | ||
| 119 | - | 1. Clone the repo |
|
| 128 | + | [](https://railway.com/deploy/Ezvmhx?referralCode=JGcIp6) |
|
| 129 | + | ||
| 130 | + | ### Docker (recommended) |
|
| 120 | 131 | ||
| 121 | 132 | ```bash |
|
| 122 | 133 | git clone https://github.com/stevedylandev/feeds |
|
| 123 | 134 | cd feeds |
|
| 124 | - | ``` |
|
| 125 | - | ||
| 126 | - | 2. Build and run the Docker image |
|
| 127 | - | ||
| 128 | - | ```bash |
|
| 129 | - | docker build -t feeds . |
|
| 130 | - | docker run -p 3000:3000 --env-file .env feeds |
|
| 135 | + | cp .env.sample .env |
|
| 136 | + | # Edit .env with your credentials |
|
| 137 | + | docker compose up -d |
|
| 131 | 138 | ``` |
|
| 132 | 139 | ||
| 133 | - | Or use `docker-compose` |
|
| 140 | + | ### Binary |
|
| 134 | 141 | ||
| 135 | 142 | ```bash |
|
| 136 | - | docker-compose up -d |
|
| 143 | + | cargo build --release |
|
| 137 | 144 | ``` |
|
| 138 | 145 | ||
| 139 | - | ### Railway |
|
| 146 | + | The resulting binary at `./target/release/feeds` is self-contained with all assets embedded. Copy it to your server with a configured `.env` file and run it directly. |
|
| 140 | 147 | ||
| 141 | - | 1. Fork the repo from GitHub to your own account |
|
| 148 | + | ## License |
|
| 142 | 149 | ||
| 143 | - | 2. Login to [Railway](https://railway.com) and create a new project |
|
| 144 | - | ||
| 145 | - | 3. Select Feeds from your repos |
|
| 146 | - | ||
| 147 | - | 4. Railway will auto-detect the Rust project and build it |
|
| 150 | + | [MIT](LICENSE) |
|
| 59 | 59 | ||
| 60 | 60 | ## Deployment |
|
| 61 | 61 | ||
| 62 | + | ### Railway |
|
| 63 | + | ||
| 64 | + | [](https://railway.com/deploy/DLhUhH?referralCode=JGcIp6) |
|
| 65 | + | ||
| 62 | 66 | ### Docker (recommended) |
|
| 63 | 67 | ||
| 64 | 68 | ```bash |
| 4 | 4 | ||
| 5 | 5 | A simple web tool for inspecting Open Graph tags on any URL. |
|
| 6 | 6 | ||
| 7 | - | ## Running Locally |
|
| 7 | + | ## Quickstart |
|
| 8 | 8 | ||
| 9 | 9 | ```bash |
|
| 10 | - | cargo run |
|
| 10 | + | git clone https://github.com/stevedylandev/og.git |
|
| 11 | + | cd og |
|
| 12 | + | cargo build --release |
|
| 13 | + | ./target/release/og |
|
| 14 | + | ``` |
|
| 15 | + | ||
| 16 | + | ### Environment Variables |
|
| 17 | + | ||
| 18 | + | | Variable | Description | Default | |
|
| 19 | + | |---|---|---| |
|
| 20 | + | | `PORT` | Server port | `3000` | |
|
| 21 | + | ||
| 22 | + | ## Overview |
|
| 23 | + | ||
| 24 | + | A self-hosted Open Graph tag inspector built with Rust. Enter any URL and instantly see its OG metadata. A few highlights: |
|
| 25 | + | ||
| 26 | + | - Single Rust binary with embedded assets |
|
| 27 | + | - Inspects title, description, image, and other OG tags |
|
| 28 | + | - Dark themed UI with Commit Mono font |
|
| 29 | + | - No database needed — fully stateless |
|
| 30 | + | ||
| 31 | + | ## Structure |
|
| 32 | + | ||
| 33 | + | ``` |
|
| 34 | + | og/ |
|
| 35 | + | ├── src/ |
|
| 36 | + | │ ├── main.rs # Entry point and server startup |
|
| 37 | + | │ ├── server.rs # Axum routes and request handling |
|
| 38 | + | │ └── og.rs # Open Graph tag fetching and parsing |
|
| 39 | + | ├── templates/ # Askama HTML templates |
|
| 40 | + | │ ├── base.html # Base layout |
|
| 41 | + | │ ├── index.html # Search form |
|
| 42 | + | │ └── results.html # OG tag results display |
|
| 43 | + | ├── static/ # Fonts, favicons, and styles |
|
| 44 | + | ├── Dockerfile |
|
| 45 | + | └── docker-compose.yml |
|
| 11 | 46 | ``` |
|
| 12 | 47 | ||
| 13 | - | The server starts on `http://localhost:3000` by default. Set the `PORT` env var to change it. |
|
| 48 | + | ## Deployment |
|
| 49 | + | ||
| 50 | + | ### Railway |
|
| 51 | + | ||
| 52 | + | [](https://railway.com/deploy/OdXBt_?referralCode=JGcIp6) |
|
| 53 | + | ||
| 54 | + | ### Docker (recommended) |
|
| 14 | 55 | ||
| 15 | - | ## Docker |
|
| 56 | + | ```bash |
|
| 57 | + | git clone https://github.com/stevedylandev/og.git |
|
| 58 | + | cd og |
|
| 59 | + | docker compose up -d |
|
| 60 | + | ``` |
|
| 61 | + | ||
| 62 | + | ### Binary |
|
| 16 | 63 | ||
| 17 | 64 | ```bash |
|
| 18 | - | docker compose up --build |
|
| 65 | + | cargo build --release |
|
| 19 | 66 | ``` |
|
| 67 | + | ||
| 68 | + | The resulting binary at `./target/release/og` is self-contained with all assets embedded. Copy it to your server and run it directly. |
|
| 20 | 69 | ||
| 21 | 70 | ## License |
|
| 22 | 71 |
| 62 | 62 | ||
| 63 | 63 | ## Deployment |
|
| 64 | 64 | ||
| 65 | + | ### Railway |
|
| 66 | + | ||
| 67 | + | [](https://railway.com/deploy/HNQUs4?referralCode=JGcIp6) |
|
| 68 | + | ||
| 65 | 69 | ### Docker (recommended) |
|
| 66 | 70 | ||
| 67 | 71 | ```bash |
| 45 | 45 | ||
| 46 | 46 | ## Deployment |
|
| 47 | 47 | ||
| 48 | + | ### Railway |
|
| 49 | + | ||
| 50 | + | [](https://railway.com/deploy/enYUFb?referralCode=JGcIp6) |
|
| 51 | + | ||
| 48 | 52 | ### Docker (recommended) |
|
| 49 | 53 | ||
| 50 | 54 | ```bash |
| 4 | 4 | ||
| 5 | 5 | https://github.com/user-attachments/assets/cadafb70-f796-456d-bfd9-e88704e7132c |
|
| 6 | 6 | ||
| 7 | - | ## Features |
|
| 8 | - | ||
| 9 | - | - Single binary for web server and TUI |
|
| 10 | - | - Create snippets and share on the web |
|
| 11 | - | - Raw output for CLI tools — `curl`, `wget`, and `httpie` get plain text automatically |
|
| 12 | - | - Interactive TUI with authenticated access for snippet management |
|
| 13 | - | - Minimal, fast, and low memory consumption |
|
| 14 | - | ||
| 15 | 7 | ## Quickstart |
|
| 16 | 8 | ||
| 17 | - | **1. Install** |
|
| 18 | - | ||
| 19 | - | Install via the [releases](https://github.com/stevedylandev/sipp/releases) page, or directly with `cargo` |
|
| 20 | - | ||
| 21 | 9 | ```bash |
|
| 22 | 10 | cargo install sipp-so |
|
| 23 | - | ``` |
|
| 24 | - | ||
| 25 | - | To confirm it was installed correctly run the following |
|
| 26 | - | ||
| 27 | - | ```bash |
|
| 28 | 11 | sipp --help |
|
| 29 | 12 | ``` |
|
| 30 | 13 | ||
| 31 | - | **2. Start Server** |
|
| 32 | - | ||
| 33 | - | For demo purposes you can run this locally, but ideally this would be run in a deployment server with a proper ENV setup with your admin key. |
|
| 14 | + | Start a server and create a snippet: |
|
| 34 | 15 | ||
| 35 | 16 | ```bash |
|
| 36 | 17 | sipp server --port 3000 |
|
| 37 | 18 | ``` |
|
| 38 | 19 | ||
| 39 | - | **3. Create a Snippet** |
|
| 40 | - | ||
| 41 | - | You can either open up `http://localhost:3000` and create a snippet in a web browser, or use the TUI. In the same directory, open a new terminal window and use |
|
| 42 | - | ||
| 43 | 20 | ```bash |
|
| 44 | 21 | # Path to file |
|
| 45 | 22 | sipp path/to/file.rs |
|
| 46 | 23 | ||
| 47 | - | # Or use the interactive tui |
|
| 24 | + | # Or use the interactive TUI |
|
| 48 | 25 | sipp |
|
| 49 | 26 | ``` |
|
| 50 | 27 | ||
| 51 | - | ## Demo Instance |
|
| 28 | + | ## Overview |
|
| 29 | + | ||
| 30 | + | A single binary for code sharing with a web server and interactive TUI. A few highlights: |
|
| 52 | 31 | ||
| 53 | - | A small instance running at [sipp.so](https://sipp.so) that can be used for testing and demo purposes. |
|
| 32 | + | - Create snippets and share on the web |
|
| 33 | + | - Raw output for CLI tools — `curl`, `wget`, and `httpie` get plain text automatically |
|
| 34 | + | - Interactive TUI with authenticated access for snippet management |
|
| 35 | + | - Minimal, fast, and low memory consumption |
|
| 54 | 36 | ||
| 55 | - | ```bash |
|
| 56 | - | sipp -r https://sipp.so |
|
| 57 | - | ``` |
|
| 37 | + | > [!WARNING] |
|
| 38 | + | > A small demo instance runs at [sipp.so](https://sipp.so). All snippets created there are public and might be deleted at any time; host your own instance with your own API key for personal use! |
|
| 58 | 39 | ||
| 59 | - | >[!WARNING] |
|
| 60 | - | >All snippets created here are public and might be deleted at any time; host your own instance with your own API key for personal use! |
|
| 40 | + | ## Usage |
|
| 61 | 41 | ||
| 62 | - | ## Install |
|
| 42 | + | ### Install |
|
| 63 | 43 | ||
| 64 | - | Sipp can be installed several ways |
|
| 44 | + | Sipp can be installed several ways: |
|
| 65 | 45 | ||
| 66 | - | ### Releases |
|
| 46 | + | #### Releases |
|
| 67 | 47 | ||
| 68 | 48 | Visit the [releases](https://github.com/stevedylandev/sipp/releases) page and install through cURL script and other methods. |
|
| 69 | 49 | ||
| 70 | - | ### Homebrew |
|
| 50 | + | #### Homebrew |
|
| 71 | 51 | ||
| 72 | 52 | ``` |
|
| 73 | 53 | brew install stevedylandev/tap/sipp-so |
|
| 74 | 54 | ``` |
|
| 75 | 55 | ||
| 76 | - | ### Cargo |
|
| 56 | + | #### Cargo |
|
| 77 | 57 | ||
| 78 | 58 | ```bash |
|
| 79 | 59 | cargo install sipp-so |
|
| 80 | 60 | ``` |
|
| 81 | - | ||
| 82 | - | ## Usage |
|
| 83 | 61 | ||
| 84 | 62 | ### CLI |
|
| 85 | 63 | ||
| 164 | 142 | ||
| 165 | 143 | #### Local Access |
|
| 166 | 144 | ||
| 167 | - | If you are running `sipp` in the same directory as the `sipp.sqlite` file created by the server instance, the TUI will automatically access the datebase locally and you can edit it directly. |
|
| 145 | + | If you are running `sipp` in the same directory as the `sipp.sqlite` file created by the server instance, the TUI will automatically access the database locally and you can edit it directly. |
|
| 168 | 146 | ||
| 169 | 147 | #### Remote Access |
|
| 170 | 148 | ||
| 196 | 174 | | `q` | Quit | |
|
| 197 | 175 | | `?` | Toggle help | |
|
| 198 | 176 | ||
| 199 | - | ## Deployment |
|
| 200 | - | ||
| 201 | - | Since Sipp is a single binary it can be run in virtually any enviornment. |
|
| 177 | + | ## Structure |
|
| 202 | 178 | ||
| 203 | - | ### Systemd |
|
| 179 | + | ``` |
|
| 180 | + | sipp/ |
|
| 181 | + | ├── src/ |
|
| 182 | + | │ ├── main.rs # CLI argument parsing and entry point |
|
| 183 | + | │ ├── lib.rs # Library exports |
|
| 184 | + | │ ├── server.rs # Axum web server, routes, and templates |
|
| 185 | + | │ ├── tui.rs # Interactive terminal UI |
|
| 186 | + | │ ├── db.rs # SQLite database layer |
|
| 187 | + | │ ├── backend.rs # Local/remote backend abstraction |
|
| 188 | + | │ ├── config.rs # Config file management |
|
| 189 | + | │ └── highlight.rs # Syntax highlighting with custom themes |
|
| 190 | + | ├── templates/ # Askama HTML templates |
|
| 191 | + | │ ├── index.html # Snippet list |
|
| 192 | + | │ ├── snippet.html # Single snippet view |
|
| 193 | + | │ └── admin.html # Admin page |
|
| 194 | + | ├── static/ # Fonts, favicons, and styles |
|
| 195 | + | ├── Dockerfile |
|
| 196 | + | └── docker-compose.yml |
|
| 197 | + | ``` |
|
| 204 | 198 | ||
| 205 | - | Create a service file at `/etc/systemd/system/sipp.service`: |
|
| 199 | + | ## Deployment |
|
| 206 | 200 | ||
| 207 | - | ```ini |
|
| 208 | - | [Unit] |
|
| 209 | - | Description=Sipp snippet server |
|
| 210 | - | After=network.target |
|
| 201 | + | Since Sipp is a single binary it can be run in virtually any environment. |
|
| 211 | 202 | ||
| 212 | - | [Service] |
|
| 213 | - | ExecStart=/usr/local/bin/sipp server --port 3000 --host 0.0.0.0 |
|
| 214 | - | Environment=SIPP_API_KEY=your-secret-key |
|
| 215 | - | WorkingDirectory=/var/lib/sipp |
|
| 216 | - | Restart=on-failure |
|
| 203 | + | ### Railway |
|
| 217 | 204 | ||
| 218 | - | [Install] |
|
| 219 | - | WantedBy=multi-user.target |
|
| 220 | - | ``` |
|
| 205 | + | [](https://railway.com/deploy/Axcf_D?referralCode=JGcIp6) |
|
| 221 | 206 | ||
| 222 | - | ```bash |
|
| 223 | - | sudo systemctl enable --now sipp |
|
| 224 | - | ``` |
|
| 225 | - | ||
| 226 | - | ### Docker |
|
| 227 | - | ||
| 228 | - | A `Dockerfile` and `docker-compose.yml` are included in the repository. |
|
| 207 | + | ### Docker (recommended) |
|
| 229 | 208 | ||
| 230 | 209 | ```bash |
|
| 231 | 210 | # Using Docker Compose (recommended) |
|
| 236 | 215 | docker run -p 3000:3000 -e SIPP_API_KEY=your-secret-key -v sipp-data:/data sipp |
|
| 237 | 216 | ``` |
|
| 238 | 217 | ||
| 239 | - | ### Railway |
|
| 218 | + | ### Binary |
|
| 219 | + | ||
| 220 | + | ```bash |
|
| 221 | + | cargo build --release |
|
| 222 | + | ``` |
|
| 223 | + | ||
| 224 | + | The resulting binary at `./target/release/sipp` is self-contained with all assets embedded. Copy it to your server with your environment variables configured and run it directly. |
|
| 225 | + | ||
| 226 | + | ## License |
|
| 240 | 227 | ||
| 241 | - | 1. Fork this repo and connect your fork to [Railway](https://railway.app) |
|
| 242 | - | 2. Set the environment variables `SIPP_API_KEY` and optionally `SIPP_AUTH_ENDPOINTS` |
|
| 243 | - | 3. Add a [volume](https://docs.railway.com/guides/volumes) to your service and mount it at `/data` |
|
| 244 | - | 4. Set `SIPP_DB_PATH` to `/data/sipp.sqlite` so the database persists across deploys |
|
| 228 | + | [MIT](LICENSE) |
|