Skip to content

usainc/sayyes

Repository files navigation

SayYes

SayYes is an open-source cute question page builder for creating chaotic proposal links where the No button refuses to cooperate.

SayYes, kaçan Hayır butonlu viral teklif ve tatlı soru sayfaları oluşturmak için açık kaynaklı mini web uygulamasıdır.

Demo

Public demo: https://your-sayyes-demo.vercel.app

Demo flow:

  1. Open the landing page.
  2. Go to /create.
  3. Pick a Turkish template or customize the form.
  4. Generate a URL-safe SayYes link.
  5. Copy the link, open the preview, or download the QR PNG.
  6. Send the link.
  7. The recipient tries the No button, chaos happens, then Yes shows the final screen.
  8. Download a square or story PNG share card.

Features

  • Mobile-first viral landing page, builder, proposal page, and success flow.
  • Client-only share links with URL-safe encoded payloads.
  • Turkish-first templates for proposal, date, apology, coffee, movie night, and hug prompts.
  • Five themes: Cute Pink, Dark Romance, Pixel Game, Terminal Love, and Error 404.
  • Five No button modes: Runaway, Shrink, Fake Error, Boss Fight, and Chaos.
  • Three final styles: Romantic, Meme, and Certificate.
  • Real downloadable PNG share cards in square and story formats.
  • QR code preview and QR PNG download on the generated-link screen.
  • Local-only recent creations with open, copy, and delete actions.
  • Dynamic proposal metadata and a default Open Graph image.
  • Favicon, app icon, Apple touch icon, and web manifest.
  • No authentication, database, paid API, camera access, or hidden analytics in the MVP.

Privacy

SayYes does not need a backend for the MVP. The proposal configuration is encoded into the generated URL, decoded in the browser, and rendered as plain React text. Recent creations are stored only in the creator's localStorage.

This means:

  • No account is required.
  • No database is required.
  • No server-side tracking is required.
  • No environment variables are required.
  • Generated links remain easy to deploy on Vercel.

Safety And Fair Use

SayYes is for fun, cute, consensual sharing. Do not use it to harass, pressure, spam, or manipulate people. Generated pages are encoded in the URL and no data is stored on a SayYes server in the MVP.

Tech Stack

  • Next.js App Router
  • TypeScript
  • React
  • Tailwind CSS
  • Lucide React icons
  • html-to-image for share-card PNG export
  • qrcode for client-side QR generation

Project Structure

app/
  page.tsx              Landing page
  create/page.tsx       Builder page
  p/[payload]/page.tsx  Shareable proposal route
src/
  components/           Reusable product UI
  lib/                  Payload helpers, defaults, templates, local types
public/
  favicon.svg
  icon.svg
  apple-touch-icon.svg

Key files:

  • src/components/ProposalBuilder.tsx
  • src/components/ProposalPage.tsx
  • src/components/NoButton.tsx
  • src/components/ShareCard.tsx
  • src/components/QRCodePanel.tsx
  • src/lib/payload.ts
  • src/lib/proposalDefaults.ts
  • src/lib/templates.ts

Local Setup

npm install
npm run dev

Open http://localhost:3000.

Quality Checks

npm run lint
npm run typecheck
npm run build
npm audit --omit=dev

Or run the combined release check:

npm run release:check

Deployment

SayYes is Vercel-ready with no required environment variables.

Quick deploy:

  1. Push the repository to GitHub.
  2. Import it in Vercel.
  3. Keep the default Next.js build settings.
  4. Deploy.

Optional:

  • Set NEXT_PUBLIC_SITE_URL to your production URL for absolute metadata URLs.
  • See DEPLOYMENT.md for the release checklist.

Screenshots

Add screenshots after public deployment:

  • Landing page
  • Builder with templates
  • Generated link with QR code
  • Proposal page
  • Success screen
  • Square share card
  • Story share card

Roadmap

  • Optional Supabase persistence
  • Custom slugs
  • Creator dashboard
  • View count
  • Yes accepted notification
  • More themes
  • More No button modes
  • i18n support
  • Public template gallery
  • More share-card layouts
  • QR design customization

Contribution Ideas

  • Add new templates in src/lib/templates.ts.
  • Add new No button modes in src/components/NoButton.tsx.
  • Add theme tokens in src/lib/proposalDefaults.ts.
  • Improve PNG export fallbacks for older mobile browsers.
  • Add accessibility checks around animated states.
  • Add a lightweight Playwright smoke test if the project grows.

License

Add an open-source license before publishing. MIT is a good default for this kind of app.

About

Open-source cute question page builder with chaotic No buttons, QR codes, PNG share cards, and viral proposal links.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors