This is the entire system, structurally.
This is the foundation.
Features
- User accounts (email login)
- Profile page
- Profile photo
- LinkedIn integration
- Friends system
Purpose
Creates persistent identity.
This defines what fragrances a user owns.
Features
- Add fragrance to profile
- Fragrance ownership record
- Verified ownership (future: NFC / QR)
- Ownership timestamp
- Village membership
Purpose
Defines identity structure.
This defines how identity evolves over time.
Features
- Log wear event (button for MVP)
- Wear history timeline
- Most worn fragrance
- Presence strength
Future
- NFC tap logging
- QR logging
Purpose
Defines identity behavior.
This connects users.
Features
- Fragrance page (village)
- List of owners
- List of friends who own it
- Most present members
Purpose
Creates community.
This shows macro patterns.
Features
- Most owned fragrances
- Most worn fragrances
- Trending fragrances
- Leaderboard
Purpose
Makes TENUE culturally alive.
This creates emotional continuity.
Features
- Wear timeline
- Optional notes
- Ownership timeline
Purpose
Creates narrative.
Build only these 5 features initially:
- User account
- Add fragrance ownership
- Profile page showing owned fragrances
- Fragrance page showing owners (village)
- Log wear button
That’s it.
No blockchain.
No NFC yet.
No AI yet.
Those come later.
This small system is enough to demonstrate TENUE.
Only build these pages:
User logs in.
Shows:
- username
- owned fragrances
- wear history
Example:
Archi
Owned:
- Delina
- Baccarat Rouge 540
Recent wears:
- Feb 12 — Delina
- Feb 10 — BR540
User selects fragrance from list.
Click: “Add to my collection”
Example:
Delina
Owners:
- Archi
- Maya
- Jordan
Inside profile or fragrance page:
Button: “Log wear”
Press → logs wear event
Do not overcomplicate this.
- Frontend: Next.js
- Backend + Database: Supabase
- Hosting: Vercel
Simple and powerful.
- id
- username
- created_at
- id
- name
- brand
- image_url
- id
- user_id
- fragrance_id
- created_at
- id
- user_id
- fragrance_id
- created_at
That’s enough.
Follow this exact order. Do not skip around.
- Create Supabase project
- Create Users table
- Create Fragrances table
- Create Ownership table
- Create WearEvents table
- Build login page
- Build profile page
- Build add fragrance button
- Build fragrance village page
- Build log wear button
Now TENUE exists.
- User signs up
- Adds Delina
- Their profile shows Delina
- They click “Log wear”
- Wear history appears
- They click Delina
- They see other Delina owners
This is already powerful. Everything else is expansion.
TENUE is not a perfume database.
TENUE is:
A network of presence anchored in fragrance ownership.
- Ownership creates structure
- Wear creates motion
- Villages create connection
That’s the system.