chore: update about page content
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
|||||||
LockLaminatedIcon,
|
LockLaminatedIcon,
|
||||||
LockOpenIcon,
|
LockOpenIcon,
|
||||||
PasswordIcon,
|
PasswordIcon,
|
||||||
|
PeaceIcon,
|
||||||
PersonArmsSpreadIcon,
|
PersonArmsSpreadIcon,
|
||||||
PersonIcon,
|
PersonIcon,
|
||||||
ScrollIcon,
|
ScrollIcon,
|
||||||
@@ -207,7 +208,7 @@ function SpecsSection() {
|
|||||||
<h1 className="relative tracking-tighter text-5xl md:text-8xl text-neutral-content/80 font-extrabold italic font-display z-10">
|
<h1 className="relative tracking-tighter text-5xl md:text-8xl text-neutral-content/80 font-extrabold italic font-display z-10">
|
||||||
S'more Specs
|
S'more Specs
|
||||||
</h1>
|
</h1>
|
||||||
<div className="flex flex-col items-start shrink-0 gap-6 max-w-11/12 w-200 mt-4 md:mt-12">
|
<div className="flex flex-col items-center shrink-0 gap-6 max-w-11/12 w-220 mt-4 md:mt-12">
|
||||||
<h2 className="text-xl md:text-3xl text-center mx-auto">
|
<h2 className="text-xl md:text-3xl text-center mx-auto">
|
||||||
<Logo type={"inline"} /> uses{" "}
|
<Logo type={"inline"} /> uses{" "}
|
||||||
<span className="text-accent font-mono">Zero Knowledge</span>{" "}
|
<span className="text-accent font-mono">Zero Knowledge</span>{" "}
|
||||||
@@ -230,31 +231,31 @@ function SpecsSection() {
|
|||||||
ncryption
|
ncryption
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>{" "}
|
</span>{" "} for your letters, with{" "}
|
||||||
with{" "}
|
<a href="https://hackernoon.com/what-the-heck-is-envelope-encryption-in-cloud-security" target="_blank" rel="noopener noreferrer" className="font-mono text-primary">Envelope Encryption</a> for the keys.
|
||||||
<span className="font-mono text-primary">Envelope Encryption</span>
|
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-sm md:text-xl leading-relaxed">
|
<p className="text-sm md:text-xl leading-relaxed">
|
||||||
This means, both the encryption and decryption runs on your device, in
|
This means, both the encryption and decryption runs on your device, in your browser.
|
||||||
your browser.
|
<ul className="list-decimal list-inside opacity-60 marker:text-primary marker:font-mono marker:text-base">
|
||||||
<br />
|
<li>Every letter has a{" "}
|
||||||
Every letter has a{" "}
|
|
||||||
<span className="font-mono text-primary">unique key</span> which is
|
<span className="font-mono text-primary">unique key</span> which is
|
||||||
derived from your original password.
|
derived from your original password.</li>
|
||||||
<br />
|
<li>Both the letter and the key are encrypted securely and sent to the
|
||||||
Both the letter and the key are encrypted securely and sent to the
|
|
||||||
server.
|
server.
|
||||||
<br />
|
</li>
|
||||||
|
<li>
|
||||||
Now, the server holds{" "}
|
Now, the server holds{" "}
|
||||||
<span className="text-primary font-bold">the envelope</span>,{" "}
|
<span className="text-primary font-bold">the envelope</span>,{" "}
|
||||||
<span className="text-primary font-bold">the seal</span> and{" "}
|
<span className="text-primary font-bold">the seal</span> and{" "}
|
||||||
<span className="text-primary font-bold">another locked box</span>{" "}
|
<span className="text-primary font-bold">another locked box</span>—with a key inside that unseals your letter.
|
||||||
with a key inside that unseals your letter. But you,{" "}
|
</li>
|
||||||
<span className="italic text-primary">only you</span>, hold the only
|
</ul>
|
||||||
thing that opens the box —{" "}
|
But you—
|
||||||
|
<span className="italic">only you</span>—hold the very
|
||||||
|
thing that opens that box,{" "}
|
||||||
<span className="font-mono text-accent">your password</span>.
|
<span className="font-mono text-accent">your password</span>.
|
||||||
</p>
|
</p>
|
||||||
<p className="text-sm md:text-xl text-right w-full flex items-center justify-end gap-4 leading-relaxed">
|
<p className="text-xs md:text-lg text-right w-full flex items-center justify-end gap-4 leading-relaxed text-neutral-content/80">
|
||||||
Nothing on the server is readable without your actual password.
|
Nothing on the server is readable without your actual password.
|
||||||
<br />
|
<br />
|
||||||
Even if someone were to breach in, all they'd find is encrypted noise.
|
Even if someone were to breach in, all they'd find is encrypted noise.
|
||||||
@@ -274,18 +275,18 @@ function SpecsSection() {
|
|||||||
|
|
||||||
<Modal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)}>
|
<Modal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)}>
|
||||||
<div className="w-full bg-paper rounded-md p-6">
|
<div className="w-full bg-paper rounded-md p-6">
|
||||||
<img src="/screenshots/e2e.svg" alt="pi ku e2e diagram" />
|
<img src="/screenshots/e2e.svg" width={"100%"} alt="pi ku e2e diagram" />
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
<p className="text-sm md:text-lg">
|
<p className="text-sm md:text-lg">
|
||||||
This level of privacy comes with a catch.{" "}
|
Of course, this level of <span className="text-success font-bold">privacy</span> comes with a catch.{" "}
|
||||||
<span className="text-error font-bold">No password reset.</span>
|
<span className="text-error font-bold">No password reset</span> for you.
|
||||||
</p>
|
</p>
|
||||||
<p className="text-sm md:text-lg alert alert-warning font-semibold">
|
<p className="text-xs md:text-base alert alert-warning font-medium">
|
||||||
<InfoIcon weight="duotone" /> Your original password is never stored
|
<InfoIcon weight="duotone" /> Your original password is never stored
|
||||||
on the server. Which means if it's lost, the letters stay sealed
|
on the server. Which means, if it's lost, the letters stay sealed
|
||||||
forever.
|
foreeeeveer.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -314,7 +315,7 @@ function OSSSection() {
|
|||||||
</h1>
|
</h1>
|
||||||
<div className="flex flex-col items-center shrink-0 max-w-11/12 w-200 gap-4 p-4 md:p-6">
|
<div className="flex flex-col items-center shrink-0 max-w-11/12 w-200 gap-4 p-4 md:p-6">
|
||||||
<p className="text-sm md:text-xl">
|
<p className="text-sm md:text-xl">
|
||||||
<Logo type={"mono"} /> is fully open source. Every claim about privacy
|
<Logo type={"mono"} /> is fully <span className="text-success font-display">open source</span>. Every claim about privacy
|
||||||
and encryption is publicly available in the code so you don't have to
|
and encryption is publicly available in the code so you don't have to
|
||||||
take anyone's word for it.
|
take anyone's word for it.
|
||||||
</p>
|
</p>
|
||||||
@@ -323,7 +324,7 @@ function OSSSection() {
|
|||||||
<span className="uppercase font-bold text-primary">Self-host</span>{" "}
|
<span className="uppercase font-bold text-primary">Self-host</span>{" "}
|
||||||
<Logo type={"inline"} /> in just 4 steps.
|
<Logo type={"inline"} /> in just 4 steps.
|
||||||
</p>
|
</p>
|
||||||
<div className="mockup-code w-full text-xs">
|
<div className="mockup-code max-w-110 text-xs">
|
||||||
<pre data-prefix="$">
|
<pre data-prefix="$">
|
||||||
<code>git clone https://git.ramvignesh.dev/me/pi-ku.git</code>
|
<code>git clone https://git.ramvignesh.dev/me/pi-ku.git</code>
|
||||||
</pre>
|
</pre>
|
||||||
@@ -345,7 +346,7 @@ function OSSSection() {
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="text-primary"
|
className="text-primary"
|
||||||
>
|
>
|
||||||
View on GitHub
|
View Source
|
||||||
</a>
|
</a>
|
||||||
<p className="text-xs md:text-base opacity-70">
|
<p className="text-xs md:text-base opacity-70">
|
||||||
Found something to report or request?{" "}
|
Found something to report or request?{" "}
|
||||||
@@ -783,7 +784,7 @@ function AttributionSection() {
|
|||||||
<div className="flex flex-col items-center shrink-0">
|
<div className="flex flex-col items-center shrink-0">
|
||||||
<div
|
<div
|
||||||
className={
|
className={
|
||||||
"max-w-200 m-2 md:m-8 text-sm md:text-lg px-4 md:px-8 py-6 md:py-12 flex flex-col gap-4 md:gap-8 text-base-100 leading-relaxed bg-paper font-mono tracking-tight"
|
"max-w-200 m-2 md:m-8 text-sm md:text-lg p-6 md:p-12 flex flex-col gap-4 md:gap-8 text-base-100 leading-relaxed bg-paper font-mono tracking-tight"
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
Hi.
|
Hi.
|
||||||
@@ -799,16 +800,18 @@ function AttributionSection() {
|
|||||||
>
|
>
|
||||||
CS50W
|
CS50W
|
||||||
</a>{" "}
|
</a>{" "}
|
||||||
capstone, one I kept postponing until I ran out of reasons not to.
|
capstone—one I kept postponing until I ran out of excuses.
|
||||||
When I eventually sat down to build, I knew it had to be more than a
|
When I sat down to build it, it felt heavier than a typical assignment—not just because things were difficult. It had to be something that outlasted the grade.
|
||||||
deadline; it had to be something that outlasted the grade. I wanted
|
I wanted to make this one count more than anything else I'd ever made. Something as close to perfect as I could get it. Something to be remembered for—a Swan Song if you will.
|
||||||
to create a space for the feelings we usually keep to ourselves and
|
|
||||||
every hour spent on it was worth it. I've shared the edges of{" "}
|
|
||||||
<Logo type={"inline"} /> here, but the heart of it is best found by
|
|
||||||
exploring it yourself.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
I kept coming back to{" "}
|
So, I gave it all I've got.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Of course, frustrations, id-exisi crises, crept in from time to time. But <Logo type="inline" /> helped me re-kindle the love for the odd hours spent obsessing over the tiniest UX decisions and endlessly polishing the UI <span className="font-hand">(only if I could've just made my mind up on one design system sooner, instead of paddling in a sea of muses, muses everywhere)</span>. I know I've shared the nuts and bolts of <Logo type={"inline"} /> here—the core philosophies, how it all works—but the heart of it is really something you have to find by exploring it yourself.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The "why" behind all of this didn't just appear out of nowhere. For a while, I kept coming back to{" "}
|
||||||
<span
|
<span
|
||||||
role="tooltip"
|
role="tooltip"
|
||||||
className="cursor-default ul-wavy text-accent"
|
className="cursor-default ul-wavy text-accent"
|
||||||
@@ -838,34 +841,27 @@ function AttributionSection() {
|
|||||||
>
|
>
|
||||||
The Lunchbox
|
The Lunchbox
|
||||||
</a>{" "}
|
</a>{" "}
|
||||||
—{" "}
|
—
|
||||||
<span className="italic">
|
brought to life with such subtle brilliance by Irrfan Khan <PeaceIcon className="inline text-accent" />
|
||||||
one of the most subtle yet brilliant portrayals by Irrfan Khan
|
—the quiet emotional weight he carries through a lonely and mechanized life, right up until those letters arrive and something inside him finally loosens. The ending feels like a deep sigh of "it is what it is," but the simple act of writing—of letting the unsaid out—offered him a brief, yet necessary ease. I think about that a lot.
|
||||||
</span>{" "}
|
|
||||||
— the quiet emotional weight he carries throughout the film,
|
|
||||||
going through the motions of a lonely life, until those letters
|
|
||||||
arrive and something inside him finally loosens. Of course, the
|
|
||||||
ending felt like a deep sigh of "it is what it is". But something
|
|
||||||
about the act of writing and letting the unsaid out eased it, even
|
|
||||||
briefly. I think about that a lot.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
There's a lot that goes{" "}
|
There's a lot that goes{" "}
|
||||||
<span className={"text-primary font-hand text-lg md:text-xl"}>
|
<span className={"text-primary font-hand text-lg md:text-xl"}>
|
||||||
unsaid
|
unsaid
|
||||||
</span>{" "}
|
</span>{" "}
|
||||||
now. Not that people feel less or for the lack of time, but because
|
these days. Not for a lack of feeling, not for the lack of time, but because
|
||||||
the ways we reach each other have quietly changed. We're always
|
the ways we reach each other have quietly changed. We're always
|
||||||
reachable <span className="italic">digitally,</span> yet somehow the
|
reachable <span className="italic">digitally,</span> yet somehow the
|
||||||
things that matter most end up staying inside.
|
things that actually matter most end up staying inside—a trapped one at that.
|
||||||
<br />
|
<br />
|
||||||
Maybe writing will help with that. Maybe something about putting
|
Maybe writing can/will help. Maybe putting
|
||||||
words somewhere deliberate makes them feel less like something
|
words somewhere deliberate makes them feel less like a weight
|
||||||
you're carrying.
|
you're carrying alone.
|
||||||
</p>
|
</p>
|
||||||
<p>Or maybe it won't, but it's worth a try.</p>
|
<p>Or maybe it won't—but it's worth a try.</p>
|
||||||
<p>
|
<p>
|
||||||
<Logo type={"inline"} /> is for that try. I hope it helps.
|
<Logo type={"inline"} /> is for that try. I hope it helps. Really.
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
className={
|
className={
|
||||||
@@ -874,6 +870,9 @@ function AttributionSection() {
|
|||||||
>
|
>
|
||||||
— Ram
|
— Ram
|
||||||
</p>
|
</p>
|
||||||
|
<p className="text-xs md:text-sm opacity-75 italic">
|
||||||
|
P.S. And just so we're clear—I wrote every word of this myself—as I continue to back <a href="https://em-dash-appreciation.org/" target="_blank" rel="noopener noreferrer">Em DASH</a>. Why should AI get to have all the fun with 'em em dashes? <span className="font-hand">(get it?)</span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<blockquote className="text-primary/50 italic mt-8 md:mt-12 mx-auto border-l-primary/20 leading-relaxed border-l pl-4 max-w-11/12 text-lg">
|
<blockquote className="text-primary/50 italic mt-8 md:mt-12 mx-auto border-l-primary/20 leading-relaxed border-l pl-4 max-w-11/12 text-lg">
|
||||||
"I think we forget things if there is nobody to tell them."
|
"I think we forget things if there is nobody to tell them."
|
||||||
|
|||||||
Reference in New Issue
Block a user