diff --git a/fixed-border.png b/fixed-border.png new file mode 100644 index 0000000..f3c0a19 Binary files /dev/null and b/fixed-border.png differ diff --git a/resolution-frontend/RESOLUTION.md b/resolution-frontend/RESOLUTION.md new file mode 100644 index 0000000..3eb7ce7 --- /dev/null +++ b/resolution-frontend/RESOLUTION.md @@ -0,0 +1,89 @@ +# Resolution + +**Bet on yourself. When others quit, their stakes become your reward.** + +## What is Resolution? + +Resolution is an 8-week goal-setting challenge where you stake real money on yourself and compete against your own limits. Pick your workshops, commit your time, and prove you can follow through. Those who finish win; those who quit fund the winners. + +--- + +## How It Works + +1. **Choose Your Workshops** — Pick up to 3 workshops based on your goals and availability (max one 3-star to prevent burnout) +2. **Stake Your Money** — Put skin in the game. Your stake is your commitment +3. **Complete Weekly Goals** — Each week you hit your targets, you unlock part of your stake +4. **Earn Weekly Prizes** — Stickers, exclusive rewards, and recognition for staying on track +5. **Claim Your Reward** — Finish strong and take home your stake plus a share of the pot from those who didn't make it + +--- + +## Workshop Tiers + +| Tier | Time Commitment | Duration | Stake | +|------|-----------------|----------|-------| +| ⭐ One Star | ~2 hours/week | 8 weeks | $80 | +| ⭐⭐ Two Star | ~5 hours/week | 8 weeks | $200 | +| ⭐⭐⭐ Three Star | ~9 hours/week | 8 weeks | $360 | + +### Stake Breakdown +- **Per Workshop** — Each stake amount is per workshop, not total +- **Max 3 Workshops** — Choose up to 3 workshops to challenge yourself +- **One 3-Star Max** — To prevent going insane 🌀 + +--- + +## The Economics + +The magic happens because **not everyone finishes**. + +- Stakes are calculated at **$5/hour** of committed time +- When someone quits or misses their goals, their remaining stake flows to those who stayed the course +- The fewer people who finish, the bigger the pot for winners +- This creates real incentive to keep going when things get tough + +### Example +If 10 people join a Two Star workshop ($200 each = $2,000 pool) and only 6 finish: +- 4 quitters forfeit their remaining stakes +- Those funds get distributed to the 6 finishers +- Winners get their original stake back **plus** bonus rewards + +--- + +## Weekly Prizes + +The budget isn't all for the final prize—we allocate for weekly motivation: + +- **Custom Stickers** — Dope art like Siege did +- **Milestone Rewards** — Recognition for hitting weekly targets +- **Progress Tracking** — Visual proof of your consistency + +Without weekly incentives, there's no way to keep people going. The journey matters as much as the destination. + +--- + +## Rules + +1. You're competing against **yourself**, not others +2. Miss a week = forfeit that portion of your stake +3. Complete all 8 weeks = full stake returned + share of the pot +4. Max 3 workshops total +5. Max 1 three-star workshop (sanity protection) + +--- + +## Why This Works + +This isn't a subscription you forget about. It's not a course you never finish. It's a **bet on your future self** with real consequences and real rewards. + +The model works because: +- **Skin in the game** — You've got money on the line +- **Weekly accountability** — Can't coast until the end +- **Shared stakes** — Others' failures become your gains +- **Community pressure** — You're not alone in this + +--- + +## Ready? + +**RSVP now and stake your claim.** diff --git a/resolution-frontend/bun.lock b/resolution-frontend/bun.lock index decd5f6..b3ba8d7 100644 --- a/resolution-frontend/bun.lock +++ b/resolution-frontend/bun.lock @@ -4,10 +4,14 @@ "workspaces": { "": { "name": "revolution-frontend", + "dependencies": { + "dompurify": "^3.3.1", + }, "devDependencies": { "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.49.1", "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@types/dompurify": "^3.2.0", "svelte": "^5.45.6", "svelte-check": "^4.3.4", "typescript": "^5.9.3", @@ -138,8 +142,12 @@ "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], + "@types/dompurify": ["@types/dompurify@3.2.0", "", { "dependencies": { "dompurify": "*" } }, "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg=="], + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], @@ -158,6 +166,8 @@ "devalue": ["devalue@5.6.1", "", {}, "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A=="], + "dompurify": ["dompurify@3.3.1", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q=="], + "esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="], "esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="], diff --git a/resolution-frontend/package.json b/resolution-frontend/package.json index c35a78c..f111566 100644 --- a/resolution-frontend/package.json +++ b/resolution-frontend/package.json @@ -15,9 +15,13 @@ "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.49.1", "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@types/dompurify": "^3.2.0", "svelte": "^5.45.6", "svelte-check": "^4.3.4", "typescript": "^5.9.3", "vite": "^7.2.6" + }, + "dependencies": { + "dompurify": "^3.3.1" } } diff --git a/resolution-frontend/src/lib/assets/0c2978f7bd0b284b797a57c86e59b1573d910386.png b/resolution-frontend/src/lib/assets/0c2978f7bd0b284b797a57c86e59b1573d910386.png new file mode 100644 index 0000000..36a4aef Binary files /dev/null and b/resolution-frontend/src/lib/assets/0c2978f7bd0b284b797a57c86e59b1573d910386.png differ diff --git a/resolution-frontend/src/lib/assets/Untitled_Artwork 27 1.png b/resolution-frontend/src/lib/assets/Untitled_Artwork 27 1.png new file mode 100644 index 0000000..769516c Binary files /dev/null and b/resolution-frontend/src/lib/assets/Untitled_Artwork 27 1.png differ diff --git a/resolution-frontend/src/lib/assets/big_firework.png b/resolution-frontend/src/lib/assets/big_firework.png new file mode 100644 index 0000000..34e658b Binary files /dev/null and b/resolution-frontend/src/lib/assets/big_firework.png differ diff --git a/resolution-frontend/src/lib/assets/ca0d0cb4a718bc4cb8916a6f64c01e43b5ccee58.png b/resolution-frontend/src/lib/assets/ca0d0cb4a718bc4cb8916a6f64c01e43b5ccee58.png new file mode 100644 index 0000000..0b0841b Binary files /dev/null and b/resolution-frontend/src/lib/assets/ca0d0cb4a718bc4cb8916a6f64c01e43b5ccee58.png differ diff --git a/resolution-frontend/src/lib/assets/fireworkdsgif1.png b/resolution-frontend/src/lib/assets/fireworkdsgif1.png new file mode 100644 index 0000000..4edfb6f Binary files /dev/null and b/resolution-frontend/src/lib/assets/fireworkdsgif1.png differ diff --git a/resolution-frontend/src/lib/assets/fireworksgif2.png b/resolution-frontend/src/lib/assets/fireworksgif2.png new file mode 100644 index 0000000..ee556a6 Binary files /dev/null and b/resolution-frontend/src/lib/assets/fireworksgif2.png differ diff --git a/resolution-frontend/src/lib/components/EventCard1.svelte b/resolution-frontend/src/lib/components/EventCard1.svelte new file mode 100644 index 0000000..e8daa4e --- /dev/null +++ b/resolution-frontend/src/lib/components/EventCard1.svelte @@ -0,0 +1,81 @@ + + +
+ +
+

