···1414 - Is there a compelling reason to do this?
1515 - Might be good as a sort of witness-cache type thing
16161717+- The profile, manage, and brews list pages all function in a similar fashion,
1818+ should one or more of them be consolidated?
1919+ - Manage + brews list together probably makes sense
2020+1721## Features
182219231. LARGE: complete record styling refactor that changes from table-style to more mobile-friendly style
···45494650## Fixes
47514848-- Migrate terms and about page text. Add links to about at top of non-authed home page
5252+- Migrate terms page text. Add links to about at top of non-authed home page
49535054- Backfill on startup should be cache invalidated if time since last backfill exceeds some amount (set in code/env var maybe?)
5155···53575458- Profile page should show more details, and allow brew entries to take up more vertical space
55595656-- Show "view" button on brews in profile page
6060+- Show "view" button on brews in profile page (same as on brews list page)
6161+6262+- Navigating to "my profile" while on another user's profile, the url changes but the page does not change
6363+6464+- Clicking "back to brews" on brew view page returns user to their brews list, even if the brew belonged to another user
+190-44
frontend/src/routes/About.svelte
···11<script>
22 import { navigate } from "../lib/router.js";
33+ import { authStore } from "../stores/auth.js";
44+55+ $: isAuthenticated = $authStore.isAuthenticated;
66+77+ function goBack() {
88+ if (window.history.length > 1) {
99+ window.history.back();
1010+ } else {
1111+ navigate("/");
1212+ }
1313+ }
314</script>
41555-<div class="max-w-4xl mx-auto">
1616+<div class="max-w-3xl mx-auto">
1717+ <div class="flex items-center gap-3 mb-8">
1818+ <button
1919+ on:click={goBack}
2020+ class="inline-flex items-center text-brown-700 hover:text-brown-900 font-medium transition-colors cursor-pointer"
2121+ >
2222+ <svg
2323+ class="w-5 h-5"
2424+ fill="none"
2525+ stroke="currentColor"
2626+ viewBox="0 0 24 24"
2727+ xmlns="http://www.w3.org/2000/svg"
2828+ >
2929+ <path
3030+ stroke-linecap="round"
3131+ stroke-linejoin="round"
3232+ stroke-width="2"
3333+ d="M10 19l-7-7m0 0l7-7m-7 7h18"
3434+ ></path>
3535+ </svg>
3636+ </button>
3737+ <h1 class="text-4xl font-bold text-brown-900">About Arabica</h1>
3838+ <span
3939+ class="text-sm bg-amber-400 text-brown-900 px-3 py-1 rounded-md font-semibold shadow-sm"
4040+ >ALPHA</span
4141+ >
4242+ </div>
4343+644 <div
77- class="bg-gradient-to-br from-amber-50 to-brown-100 rounded-xl p-8 border-2 border-brown-300 shadow-lg"
4545+ class="bg-amber-50 border-l-4 border-amber-400 p-4 mb-6 rounded-r-lg"
846 >
99- <h1 class="text-3xl font-bold text-brown-900 mb-6">About Arabica</h1>
4747+ <p class="text-sm text-brown-800">
4848+ <strong>Alpha Software:</strong> Arabica is currently in early development.
4949+ Features may change, and data structures could be modified in future updates.
5050+ </p>
5151+ </div>
10521111- <div class="prose prose-brown max-w-none">
1212- <p class="text-lg text-brown-800 mb-4">
1313- Arabica is a coffee brew tracking application that leverages the AT
1414- Protocol for decentralized data storage.
5353+ <div class="prose prose-lg max-w-none space-y-6">
5454+ <section>
5555+ <h2 class="text-2xl font-semibold text-brown-900 mb-4">
5656+ Your Coffee Journey, Your Data
5757+ </h2>
5858+ <p class="text-brown-800 leading-relaxed">
5959+ Arabica is a coffee brew tracking application built on the AT Protocol,
6060+ a decentralized social networking protocol. Unlike traditional apps
6161+ where your data is locked in a company's database, Arabica stores your
6262+ brew logs, coffee beans, and equipment information in <strong
6363+ >your own Personal Data Server (PDS)</strong
6464+ >.
1565 </p>
6666+ </section>
16671717- <h2 class="text-2xl font-bold text-brown-900 mt-8 mb-4">Features</h2>
1818- <ul class="space-y-2 text-brown-800">
1919- <li class="flex items-start">
2020- <span class="mr-2">🔒</span>
2121- <span
2222- ><strong>Decentralized:</strong> Your data lives in your Personal Data
2323- Server (PDS)</span
2424- >
6868+ <section
6969+ class="bg-gradient-to-br from-brown-100 to-brown-200 p-6 rounded-xl border border-brown-300"
7070+ >
7171+ <h3 class="text-xl font-semibold text-brown-900 mb-3">
7272+ What Makes Arabica Different?
7373+ </h3>
7474+ <ul class="list-disc list-inside space-y-2 text-brown-800">
7575+ <li>
7676+ <strong>You own your data</strong> - All your brew logs live in your
7777+ PDS, not our servers
2578 </li>
2626- <li class="flex items-start">
2727- <span class="mr-2">🚀</span>
2828- <span><strong>Portable:</strong> Own your coffee brewing history</span
2929- >
7979+ <li>
8080+ <strong>Portable identity</strong> - Switch PDS providers anytime without
8181+ losing your data
3082 </li>
3131- <li class="flex items-start">
3232- <span class="mr-2">📊</span>
3333- <span
3434- >Track brewing variables like temperature, time, and grind size</span
3535- >
8383+ <li>
8484+ <strong>Privacy by design</strong> - You control who sees your brews
3685 </li>
3737- <li class="flex items-start">
3838- <span class="mr-2">🌍</span>
3939- <span>Organize beans by origin and roaster</span>
8686+ <li>
8787+ <strong>Open protocol</strong> - Built on the AT Protocol, the same technology
8888+ powering Bluesky
4089 </li>
4141- <li class="flex items-start">
4242- <span class="mr-2">📝</span>
4343- <span>Add tasting notes and ratings to each brew</span>
9090+ </ul>
9191+ </section>
9292+9393+ <section>
9494+ <h2 class="text-2xl font-semibold text-brown-900 mb-4">Features</h2>
9595+ <div class="grid md:grid-cols-2 gap-4">
9696+ <div
9797+ class="bg-gradient-to-br from-brown-50 to-brown-100 border border-brown-200 p-4 rounded-lg shadow-md"
9898+ >
9999+ <h4 class="font-semibold text-brown-900 mb-2">Track Your Brews</h4>
100100+ <p class="text-brown-700 text-sm">
101101+ Log every detail: beans, grind size, water temp, brew time, and
102102+ tasting notes
103103+ </p>
104104+ </div>
105105+ <div
106106+ class="bg-gradient-to-br from-brown-50 to-brown-100 border border-brown-200 p-4 rounded-lg shadow-md"
107107+ >
108108+ <h4 class="font-semibold text-brown-900 mb-2">Manage Equipment</h4>
109109+ <p class="text-brown-700 text-sm">
110110+ Keep track of your grinders, brewers, beans, and roasters
111111+ </p>
112112+ </div>
113113+ <div
114114+ class="bg-gradient-to-br from-brown-50 to-brown-100 border border-brown-200 p-4 rounded-lg shadow-md"
115115+ >
116116+ <h4 class="font-semibold text-brown-900 mb-2">Community Feed</h4>
117117+ <p class="text-brown-700 text-sm">
118118+ Share your best brews with the community (coming soon: likes and
119119+ comments!)
120120+ </p>
121121+ </div>
122122+ <div
123123+ class="bg-gradient-to-br from-brown-50 to-brown-100 border border-brown-200 p-4 rounded-lg shadow-md"
124124+ >
125125+ <h4 class="font-semibold text-brown-900 mb-2">Export Your Data</h4>
126126+ <p class="text-brown-700 text-sm">
127127+ Export all your brews anytime in JSON format
128128+ </p>
129129+ </div>
130130+ </div>
131131+ </section>
132132+133133+ <section>
134134+ <h2 class="text-2xl font-semibold text-brown-900 mb-4">
135135+ The AT Protocol Advantage
136136+ </h2>
137137+ <p class="text-brown-800 leading-relaxed">
138138+ The AT Protocol is a decentralized social networking protocol that
139139+ gives users true ownership of their data and identity. When you use
140140+ Arabica:
141141+ </p>
142142+ <ul class="list-disc list-inside space-y-2 text-brown-800 mt-3">
143143+ <li>
144144+ Your brew data is stored as ATProto records in collections on your
145145+ PDS
146146+ </li>
147147+ <li>You authenticate via OAuth with your PDS, not with us</li>
148148+ <li>
149149+ References between records (like linking a brew to a bean) use
150150+ AT-URIs
151151+ </li>
152152+ <li>
153153+ Your identity is portable - change PDS providers without losing your
154154+ account
44155 </li>
45156 </ul>
157157+ </section>
461584747- <h2 class="text-2xl font-bold text-brown-900 mt-8 mb-4">AT Protocol</h2>
159159+ <section
160160+ class="bg-gradient-to-br from-amber-50 to-brown-100 border-2 border-brown-300 p-6 rounded-xl shadow-lg"
161161+ >
162162+ <h3 class="text-xl font-semibold text-brown-900 mb-3">
163163+ Getting Started
164164+ </h3>
48165 <p class="text-brown-800 mb-4">
4949- The Authenticated Transfer Protocol (AT Protocol) is a decentralized
5050- social networking protocol that gives you full ownership of your data.
5151- Your brewing records are stored in your own PDS, not in Arabica's
5252- servers.
166166+ To use Arabica, you'll need an account on a PDS that supports the AT
167167+ Protocol. The easiest way is to create a Bluesky account at <a
168168+ href="https://bsky.app"
169169+ class="text-brown-700 hover:underline font-medium"
170170+ target="_blank"
171171+ rel="noopener noreferrer">bsky.app</a
172172+ >.
173173+ </p>
174174+ <p class="text-brown-800">
175175+ Once you have an account, simply log in with your handle (e.g.,
176176+ yourname.bsky.social) and start tracking your brews!
53177 </p>
178178+ </section>
541795555- <div class="mt-8">
5656- <button
5757- on:click={() => navigate("/")}
5858- class="bg-gradient-to-r from-brown-700 to-brown-800 text-white px-6 py-3 rounded-lg hover:from-brown-800 hover:to-brown-900 transition-all font-semibold shadow-lg"
5959- >
6060- Get Started
6161- </button>
6262- </div>
6363- </div>
180180+ <section>
181181+ <h2 class="text-2xl font-semibold text-brown-900 mb-4">Open Source</h2>
182182+ <p class="text-brown-800 leading-relaxed">
183183+ Arabica is open source software. You can view the code, contribute, or
184184+ even run your own instance. Visit our <a
185185+ href="https://github.com/ptdewey/arabica"
186186+ class="text-brown-700 hover:underline font-medium"
187187+ target="_blank"
188188+ rel="noopener noreferrer">GitHub repository</a
189189+ > to learn more.
190190+ </p>
191191+ </section>
192192+ </div>
193193+194194+ <div class="mt-12 text-center">
195195+ {#if !isAuthenticated}
196196+ <a
197197+ href="/login"
198198+ 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"
199199+ >
200200+ Get Started
201201+ </a>
202202+ {:else}
203203+ <a
204204+ href="/brews/new"
205205+ 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"
206206+ >
207207+ Log Your Next Brew
208208+ </a>
209209+ {/if}
64210 </div>
65211</div>