├── .env.sample ├── .eslintrc.json ├── .gitignore ├── README.md ├── bun.lockb ├── components.json ├── convex ├── README.md ├── _generated │ ├── api.d.ts │ ├── api.js │ ├── dataModel.d.ts │ ├── server.d.ts │ └── server.js ├── auth.config.ts ├── courses.ts ├── http.ts ├── purchases.ts ├── schema.ts ├── stripe.ts ├── subscriptions.ts ├── tsconfig.json └── users.ts ├── courseData.json ├── next.config.mjs ├── package.json ├── postcss.config.mjs ├── sampleData.jsonl ├── screenshot-for-readme.png ├── src ├── app │ ├── api │ │ ├── create-billing-portal │ │ │ └── route.ts │ │ └── webhooks │ │ │ └── stripe │ │ │ └── route.ts │ ├── billing │ │ └── page.tsx │ ├── courses │ │ ├── [courseId] │ │ │ ├── page.tsx │ │ │ └── success │ │ │ │ └── page.tsx │ │ └── page.tsx │ ├── favicon.ico │ ├── fonts │ │ ├── GeistMonoVF.woff │ │ └── GeistVF.woff │ ├── globals.css │ ├── layout.tsx │ ├── page.tsx │ └── pro │ │ ├── page.tsx │ │ └── success │ │ └── page.tsx ├── components │ ├── Navbar.tsx │ ├── PurchaseButton.tsx │ ├── providers │ │ └── ConvexClientProvider.tsx │ └── ui │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── skeleton.tsx │ │ └── sonner.tsx ├── constants │ └── index.ts ├── emails │ ├── ProPlanActivatedEmail.tsx │ ├── PurchaseConfirmationEmail.tsx │ └── WelcomeEmail.tsx ├── lib │ ├── ratelimit.ts │ ├── redis.ts │ ├── resend.ts │ ├── stripe.ts │ └── utils.ts └── middleware.ts ├── tailwind.config.ts └── tsconfig.json /.env.sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/.env.sample -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/.eslintrc.json -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/README.md -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/bun.lockb -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/components.json -------------------------------------------------------------------------------- /convex/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/README.md -------------------------------------------------------------------------------- /convex/_generated/api.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/_generated/api.d.ts -------------------------------------------------------------------------------- /convex/_generated/api.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/_generated/api.js -------------------------------------------------------------------------------- /convex/_generated/dataModel.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/_generated/dataModel.d.ts -------------------------------------------------------------------------------- /convex/_generated/server.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/_generated/server.d.ts -------------------------------------------------------------------------------- /convex/_generated/server.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/_generated/server.js -------------------------------------------------------------------------------- /convex/auth.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/auth.config.ts -------------------------------------------------------------------------------- /convex/courses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/courses.ts -------------------------------------------------------------------------------- /convex/http.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/http.ts -------------------------------------------------------------------------------- /convex/purchases.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/purchases.ts -------------------------------------------------------------------------------- /convex/schema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/schema.ts -------------------------------------------------------------------------------- /convex/stripe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/stripe.ts -------------------------------------------------------------------------------- /convex/subscriptions.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/subscriptions.ts -------------------------------------------------------------------------------- /convex/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/tsconfig.json -------------------------------------------------------------------------------- /convex/users.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/convex/users.ts -------------------------------------------------------------------------------- /courseData.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/courseData.json -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/next.config.mjs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/postcss.config.mjs -------------------------------------------------------------------------------- /sampleData.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/sampleData.jsonl -------------------------------------------------------------------------------- /screenshot-for-readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/screenshot-for-readme.png -------------------------------------------------------------------------------- /src/app/api/create-billing-portal/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/api/create-billing-portal/route.ts -------------------------------------------------------------------------------- /src/app/api/webhooks/stripe/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/api/webhooks/stripe/route.ts -------------------------------------------------------------------------------- /src/app/billing/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/billing/page.tsx -------------------------------------------------------------------------------- /src/app/courses/[courseId]/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/courses/[courseId]/page.tsx -------------------------------------------------------------------------------- /src/app/courses/[courseId]/success/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/courses/[courseId]/success/page.tsx -------------------------------------------------------------------------------- /src/app/courses/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/courses/page.tsx -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/globals.css -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/layout.tsx -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/page.tsx -------------------------------------------------------------------------------- /src/app/pro/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/pro/page.tsx -------------------------------------------------------------------------------- /src/app/pro/success/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/app/pro/success/page.tsx -------------------------------------------------------------------------------- /src/components/Navbar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/Navbar.tsx -------------------------------------------------------------------------------- /src/components/PurchaseButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/PurchaseButton.tsx -------------------------------------------------------------------------------- /src/components/providers/ConvexClientProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/providers/ConvexClientProvider.tsx -------------------------------------------------------------------------------- /src/components/ui/badge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/ui/badge.tsx -------------------------------------------------------------------------------- /src/components/ui/button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/ui/button.tsx -------------------------------------------------------------------------------- /src/components/ui/card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/ui/card.tsx -------------------------------------------------------------------------------- /src/components/ui/skeleton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/ui/skeleton.tsx -------------------------------------------------------------------------------- /src/components/ui/sonner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/components/ui/sonner.tsx -------------------------------------------------------------------------------- /src/constants/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/constants/index.ts -------------------------------------------------------------------------------- /src/emails/ProPlanActivatedEmail.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/emails/ProPlanActivatedEmail.tsx -------------------------------------------------------------------------------- /src/emails/PurchaseConfirmationEmail.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/emails/PurchaseConfirmationEmail.tsx -------------------------------------------------------------------------------- /src/emails/WelcomeEmail.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/emails/WelcomeEmail.tsx -------------------------------------------------------------------------------- /src/lib/ratelimit.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/lib/ratelimit.ts -------------------------------------------------------------------------------- /src/lib/redis.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/lib/redis.ts -------------------------------------------------------------------------------- /src/lib/resend.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/lib/resend.ts -------------------------------------------------------------------------------- /src/lib/stripe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/lib/stripe.ts -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/lib/utils.ts -------------------------------------------------------------------------------- /src/middleware.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/src/middleware.ts -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burakorkmez/full-stripe-tutorial/HEAD/tsconfig.json --------------------------------------------------------------------------------