{title}

+ {#if imageSrc} +
+ {title} +
+ {/if} +

{description}

+
+
+ + diff --git a/resolution-frontend/src/lib/components/EventCard2.svelte b/resolution-frontend/src/lib/components/EventCard2.svelte new file mode 100644 index 0000000..6fb2549 --- /dev/null +++ b/resolution-frontend/src/lib/components/EventCard2.svelte @@ -0,0 +1,59 @@ + + +
+
+ +
+

{title}

+
+
+
+ + diff --git a/resolution-frontend/src/lib/components/EventCard3.svelte b/resolution-frontend/src/lib/components/EventCard3.svelte new file mode 100644 index 0000000..609f535 --- /dev/null +++ b/resolution-frontend/src/lib/components/EventCard3.svelte @@ -0,0 +1,59 @@ + + +
+
+ +
+

{title}

+
+
+
+ + diff --git a/resolution-frontend/src/lib/components/InitialPage.svelte b/resolution-frontend/src/lib/components/InitialPage.svelte index 281dd64..f3ea4d3 100644 --- a/resolution-frontend/src/lib/components/InitialPage.svelte +++ b/resolution-frontend/src/lib/components/InitialPage.svelte @@ -6,12 +6,13 @@ import fireworks from '$lib/assets/e6e6af4f4af7ca8575187a49893a053c27a7a364.png'; import sparklyBorder from '$lib/assets/17ec48a0bb8b41dcf6f66b30c45989d5bf71a03a.png'; import fireworksGif from '$lib/assets/d1b77bc7ffefad4500eb8f570293aeb906cdd6c7.png'; - import note1 from '$lib/assets/3a0136d1eb0536a623e080cb952a19b2a87af70f.png'; - import note2 from '$lib/assets/b4cb411457c810c0897133da6ad9d5ae4468ea27.png'; - import note3 from '$lib/assets/236737bf76b26382113a8a12aa20c3369b57daaa.png'; import stair from '$lib/assets/488278dc5d3cbf49ab57ddf735369a5419789dc6.png'; import running from '$lib/assets/00918d266837a309ad05ff4cce9ab7eca6910219.png'; import vectorLine from '$lib/assets/5dbe0fc43441b95045a7fe03b6870a2d6ca497ac.svg'; + + import EventCard1 from './EventCard1.svelte'; + import EventCard2 from './EventCard2.svelte'; + import EventCard3 from './EventCard3.svelte'; interface Step { title: string; @@ -30,13 +31,13 @@ } let { - heroDescription = "A sentence or two about what it is Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt", - ctaText = "I'M INSPIRED", + heroDescription = "Bet on yourself. When others quit, their stakes become your reward.", + ctaText = "STAKE YOUR CLAIM", ctaHref = "/onboarding", steps = [ - { title: "Step 1", description: "asfdskfhsdsdfasdfsdafdsdsfasdfsdaf" }, - { title: "Step 2", description: "asfdskfhsdsdfasdfsdafdsdsfasdfsdaf" }, - { title: "Step 3", description: "asfdskfhsdsdfasdfsdafdsdsfasdfsdaf" } + { title: "⭐ One Star", description: "~2hr/week • 8 weeks • $80 stake. Light commitment, real results." }, + { title: "⭐⭐ Two Star", description: "~5hr/week • 8 weeks • $200 stake. Serious growth, bigger rewards." }, + { title: "⭐⭐⭐ Three Star", description: "~9hr/week • 8 weeks • $360 stake. Maximum effort, maximum payout." } ] as Step[], events = [ { title: "Event 1", description: "Lorem ipsum dolor sit amet consectetur adipiscing elit" }, @@ -65,100 +66,94 @@ - - +
+

{heroDescription}

- - - + + {ctaText} + +
+ + + + + + + + + + + + + + + - - -
- -
+ + + + - -
- - - + + + -
-
-

{steps[0].title}:
{steps[0].description}

-
+ + + -
-

{steps[1].title}:
{steps[1].description}

-
+ + + + + -
- -
+ + + + + + -
-

{steps[2].title}:
{steps[2].description}

-
-
-
+ + + + - -
- - - -

Stories from Past Events

+ + + -
-
- -
-

{events[0].title}

-

{events[0].description}

-
-
+ + + + -
- -
-

{events[1].title}

-
-
+ + + + -
- -
-

{events[2].title}

-
-
-
+ - -
- -
+ + + + + + + + + + + -

FAQ

- -
-
- {#each faqs as faq, i} -
- {faq.question} -
- {#if i < faqs.length - 1} - - {/if} - {/each} -
- -
- -
-
-
+ + + + + diff --git a/resolution-frontend/src/routes/(onboarding)/onboarding/+page.svelte b/resolution-frontend/src/routes/(onboarding)/onboarding/+page.svelte index ee2cb09..4f362c1 100644 --- a/resolution-frontend/src/routes/(onboarding)/onboarding/+page.svelte +++ b/resolution-frontend/src/routes/(onboarding)/onboarding/+page.svelte @@ -13,7 +13,7 @@
- +