···45## Tech Stack
67-- **Language:** Go 1.21+
8- **HTTP:** stdlib `net/http` with Go 1.22 routing
9- **Storage:** AT Protocol PDS (user data), BoltDB (sessions/feed registry)
10- **Frontend:** Svelte SPA with client-side routing
···45## Tech Stack
67+- **Language:** Go 1.25+
8- **HTTP:** stdlib `net/http` with Go 1.22 routing
9- **Storage:** AT Protocol PDS (user data), BoltDB (sessions/feed registry)
10- **Frontend:** Svelte SPA with client-side routing
+3
BACKLOG.md
···84- The "back" button behaves kind of strangely
85 - Goes back to brews list after clicking on view bean in feed,
86 takes to profile for other users' brews.
000
···84- The "back" button behaves kind of strangely
85 - Goes back to brews list after clicking on view bean in feed,
86 takes to profile for other users' brews.
87+88+- Update terms page to be more clear about the public nature of all data
89+ - Link to about page and terms at the top of the unauthed feed
···1-<div class="max-w-4xl mx-auto">
2- <div class="bg-white rounded-xl p-8 shadow-lg">
3- <h1 class="text-3xl font-bold text-brown-900 mb-6">Terms of Service</h1>
00000000000000000000000000000045- <div class="prose prose-brown max-w-none text-brown-800 space-y-4">
6- <p class="text-sm text-brown-600 italic">
7- Last updated: {new Date().toLocaleDateString()}
0000008 </p>
0910- <h2 class="text-2xl font-bold text-brown-900 mt-8">
11- 1. Acceptance of Terms
012 </h2>
13- <p>
14- By accessing and using Arabica, you accept and agree to be bound by the
15- terms and provision of this agreement.
0016 </p>
00000001718- <h2 class="text-2xl font-bold text-brown-900 mt-8">
19- 2. Alpha Software Notice
0000000000000000000000000000000020 </h2>
21- <p>
22- Arabica is currently in alpha testing. Features, data structures, and
23- functionality may change without notice. We recommend backing up your
24- data regularly.
025 </p>
02627- <h2 class="text-2xl font-bold text-brown-900 mt-8">3. Data Storage</h2>
28- <p>
29- Your brewing data is stored in your Personal Data Server (PDS) via the
30- AT Protocol. Arabica does not store your brewing records on its servers.
31- You are responsible for the security and backup of your PDS.
00032 </p>
00000000003334- <h2 class="text-2xl font-bold text-brown-900 mt-8">
35- 4. User Responsibilities
036 </h2>
37- <p>
38- You are responsible for maintaining the confidentiality of your account
39- credentials and for all activities that occur under your account.
00000000040 </p>
00000004142- <h2 class="text-2xl font-bold text-brown-900 mt-8">
43- 5. Limitation of Liability
0000000000000044 </h2>
45- <p>
46- Arabica is provided "as is" without warranty of any kind. We are not
47- liable for any data loss, service interruptions, or other damages
48- arising from your use of the application.
49 </p>
05051- <h2 class="text-2xl font-bold text-brown-900 mt-8">
52- 6. Changes to Terms
053 </h2>
54- <p>
55- We reserve the right to modify these terms at any time. Continued use of
56- Arabica after changes constitutes acceptance of the modified terms.
57 </p>
58- </div>
00000000000000000000000000000000000000059 </div>
60</div>
···1+<script>
2+ function goBack() {
3+ if (window.history.length > 1) {
4+ window.history.back();
5+ } else {
6+ window.location.href = "/";
7+ }
8+ }
9+</script>
10+11+<div class="max-w-3xl mx-auto">
12+ <div class="flex items-center gap-3 mb-8">
13+ <button
14+ on:click={goBack}
15+ class="inline-flex items-center text-brown-700 hover:text-brown-900 font-medium transition-colors cursor-pointer"
16+ >
17+ <svg
18+ class="w-5 h-5"
19+ fill="none"
20+ stroke="currentColor"
21+ viewBox="0 0 24 24"
22+ xmlns="http://www.w3.org/2000/svg"
23+ >
24+ <path
25+ stroke-linecap="round"
26+ stroke-linejoin="round"
27+ stroke-width="2"
28+ d="M10 19l-7-7m0 0l7-7m-7 7h18"
29+ ></path>
30+ </svg>
31+ </button>
32+ <h1 class="text-4xl font-bold text-brown-800">Terms of Service</h1>
33+ </div>
3435+ <div class="prose prose-lg max-w-none space-y-6">
36+ <section class="bg-green-50 border border-green-200 p-6 rounded-lg mb-8">
37+ <h2 class="text-2xl font-semibold text-green-900 mb-4">
38+ The Simple Truth
39+ </h2>
40+ <p class="text-gray-800 text-lg leading-relaxed">
41+ <strong>You own all of your data.</strong> Period. Your brew logs, coffee
42+ beans, equipment information, and any other data you create in Arabica belongs
43+ to you and is stored in your Personal Data Server (PDS), not on our servers.
44 </p>
45+ </section>
4647+ <section>
48+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
49+ 1. Your Data Ownership
50 </h2>
51+ <!-- TODO: ensure this is correct, we may keep a witness cache of records -->
52+ <p class="text-gray-700 leading-relaxed">
53+ All data you create through Arabica is stored in your AT Protocol
54+ Personal Data Server (PDS). Arabica acts as an interface to your PDS but
55+ does not own, claim rights to, or permanently store your data.
56 </p>
57+ <ul class="list-disc list-inside space-y-2 text-gray-700 mt-3">
58+ <li>You retain full ownership and control of your data</li>
59+ <li>You can delete your data at any time</li>
60+ <li>You can switch PDS providers without losing your data</li>
61+ <li>You can stop using Arabica and your data remains in your PDS</li>
62+ </ul>
63+ </section>
6465+ <section>
66+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
67+ 2. What We Store
68+ </h2>
69+ <p class="text-gray-700 leading-relaxed mb-3">
70+ Arabica's servers store minimal data necessary for the application to
71+ function:
72+ </p>
73+ <ul class="list-disc list-inside space-y-2 text-gray-700">
74+ <li>
75+ <strong>Session information</strong> - Temporary authentication tokens
76+ to keep you logged in
77+ </li>
78+ <li>
79+ <strong>Feed registry</strong> - List of users who've opted into the community
80+ feed
81+ </li>
82+ <li>
83+ <strong>Temporary cache</strong> - Short-lived cache of your data to improve
84+ performance
85+ </li>
86+ </ul>
87+ <!-- TODO: This may not end up being true, for performance and validation purposes, commenting for now -->
88+ <!-- If we do keep data, we will respect delete requests from PDS's -->
89+ <!-- <p class="text-gray-700 leading-relaxed mt-3"> -->
90+ <!-- We do <strong>not</strong> store your brew logs, beans, equipment, or any -->
91+ <!-- other user-generated content on our servers. That data lives exclusively -->
92+ <!-- in your PDS. -->
93+ <!-- </p> -->
94+ </section>
95+96+ <section>
97+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
98+ 3. Authentication
99 </h2>
100+ <p class="text-gray-700 leading-relaxed">
101+ Arabica uses OAuth to authenticate with your PDS. We never see or store
102+ your PDS password. Authentication is handled between your browser and
103+ your PDS, with Arabica receiving only temporary access tokens to read
104+ and write data on your behalf.
105 </p>
106+ </section>
107108+ <section>
109+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
110+ 4. Community Feed
111+ </h2>
112+ <p class="text-gray-700 leading-relaxed">
113+ If you opt into the community feed, Arabica will periodically read your
114+ public brew records from your PDS to display them to other users. This
115+ is done by:
116 </p>
117+ <ul class="list-disc list-inside space-y-2 text-gray-700 mt-3">
118+ <li>Making public API calls to your PDS</li>
119+ <li>Temporarily caching brew data for feed display</li>
120+ <li>Not storing your data permanently on our servers</li>
121+ </ul>
122+ <p class="text-gray-700 leading-relaxed mt-3">
123+ You can opt out of the community feed at any time, and we'll stop
124+ reading your brews.
125+ </p>
126+ </section>
127128+ <section>
129+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
130+ 5. Service Availability
131 </h2>
132+ <p class="text-gray-700 leading-relaxed">
133+ Arabica is provided "as is" without warranties of any kind. We make
134+ reasonable efforts to keep the service running but do not guarantee
135+ uptime or availability. Since your data is stored in your PDS (not our
136+ servers), you won't lose your data if Arabica goes offline.
137+ </p>
138+ </section>
139+140+ <section>
141+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">6. Privacy</h2>
142+ <p class="text-gray-700 leading-relaxed">
143+ We respect your privacy and follow these principles:
144 </p>
145+ <ul class="list-disc list-inside space-y-2 text-gray-700 mt-3">
146+ <li>We don't sell your data</li>
147+ <li>We don't track you across websites</li>
148+ <li>We use minimal analytics to understand service usage</li>
149+ <li>We don't share your data with third parties</li>
150+ </ul>
151+ </section>
152153+ <section>
154+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">7. Open Source</h2>
155+ <p class="text-gray-700 leading-relaxed">
156+ Arabica is open source software. You can review the <a
157+ href="https://tangled.org/arabica.social/arabica"
158+ class="text-brown-700 hover:underline font-medium"
159+ target="_blank">code</a
160+ >, run your own instance, or contribute improvements. The transparency
161+ of open source means you can verify that we're handling your data as
162+ described in these terms.
163+ </p>
164+ </section>
165+166+ <section>
167+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
168+ 8. Changes to Terms
169 </h2>
170+ <p class="text-gray-700 leading-relaxed">
171+ We may update these terms occasionally. If we make significant changes,
172+ we'll notify users through the application. Continued use of Arabica
173+ after changes constitutes acceptance of the new terms.
174 </p>
175+ </section>
176177+ <section>
178+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">
179+ 9. Acceptable Use
180 </h2>
181+ <p class="text-gray-700 leading-relaxed">
182+ Please use Arabica responsibly:
0183 </p>
184+ <ul class="list-disc list-inside space-y-2 text-gray-700 mt-3">
185+ <li>Don't attempt to access other users' data without permission</li>
186+ <li>Don't abuse the service with excessive API requests</li>
187+ <li>Don't use Arabica for illegal purposes</li>
188+ <li>Be respectful in community interactions</li>
189+ </ul>
190+ </section>
191+192+ <section>
193+ <h2 class="text-2xl font-semibold text-brown-800 mb-4">10. Contact</h2>
194+ <p class="text-gray-700 leading-relaxed">
195+ Questions about these terms? You can reach us through our <a
196+ href="https://tangled.org/arabica.social/arabica"
197+ class="text-brown-700 hover:underline font-medium"
198+ target="_blank">Tangled repository</a
199+ >
200+ or by email at
201+ <a
202+ href="mailto:mail@arabica.systems"
203+ class="text-brown-700 hover:underline font-medium"
204+ >mail@arabica.systems</a
205+ >.
206+ </p>
207+ </section>
208+209+ <section class="bg-gray-100 p-6 rounded-lg mt-8">
210+ <p class="text-sm text-gray-600">
211+ <strong>Last Updated:</strong> January 2026<br />
212+ <strong>Effective Date:</strong> January 2026
213+ </p>
214+ </section>
215+ </div>
216+217+ <div class="mt-12 text-center">
218+ <a
219+ href="/brews/new"
220+ class="inline-block bg-gradient-to-r from-brown-700 to-brown-800 text-white px-8 py-3 rounded-lg hover:from-brown-800 hover:to-brown-900 transition-all font-semibold shadow-lg hover:shadow-xl"
221+ >
222+ Back to Home</a
223+ >
224 </div>
225</div>