{"id":50956190,"url":"https://github.com/aryanbrite/donate","last_synced_at":"2026-06-18T07:01:50.323Z","repository":{"id":308897463,"uuid":"1034498380","full_name":"aryanbrite/donate","owner":"aryanbrite","description":"Polished donation page for open-source devs. Next.js + Stripe. No database.","archived":false,"fork":false,"pushed_at":"2025-10-03T06:50:29.000Z","size":666,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-05T12:41:00.121Z","etag":null,"topics":["developer-tools","donate","donation-page","nextjs","portfolio","profile","sponsor","stripe"],"latest_commit_sha":null,"homepage":"https://aryan.deyweaver.live","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aryanbrite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":"https://aryan.deyweaver.live/"}},"created_at":"2025-08-08T13:40:02.000Z","updated_at":"2025-10-03T06:50:33.000Z","dependencies_parsed_at":"2025-08-08T15:30:35.769Z","dependency_job_id":"2ff4aa8e-9767-4952-a00c-5ac1efbee78d","html_url":"https://github.com/aryanbrite/donate","commit_stats":null,"previous_names":["aryan6673/donate","aryanbrite/donate"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aryanbrite/donate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryanbrite%2Fdonate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryanbrite%2Fdonate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryanbrite%2Fdonate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryanbrite%2Fdonate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aryanbrite","download_url":"https://codeload.github.com/aryanbrite/donate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryanbrite%2Fdonate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34479555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","donate","donation-page","nextjs","portfolio","profile","sponsor","stripe"],"created_at":"2026-06-18T07:01:44.698Z","updated_at":"2026-06-18T07:01:50.317Z","avatar_url":"https://github.com/aryanbrite.png","language":"TypeScript","funding_links":["https://aryan.deyweaver.live/"],"categories":[],"sub_categories":[],"readme":"# Donation Page\n![Screenshot](/assets/ss.png)\n\nA polished donation page for open‑source developers. Built with Next.js + Stripe. No database, no vendor lock‑in. Total raised is a simple text file you control.\n\n\u003cp align=\"left\"\u003e\n  \u003cimg alt=\"Next.js\" src=\"https://img.shields.io/badge/Next.js-14-black?logo=nextdotjs\" /\u003e\n  \u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/TypeScript-5-blue?logo=typescript\" /\u003e\n  \u003cimg alt=\"Stripe\" src=\"https://img.shields.io/badge/Stripe-PaymentIntents-635bff?logo=stripe\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-green.svg\" /\u003e\n  \u003cimg alt=\"PRs Welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" /\u003e\n  \u003ca href=\"https://pagespeed.web.dev/analysis?url=https%3A%2F%2Faryan.deyweaver.live%2F\"\u003e\n    \u003cimg alt=\"PageSpeed 100\" src=\"https://img.shields.io/badge/PageSpeed-100%2F100-brightgreen?style=flat\u0026logo=google-chrome\u0026logoColor=white\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://summer.hackclub.com/projects/10572\"\u003e\n    \u003cimg alt=\"Hack Club Batch\" src=\"https://img.shields.io/badge/Hack%20Club-Project-red?style=flat\u0026logo=hackclub\u0026logoColor=white\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/aryan6673/donate\u0026env=NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,STRIPE_SECRET_KEY,STRIPE_WEBHOOK_SECRET,GITHUB_TOKEN)\n\n## Why this exists\n- For maintainers who want a clean, trustworthy way to accept donations.\n- For teams who don’t want a database just to show a public “total raised”.\n- For anyone who values clarity, speed, and ownership over their stack.\n\n## What you get\n- Stripe Elements + PaymentIntents (card, Apple/Google Pay via browser wallets; Cash App return_url wired).\n- Required name/email, optional GitHub handle and public/private toggle.\n- Out‑of‑the‑box success page with spinner → success/failed states.\n- GitHub profile and repos section (uses optional `GITHUB_TOKEN` for higher rate limits).\n- Total raised tile and a panel under the payment box.\n- Zero database. Public total comes from `public/raised.txt` (integer cents).\n- Glassmorphism UI, dark theme, accessible focus states.\n- Friendly code, TypeScript, App Router.\n\n## 30‑second setup\n1) Use this template (or Fork) on GitHub.\n2) Clone locally.\n3) Create `.env.local` with your keys:\n   - `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...`\n   - `STRIPE_SECRET_KEY=sk_test_...`\n   - `STRIPE_WEBHOOK_SECRET=whsec_...` (optional; from Stripe CLI or Dashboard)\n   - Optional: `GITHUB_TOKEN=ghp_...` (for GitHub API rate limits)\n   - `NEXT_PUBLIC_SITE_URL=https://your-deployed-domain` (used by sitemap/robots and metadata)\n4) Set your starting total: edit `public/raised.txt` (integer cents, e.g., `0` or `12345`).\n5) Install and run locally:\n   - `npm install`\n   - `npm run dev`\n6) Optional (recommended) webhook for local testing:\n   - `stripe listen --forward-to localhost:3000/api/stripe/webhook`\n   - Put the printed `whsec_...` into `STRIPE_WEBHOOK_SECRET` and restart.\n\n## How “total raised” works\n- A single file `public/raised.txt` contains the public total as cents.\n- The API routes `GET /api/donations` and `GET /api/stats` read this file and serve `totalRaisedCents`.\n- No automatic aggregation from Stripe. You control the number. Update the file and deploy.\n\n## Customize it\n- Repo link (the top‑right GitHub corner): `src/app/layout.tsx`.\n- Featured projects carousel/cards: `src/components/FeaturedCarousel.tsx`.\n- Donation UI (tiers, slider, toggles): `src/components/DonateControl.tsx`.\n- Hero copy and stats row: `src/components/Hero.tsx`.\n- Success page message: `src/app/success/page.tsx`.\n- Styling utilities and theme: `src/app/globals.css`.\n\n## Key endpoints\n- `POST /api/stripe/create-payment-intent` → Creates PaymentIntent.\n- `GET/PATCH /api/stripe/intent` → Reads/updates PaymentIntent (metadata, receipt email).\n- `POST /api/stripe/webhook` → Signature verified; returns 200 (no DB writes).\n- `GET /api/github/profile` + `GET /api/github/repos` → Public GitHub data.\n- `GET /api/donations` + `GET /api/stats` → Read `public/raised.txt`.\n\n## Security \u0026 privacy\n- Sensitive operations occur server‑side via Stripe SDK.\n- No customer data is stored in this app. Donor name/email live in Stripe.\n- Webhook is verified with your `STRIPE_WEBHOOK_SECRET`.\n\n## Deploy\n- One‑click: use the “Deploy with Vercel” button above.\n- Or import the repo in Vercel, set env vars, and deploy. Ensure `public/raised.txt` exists in your repo.\n\n---\n\n## Add a Sponsor button to your GitHub repos\nHere’s how it will look in your repo:\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"assets/look.png\" alt=\"Sponsor button example\" width=\"250\" /\u003e\n\u003c/p\u003e\n\nAdd the button that links to your donation page in 3 quick steps:\n\n1) Get your donation URL\n   - Deploy this site (e.g., on Vercel) and copy the URL, e.g., `https://your-donate-site.vercel.app`.\n\n2) Create `.github/FUNDING.yml` in your repo\n   - This file controls the Sponsor button.\n\n```yml\n# .github/FUNDING.yml\n# Shows a Sponsor button on your repo header\n# Replace with your deployed donation URL\ncustom:\n  - https://your-donate-site.vercel.app\n```\n\n3) Commit and push\n   - GitHub will show a “Sponsor” button that opens your donation page.\n\nOptional\n- Include your GitHub Sponsors handle (if you use GitHub Sponsors as well):\n```yml\ngithub: [ your-github-username ]\ncustom:\n  - https://your-donate-site.vercel.app\n```\n- Organization-wide: put `.github/FUNDING.yml` in your org’s special `.github` repository to apply it to all repos that don’t have their own.\n\n\n## Roadmap (you can pick these up)\n- Optional donor wall sourced from Stripe charges/metadata.\n- Real GitHub “commits this year” metric.\n- Multi‑currency support.\n\n## Contributing \u0026 License\n- Issues and PRs welcome. See `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md`.\n- MIT License. See `LICENSE`.\n\nMade with love by [aryan6673](https://github.com/aryan6673) ❤️\n\n\nIf this helps your project, star the repo and share it with another maintainer. One less blocker between your work and your supporters.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryanbrite%2Fdonate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faryanbrite%2Fdonate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryanbrite%2Fdonate/lists"}