DEV Community

Shutbox
Shutbox

Posted on

Monthly Updates Report for my website

A few weeks ago, I created a post that offered a glimpse of my personal privacy-first email platform.

Since then, I have actively worked on a few things over the past 2 weeks.

1. UI Overhaul

The primary goal is to have a minimal and clean UI for emails, which made me reconsider my current design, as it looked like something from 2010.

I thought about it for a while, and then it clicked for me. Skiff Mail is my inspiration for the project, so I created the UI in a twisted Skiff style.

Old UI:
Old UI

New UI:

New UI Dark

New UI Light

Super satisfied, and it took a while for me to come up with this!

2. DMARC & DKIM Verification

Initially, inbound emails were not being verified for legitimacy, and I wanted to implement BIMI SVGs for official accounts to display their profile picture. But it looked off-putting in the actual UI, so I removed it. But now DMARC and DKIM verification for inbound emails works; it adds a few more seconds before the email appears in the inbox, though.

3. Passkey and 2FA implementation

These features are super important for security, so I have added these too. Passkey implementation is currently wonky, not that it does not work. It authenticates you to the session, but it cannot be used to decrypt your mail; it needs a password. This is by design, due to how OPAQUE works.

4. Avatar Generation

In my old UI, avatars were simply the first two letters of the email/name supplied. However, in the new UI, I have implemented Pixel Art from DiceBear, which has reportedly 1.13 × 10¹⁶ unique combinations- quadrillions in combination- which makes the email appear more lively.

5. On-device mail indexing

Previously, this was not implemented properly, resulting in broken client-side searching. Shutbox never sees your email and therefore cannot do server-side searching. For this reason, a summary is constructed every time you log in and stored in an encrypted format in the browser's IndexedDB. Whenever an email is opened, further hydration is provided to this encrypted storage (emails don't load until you actually open them; opening decrypts the email in the client). This also helped in adding simple filters such as from, to, is: starred/unread, etc.

These are all the changes I have implemented so far. Is there something else that the email needs? Would love to know your opinions!

Website: https://shutbox.im

Top comments (0)