diff --git a/public/app.js b/public/app.js index 81f2ce4..83caffd 100644 --- a/public/app.js +++ b/public/app.js @@ -51,6 +51,25 @@ const profiles = { }, }; const state = { ideas: [], milestones: [], activity: [], activeId: null, selected: null, profileId: localStorage.getItem('rank-profile') || 'mvp', undo: null, recentPlacement: null }; +const sampleBacklog = { + format: 'prioritix-feature-set-v1', + name: 'Messy SaaS launch backlog', + features: [ + { title: 'Mobile sorting flow feels clumsy', description: 'Users can capture ideas, but the phone flow makes prioritizing feel like work instead of relief.', labels: ['Mobile', 'Activation'], impact: 9, effort: 4, confidence: 8, urgency: 8 }, + { title: 'Team voting on every feature', description: 'Stakeholders want input, but voting may create politics before the product has a clear decision model.', labels: ['Collaboration'], impact: 7, effort: 7, confidence: 4, urgency: 5 }, + { title: 'Export roadmap for sales calls', description: 'Turn sorted decisions into something founders can share with clients or internal buyers.', labels: ['Sales', 'Export'], impact: 8, effort: 5, confidence: 7, urgency: 7 }, + { title: 'Dark mode polish', description: 'Nice for taste, but unlikely to decide whether anyone trusts the core prioritization.', labels: ['Polish'], impact: 4, effort: 3, confidence: 8, urgency: 2 }, + { title: 'AI explains why an idea moved', description: 'Every ranking should show a reason, risk, and what evidence would change the decision.', labels: ['Trust', 'AI'], impact: 9, effort: 6, confidence: 6, urgency: 8 } + ] +}; +function loadSampleBacklog(){ + const input = $('#featureSetInput'); + if(!input) return; + input.value = JSON.stringify(sampleBacklog, null, 2); + document.querySelector('#feature-sets')?.scrollIntoView({ behavior:'smooth', block:'start' }); + toast('Sample backlog loaded. Import it or replace it with your own chaos.'); +} + const $ = (sel, root=document) => root.querySelector(sel); const $$ = (sel, root=document) => Array.from(root.querySelectorAll(sel)); const featureDeck = $('#featureDeck'); const sortingGrid = $('#sortingGrid'); const timeline = $('#timeline'); @@ -168,6 +187,7 @@ async function reorderOnTimeline(id,e){ const line=e.currentTarget; const idea=s function openDetail(id){ const idea=state.ideas.find(i=>i.id===id); if(!idea) return; state.selected=id; detailForm.title.value=idea.title||''; detailForm.description.value=idea.description||''; detailForm.labels.value=(idea.labels||[]).join(', '); detailForm.impact.value=idea.impact??5; detailForm.effort.value=idea.effort??5; detailForm.confidence.value=idea.confidence??5; detailForm.urgency.value=idea.urgency??5; detailForm.notes.value=idea.notes||''; $('#detailCategory').textContent=categoryOf(idea); $('.detail-head .chip').textContent=zoneFor(idea).label; detail.classList.add('open'); detail.setAttribute('aria-hidden','false'); } function closeDetail(){ detail.classList.remove('open'); detail.setAttribute('aria-hidden','true'); state.selected=null; } async function archiveIdea(id=state.selected){ if(!id) return; const previous=state.ideas.find(i=>i.id===id); try{ await api(`/api/ideas/${id}`,{method:'PATCH',body:{archived:true,status:'remove'}}); state.ideas = state.ideas.filter(i=>i.id!==id); closeDetail(); render(); toast('Removed', previous ? () => undoIdea({...previous, archived:false}) : null); } catch(error){ toast(error.message); } } +$('#sampleBacklog')?.addEventListener('click', loadSampleBacklog); $('#featureSetFile')?.addEventListener('change', async e => { const file = e.currentTarget.files?.[0]; if(!file) return; diff --git a/public/index.html b/public/index.html index 56fc72d..1e9d3a9 100644 --- a/public/index.html +++ b/public/index.html @@ -4,9 +4,9 @@ - Prioritix — Feature Prioritization + Rank — Work your ideas before they work you - +
@@ -22,11 +22,58 @@
+
+
+ For scattered founders, product teams, and backlog-heavy brains +

Your backlog is not a roadmap.

+

Rank is a nice-looking tool that understands your chaos. Paste messy ideas and work them into a clear build order before they start working you.

+
+ Paste my messy backlog + +
+
+ Build now + Validate next + Park safely + Explain why +
+
+
+
+ Before +

Messy idea pile

+
    +
  • AI onboarding coach
  • +
  • Team voting
  • +
  • Dark mode
  • +
  • Stripe export
  • +
  • Better mobile sorting
  • +
+
+ +
+ After +

Defendable build order

+
    +
  1. Build nowMobile sorting removes the biggest usage friction.
  2. +
  3. Validate nextTeam voting needs proof before it becomes process theatre.
  4. +
  5. ParkDark mode is nice, not the reason anyone buys.
  6. +
+
+
+
+ +
+
No dashboard first.Proof before controls. You see the transformation before learning the system.
+
No fake AI mysticism.Every decision needs a plain reason, risk, and next evidence.
+
No surprise gate.Work the ideas first; export, save, and deeper workflows come after value is obvious.
+
+
-

Rank Prioritization Studio

-

Project goal: capture, sort, and turn rough feature ideas into a visible roadmap.

+

Rank idea workbench

+

Project goal: turn rough feature ideas into a clear, defendable build order.

Sorting profile @@ -47,25 +94,25 @@
9:41Rank
Project overview -

Rank Roadmap

-

Create a clear feature timeline from rough ideas, imports, and agent suggestions.

+

Work your ideas

+

Paste the chaos. Sort what to build now, validate next, and park without guilt.

-