TENUE is a platform that transforms luxury fragrance from a private object into a persistent, visible, and social identity layer.
Users register the exact fragrances they own, log when they wear them, and connect with others through shared ownership. Each fragrance forms its own network ("village"), and each wear event contributes to a living map of fragrance presence.
TENUE enables identity to persist through scent.
TENUE is built on three fundamental signals:
Permanent record of which fragrances a user owns.
Ownership is binary. You either own a fragrance or you do not.
Ownership defines identity structure.
Temporal record of when a fragrance is worn.
Presence evolves over time through wear logging.
Presence defines identity continuity.
Community formed by shared ownership of a specific fragrance.
Each fragrance automatically forms its own network of owners.
Villages define identity adjacency.
TENUE consists of five core subsystems:
- Identity System
- Ownership System
- Presence (Wear Logging) System
- Village System
- Cultural Intelligence System
Provides persistent user identity.
Features:
- Email authentication
- User profile
- Username
- Profile photo (optional)
- LinkedIn integration (optional)
- Friend system (future expansion)
Purpose:
Creates persistent identity surface.
Tracks exact fragrance possession.
Features:
- Add fragrance to profile
- Ownership record creation
- Ownership timestamp
- Verified ownership (future: NFC / QR)
- Automatic village assignment
Ownership records are permanent.
Tracks fragrance usage over time.
Features:
- Log wear event
- Wear history timeline
- Most worn fragrances
- Presence strength calculation
Future integration:
- NFC tap logging
- QR scan logging
Presence transforms ownership into living identity.
Each fragrance forms its own community.
Village page includes:
- Fragrance information
- Owner list
- Ownership count
- Presence activity
Villages are generated dynamically.
Tracks fragrance presence across all users.
Features:
- Most owned fragrances
- Most worn fragrances
- Trending fragrances
- Presence momentum detection
Creates real-time cultural map of fragrance presence.
Tracks relationship between user and fragrance over time.
Features:
- Wear timeline
- Ownership timeline
- Optional notes
- Usage frequency
Creates narrative continuity.
First tap or scan:
- Registers ownership
- Creates ownership certificate
- Assigns village membership
Subsequent taps or scans:
- Logs wear event
- Updates presence timeline
- Updates cultural intelligence layer
MVP simulates this interaction via software button.
- Next.js
- React
- TypeScript
- TailwindCSS
Purpose:
- User interface
- Client-side interaction
- State management
Hosted on:
- Vercel
- Supabase
Provides:
- PostgreSQL database
- Authentication
- API layer
- Row-level security
Supabase functions as backend-as-a-service.
PostgreSQL via Supabase.
Stores:
- Users
- Fragrances
- Ownership records
- Wear events
- Friend relationships
Supabase Auth
Supports:
- Email login
- Session management
- OAuth (future expansion)
- Frontend: Vercel
- Backend: Supabase
- Database: PostgreSQL
Fully serverless architecture.
Stores identity.
Fields:
- id (uuid, primary key)
- email (text, unique)
- username (text)
- profile_photo_url (text)
- linkedin_url (text)
- created_at (timestamp)
Stores fragrance objects.
Fields:
- id (uuid, primary key)
- name (text)
- brand (text)
- image_url (text)
- fragrantica_url (text)
- created_at (timestamp)
Stores permanent ownership records.
Fields:
- id (uuid, primary key)
- user_id (uuid, foreign key)
- fragrance_id (uuid, foreign key)
- verified (boolean)
- created_at (timestamp)
Stores wear logging events.
Fields:
- id (uuid, primary key)
- user_id (uuid, foreign key)
- fragrance_id (uuid, foreign key)
- created_at (timestamp)
Stores friend relationships.
Fields:
- id (uuid, primary key)
- requester_id (uuid)
- receiver_id (uuid)
- status (pending, accepted)
- created_at (timestamp)
Creates new user identity.
Creates ownership record and assigns village membership.
Creates presence record and updates journal timeline.
Returns:
- Ownership records
- Wear history
- Village memberships
Returns:
- Owner list
- Ownership count
- Presence activity
Handles authentication.
Displays:
- Owned fragrances
- Wear timeline
- Village memberships
Displays:
- Fragrance information
- Owner list
- Village activity
Allows users to register ownership.
Displays wear history timeline.
Presence weight derived from wear frequency.
Example:
presence_weight = log(1 + wear_count)
This prevents runaway scaling while preserving relative strength.
Presence weight powers:
- Cultural rankings
- Identity strength
- Village activity
Frontend:
- Deploy using Vercel
Backend and database:
- Supabase
No dedicated backend server required.
Fully serverless deployment.
Minimum viable TENUE includes:
- User authentication
- Add fragrance ownership
- Profile page
- Fragrance village page
- Wear logging button
- Wear history timeline
Hardware integration not required for MVP.
Planned features:
- NFC ownership verification
- QR ownership verification
- Blockchain ownership certificates
- AI cultural intelligence modeling
- Recommendation systems
These extend the ownership-presence model.
TENUE creates a persistent identity layer anchored in fragrance ownership.
Ownership defines structure.
Presence defines continuity.
Villages define connection.
TENUE transforms fragrance into shared cultural presence.