a a vibe-coded abomination experiment of a fragrance review platform built on the atmosphere. drydown.social

Glossary#

Related Documents:

AT Protocol / Bluesky Terms#

AT Protocol (ATProto)#

The underlying protocol for Bluesky and other federated social apps. Provides authentication, data storage, and federation capabilities.

PDS (Personal Data Server)#

A server that stores a user's personal data in the AT Protocol network. Users can host their own PDS or use a provider like Bluesky.

DID (Decentralized Identifier)#

A unique identifier for users in AT Protocol. Format: did:plc:abc123...

Lexicon#

A schema definition that describes the structure of records, queries, procedures, and subscriptions in AT Protocol.

NSID (Namespaced Identifier)#

A unique identifier for lexicons using reverse-DNS notation. Example: social.drydown.review

Record#

Data stored in a user's repository. Examples: posts, profiles, follows, and custom data like fragrance reviews.

Repository (Repo)#

A user's collection of records in their PDS. Organized by collection type (NSID).

Collection#

A namespace for related records. Example: social.drydown.review is a collection of fragrance review records.

TID (Timestamp Identifier)#

A timestamp-based unique identifier for records. Used as the default key for records.

Rkey (Record Key)#

The unique identifier within a collection for a specific record. Can be a TID or a fixed value like "self".

OAuth 2.0#

Authentication protocol used by AT Protocol for user authorization.

DPoP (Demonstrating Proof of Possession)#

A security mechanism that binds access tokens to a specific client, preventing token theft.

Agent#

An API client instance (@atproto/api) authenticated with a user's session. Used to make API calls.


Fragrance Terms#

Sillage#

The trail of scent left behind by a fragrance. Also called "projection over distance."

Longevity#

How long a fragrance lasts on the skin before becoming undetectable.

Projection#

How far a fragrance projects from the body. Similar to sillage but measured closer to the wearer.

Top Notes#

The initial scents perceived immediately after application (0-15 minutes). Usually lighter, more volatile compounds.

Heart Notes (Middle Notes)#

The scents that emerge after top notes fade (15 minutes - 4 hours). The "character" of the fragrance.

Base Notes#

The lasting scents that appear after 4+ hours. Usually heavier, longer-lasting compounds.

Drydown#

The final stage of a fragrance's development when only base notes remain. Also the name of this app!

Skin Chemistry#

How a fragrance interacts with an individual's skin pH, oils, and body chemistry. The same fragrance can smell different on different people.

Complexity#

How many distinct notes or layers a fragrance has. A complex fragrance evolves over time with multiple facets.


App-Specific Terms#

Stage 1 (Initial)#

The first rating stage capturing top notes and first impressions (0-2 hours).

Stage 2 (Heart)#

The second rating stage capturing middle notes (2-4 hours after application).

Stage 3 (Final)#

The third rating stage capturing base notes, longevity, and overall experience (4+ hours after application).

In-Progress Review#

A review that hasn't completed all required stages yet. Stored in LocalStorage.

Completed Review#

A review with all required stages finished. Stored in AT Protocol repository.

Calculated Rating#

The final weighted average rating (0-5, to 3 decimal places) based on all stage ratings and user's custom weights.

Rating Weights#

User-configurable values (0-10) that determine how much each rating criterion affects the final calculated rating.

Grapheme#

A user-perceived character. Used for text length counting. Examples: "a" = 1 grapheme, "👍" = 1 grapheme, "👨‍👩‍👧‍👦" = 1 grapheme (family emoji).


Technical Terms#

LocalStorage#

Browser-based storage for client-side data. Used for in-progress reviews in Drydown.

Context API#

React/Preact pattern for passing data through the component tree without prop drilling.

Hooks#

React/Preact functions that let you use state and lifecycle features in function components. Examples: useState, useEffect, useContext.

SPA (Single Page Application)#

A web app that loads a single HTML page and dynamically updates content without full page reloads.

OAuth Client#

The application requesting authorization (Drydown). Receives access tokens after user approval.

OAuth Session#

An authenticated session containing access tokens and user information.

Bundle Size#

The total size of JavaScript/CSS files sent to the browser. Smaller is better for performance.

Code Splitting#

Breaking JavaScript into smaller chunks loaded on demand, improving initial load time.


Development Terms#

MVP (Minimum Viable Product)#

The simplest version of the product with core features. For Drydown: three-stage reviews, rating calculation, and Bluesky sharing.

P0/P1/P2 (Priority Levels)#

  • P0: Must-have for MVP (launch blocker)
  • P1: Important for good UX (launch soon after MVP)
  • P2: Nice-to-have (can launch without)

Phase#

A logical grouping of features for implementation. Drydown has 4 phases.

Status Indicators#

  • 🔴 Planned - Not started
  • 🟡 In Progress - Actively being worked on
  • 🟢 Implemented - Complete and tested
  • 🔵 Documented - Implemented with full documentation

Related Documents: