Wardrobe

Loading…
Find + Add Item
← Considering ← Wardrobe

{{ itemForm.lifecycle === 'considering' ? 'Capture Considering item' : 'Add Item' }}

Photo, category and price are required so you can try it against your wardrobe and decide later.

Edit {{ itemBulkEditForms.length }} item{{ itemBulkEditForms.length === 1 ? '' : 's' }}

Loading…

{{ form.heading || 'Item' }}

{{ form.saveError }}

{{ itemLabel(detailItem) }}

Catalog
Cutout
Wear photos
No wear photos yet — use + Add
Category
Brand
{{ detailItem.brand?.name || '—' }}
Price
{{ detailItem.price != null ? formatItemPrice(detailItem.price, detailItem.currency) : '—' }}
Plutus plan
Bought
{{ formatIsoDate(detailItem.bought_on) || '—' }}
Created
{{ formatIsoDate(detailItem.created_at) || '—' }}
Tags
— {{ t.name }}
Colors
— {{ c.name }}
Note
Occasions
— {{ o.name }}
Seasons
— {{ seasonLabel(code) }}
Care
No care tags {{ t.name }}
Wear cycle
{{ wearCycleLine(detailItem) }}
From calendar entries

Looks

Randomize
In: {{ lookFilterItemLabel() }}

No looks with this piece yet.

Try in canvas

Wears

All wear photos, newest first. Linked wears can jump to the original look.
No wear photos yet — add one from a look detail page.

{{ lookLabel(detailLook) }}

{{ detailLook.stars || 0 }}/5
Edit photo
Items
Wear photos
No wear photos yet
Notes
Tags
Occasions
Seasons
Staple
{{ detailLook.is_staple ? 'Yes' : 'No' }}
Stars
{{ detailLook.stars || 0 }}/5
Items
{{ detailLook.items?.length || 0 }}

Calendar

{{ calendarMonthLabel }}
{{ w }}
{{ moment.name }}
{{ moment.name }}
{{ momentTimeRangeLabel(moment) }}

Laundry

Calendar outings since the last wash.

Occasions

Trip packing lists

+ New occasion

{{ packingForm.editId ? 'Edit occasion' : 'New occasion' }}

{{ detailPacking.name }}

{{ packingDateLabel(detailPacking) }} · {{ detailPacking.overview_count }} to bring · {{ detailPacking.in_bag_count || 0 }} in bag
Loading occasion…

Look Lab

Rules

Reusable outfit shapes. Generate outfits from a rule, or compose rules into generations.
No rules yet
A rule describes one outfit shape — a set of slots and cross-slot constraints. Generations pick from your rules and mix them together.
Create your first rule

Generator

Compose outfit recipes and preview fresh combinations from your wardrobe.
Building outfits around {{ generatorPinLabel() }} — rule previews always include it.
No recipes yet
Create a generation to describe the outfits you want the app to propose.
Create your first generation
← Generator

{{ activeGeneration.name }}

{{ (activeGeneration.rules || []).filter(r => r.kind==='whitelist').length }} whitelist rules {{ (activeGeneration.rules || []).filter(r => r.kind==='blacklist').length }} blacklist rules {{ activeGeneration.recommend_existing_looks ? 'Existing matches allowed' : 'Existing matches hidden' }}
Bound rules

Manage

Account
Signed in as {{ currentUser?.username || loginUser }}
Colors
Used for filtering and item metadata.
No colors
Categories
Use top-level rows as groups; nest entries underneath for filtering.
{{ catLabel(group.parent) }} ({{ countLabel(categoryGroupItemCount(group.parent.category_id)) }})
Effective: {{ categoryBodyPartsEffectiveLabel(group.parent) }}
No nested categories yet
No categories
Brands
Optional metadata for items.
No brands
Sellers
Shop / reseller / marketplace for a piece.
No sellers
Attributes
Structured facets (e.g. Sleeve length). Attach via body parts or categories from Assignments… here, or from Categories → Attributes…. Items pick values under each attribute.
{{ row.attribute.name }} ({{ countLabel(attributeItemCount(row.attribute.attribute_id)) }}) multi-value via body parts via categories
No values yet
No attributes
Tags
Free-flow labels (not attribute values).
No tags
Occasions
Contexts for items and looks (work, casual, formal…).
No occasions
Care tags
Laundry and care labels for items.
No care tags
Care templates
Named snapshots of care tags plus a care note.
No care templates
Users
Admin-only create/update/delete.
No users
Preferences
Personal settings for how the app shows your wardrobe and looks.
Preview mode
Auto uses your latest wear photo when available, otherwise it shows outfit composition.
Picker size
Comfortable uses a 3-column picker. Compact uses a denser 4-column picker.
Detail view
Canvas (default) opens looks as a collage editor and shows saved canvas layouts on the Looks list. Gallery keeps the classic 2×2 membership thumbnails and the thumbnail-grid detail page.
Columns
Placement
Columns control how many wardrobe tiles show per row. Right placement puts the browser beside the canvas on tablet/desktop; phones (under 768px) always keep it at the bottom.
Photo fill
White (default) sits behind cutouts and contained photos. Switch to black if light garments disappear on white.
Sums & Insights
Used for Insights Considering price totals. Each item still stores its original amount and currency; conversion uses fixed rates.
Tags & categories
Groups (parents with nested rows) list first. Collapsed (default) hides children until you open a group — applies to Manage and every tag/category picker.
Chip order
Default sorts Categories / Brands / Tags / Colors by how many items match (wardrobe or considering, depending on the screen). My order uses your drag reorder on any rail.

Plutus
Expires in 15 minutes; single use.
{{ plutusLinkError }}
Prefills the Plan in Plutus modal on Considering. You can still choose a different category per item.
Body
Measurements for your silhouette and Place-on-body.

Analytics

{{ lookLabel(planUnplannedPlaceLook) }}

Day
Moment

Add occasion dates or a moment first, then place this look.

Times must fall inside the occasion dates when those are set. End must be on or after start.
Optional — linked photos appear on that look’s wear history.