Coffee journaling on ATProto (alpha) alpha.arabica.social
coffee
17
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: update terms to account for recent witness-cache changes

+58 -34
+58 -34
internal/web/pages/terms.templ
··· 19 19 <h2 class="text-2xl font-semibold text-brown-900 mb-4">The Simple Truth</h2> 20 20 <p class="text-brown-800 text-lg leading-relaxed"> 21 21 <strong>You own all of your data.</strong> Period. Your brew logs, coffee beans, equipment information, 22 - and any other data you create in Arabica belongs to you and is stored in your Personal Data Server (PDS), 23 - not on our servers. 22 + and any other data you create in Arabica belongs to you and is stored in your Personal Data Server (PDS). 23 + Your PDS is always the source of truth. Arabica maintains a local cache to power the community feed 24 + and improve performance, but your PDS is what matters &mdash; if Arabica's cache and your PDS ever disagree, 25 + your PDS wins. 24 26 </p> 25 27 </section> 26 28 <section> 27 29 <h2 class="text-2xl font-semibold text-brown-800 mb-4">1. Your Data Ownership</h2> 28 30 <p class="text-brown-700 leading-relaxed"> 29 31 All data you create through Arabica is stored in your AT Protocol Personal Data Server (PDS). 30 - Arabica acts as an interface to your PDS but does not own, claim rights to, or permanently store your data. 32 + Arabica does not own or claim any rights to your data. 31 33 </p> 32 34 <ul class="list-disc list-inside space-y-2 text-brown-700 mt-3"> 33 35 <li>You retain full ownership and control of your data</li> 34 - <li>You can delete your data at any time</li> 36 + <li>You can delete your data at any time &mdash; deletes are respected immediately (see below)</li> 35 37 <li>You can switch PDS providers without losing your data</li> 36 38 <li>You can stop using Arabica and your data remains in your PDS</li> 37 39 </ul> ··· 39 41 <section> 40 42 <h2 class="text-2xl font-semibold text-brown-800 mb-4">2. What We Store</h2> 41 43 <p class="text-brown-700 leading-relaxed mb-3"> 42 - Arabica's servers store minimal data necessary for the application to function: 44 + In addition to your PDS, Arabica's servers store the following data: 43 45 </p> 44 46 <ul class="list-disc list-inside space-y-2 text-brown-700"> 45 47 <li><strong>Session information</strong> - Authentication tokens to keep you logged in</li> 46 48 <li><strong>Feed registry</strong> - List of users who've opted into the community feed</li> 47 - <li><strong>Temporary cache</strong> - Short-lived cache of your data to improve performance</li> 49 + <li> 50 + <strong>Witness cache</strong> - A copy of your Arabica records (brews, beans, equipment, recipes) 51 + indexed from the AT Protocol firehose. This powers the community feed and enables features like 52 + like counts and comments without repeatedly querying your PDS. Your PDS remains the authoritative 53 + source &mdash; the witness cache is a read-optimized mirror, not a replacement. 54 + </li> 55 + <li><strong>Social interactions</strong> - Likes and comments are indexed locally for fast retrieval</li> 56 + <li><strong>Profile cache</strong> - A short-lived cache of user profiles that expires automatically</li> 48 57 </ul> 49 - // NOTE: this may change in the future for witness caching purposes and user settings, so commenting out 50 - // <p class="text-brown-700 leading-relaxed mt-3"> 51 - // We do <strong>not</strong> store your brew logs, beans, equipment, or any other user-generated content 52 - // on our servers. That data lives exclusively in your PDS. 53 - // </p> 58 + </section> 59 + <section> 60 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">3. How Deletes Work</h2> 61 + <p class="text-brown-700 leading-relaxed mb-3"> 62 + When you delete a record in Arabica, the deletion is immediate and thorough: 63 + </p> 64 + <ol class="list-decimal list-inside space-y-2 text-brown-700"> 65 + <li>The record is deleted from your PDS (the source of truth)</li> 66 + <li>The corresponding witness cache entry is removed immediately</li> 67 + <li>The AT Protocol firehose also delivers the delete event, providing a second layer of consistency</li> 68 + </ol> 69 + <p class="text-brown-700 leading-relaxed mt-3"> 70 + Arabica does not retain copies of deleted records. When you delete something, it's gone from both 71 + your PDS and our servers. 72 + </p> 54 73 </section> 55 74 <section> 56 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">3. Authentication</h2> 75 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">4. Authentication</h2> 57 76 <p class="text-brown-700 leading-relaxed"> 58 - Arabica uses OAuth to authenticate with your PDS. We never see or store your PDS password. 77 + Arabica uses OAuth to authenticate with your PDS. 59 78 Authentication is handled between your browser and your PDS, with Arabica receiving only 60 79 temporary access tokens to read and write data on your behalf. 80 + Due to the ephemeral nature of these access tokens, you will need to re-authenticate every 81 + couple of weeks. 61 82 </p> 62 83 </section> 63 84 <section> 64 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">4. Community Feed</h2> 85 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">5. Community Feed</h2> 65 86 <p class="text-brown-700 leading-relaxed"> 66 - If you opt into the community feed, Arabica will periodically read your public brew records 67 - from your PDS to display them to other users. This is done by: 87 + Arabica subscribes to the atproto firehose to index <code>social.arabica.*</code> records in real time. 88 + When you create a brew, bean, or other record, it is picked up by the firehose and stored in 89 + the witness cache to power the community feed and social features like likes and comments. 90 + </p> 91 + <p class="text-brown-700 leading-relaxed mt-3"> 92 + This indexing only applies to records using Arabica's lexicons &mdash; we do not read or store 93 + any of your data from other atproto applications. 68 94 </p> 69 - <ul class="list-disc list-inside space-y-2 text-brown-700 mt-3"> 70 - <li>Making public API calls to your PDS</li> 71 - <li>Temporarily caching brew data for feed display</li> 72 - </ul> 73 - // TODO: this hasn't been implemented yet 74 - // <p class="text-brown-700 leading-relaxed mt-3"> 75 - // You can opt out of the community feed at any time, and we'll stop reading your brews. 76 - // </p> 77 95 </section> 78 96 <section> 79 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">5. Service Availability</h2> 97 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">6. Service Availability</h2> 80 98 <p class="text-brown-700 leading-relaxed"> 81 99 Arabica is provided "as is" without warranties of any kind. We make reasonable efforts to keep 82 100 the service running but do not guarantee uptime or availability. Since your data is stored in ··· 84 102 </p> 85 103 </section> 86 104 <section> 87 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">6. Privacy</h2> 105 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">7. Privacy</h2> 106 + <p class="text-brown-700 leading-relaxed mb-3"> 107 + <strong>All data on the AT Protocol is public.</strong> Records you create in Arabica &mdash; brews, beans, 108 + equipment, likes, comments &mdash; are publicly accessible on your PDS and through the AT Protocol firehose. 109 + There is no expectation of privacy for data stored via the AT Protocol. Do not store sensitive or 110 + personal information in your brew records. 111 + </p> 88 112 <p class="text-brown-700 leading-relaxed"> 89 - We respect your privacy and follow these principles: 113 + With that said, we follow these principles regarding how Arabica operates: 90 114 </p> 91 115 <ul class="list-disc list-inside space-y-2 text-brown-700 mt-3"> 92 116 <li>We don't sell your data</li> 93 117 <li>We don't track you across websites</li> 94 118 <li>We use minimal analytics to understand service usage</li> 95 - <li>Your PDS and the AT Protocol control the privacy of your brew data</li> 119 + <li>We only index records using Arabica's own lexicons &mdash; we don't read your data from other apps</li> 96 120 </ul> 97 121 </section> 98 122 <section> 99 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">7. Open Source</h2> 123 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">8. Open Source</h2> 100 124 <p class="text-brown-700 leading-relaxed"> 101 125 Arabica is open source software. You can review the code, run your own instance, or contribute 102 126 improvements. The transparency of open source means you can verify that we're handling your data ··· 104 128 </p> 105 129 </section> 106 130 <section> 107 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">8. Changes to Terms</h2> 131 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">9. Changes to Terms</h2> 108 132 <p class="text-brown-700 leading-relaxed"> 109 133 We may update these terms occasionally. If we make significant changes, we'll notify users through 110 134 the application. Continued use of Arabica after changes constitutes acceptance of the new terms. 111 135 </p> 112 136 </section> 113 137 <section> 114 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">9. Acceptable Use</h2> 138 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">10. Acceptable Use</h2> 115 139 <p class="text-brown-700 leading-relaxed"> 116 140 Please use Arabica responsibly: 117 141 </p> ··· 122 146 </ul> 123 147 </section> 124 148 <section> 125 - <h2 class="text-2xl font-semibold text-brown-800 mb-4">10. Contact</h2> 149 + <h2 class="text-2xl font-semibold text-brown-800 mb-4">11. Contact</h2> 126 150 <p class="text-brown-700 leading-relaxed"> 127 151 Questions about these terms? You can reach us through our GitHub repository or by email at 128 152 <a href="mailto:mail@arabica.systems" class="link-bold">mail@arabica.systems</a>. ··· 130 154 </section> 131 155 <section class="card p-6 mt-8"> 132 156 <p class="text-sm text-brown-700"> 133 - <strong>Last Updated:</strong> January 2026 157 + <strong>Last Updated:</strong> March 29, 2026 134 158 <br/> 135 - <strong>Effective Date:</strong> January 2026 159 + <strong>Effective Date:</strong> March 29, 2026 136 160 </p> 137 161 </section> 138 162 </div>