# Glossary **Related Documents**: - [Existing Code](./existing-code.md) - Current codebase - [Lexicon Schemas](../data/lexicon-schemas.md) - AT Protocol terms ## 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**: - [Product Features](../product/features.md) - Feature definitions using these terms - [Lexicon Schemas](../data/lexicon-schemas.md) - AT Protocol technical details - [Requirements](../product/requirements.md) - Detailed specifications