gitextract_w3daecuw/ ├── .devcontainer/ │ ├── Dockerfile │ ├── compose.dev.yml │ └── devcontainer.json ├── .eslintrc.cjs ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── pull_request_template.md │ └── workflows/ │ └── check.yaml ├── .gitignore ├── LICENSE ├── README.md ├── components.json ├── drizzle.config.ts ├── next.config.js ├── package.json ├── playwright.config.ts ├── postcss.config.cjs ├── prettier.config.js ├── src/ │ ├── app/ │ │ ├── (auth)/ │ │ │ ├── layout.tsx │ │ │ ├── login/ │ │ │ │ ├── discord/ │ │ │ │ │ ├── callback/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── login.tsx │ │ │ │ └── page.tsx │ │ │ ├── reset-password/ │ │ │ │ ├── [token]/ │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── reset-password.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── send-reset-email.tsx │ │ │ ├── signup/ │ │ │ │ ├── page.tsx │ │ │ │ └── signup.tsx │ │ │ └── verify-email/ │ │ │ ├── page.tsx │ │ │ └── verify-code.tsx │ │ ├── (landing)/ │ │ │ ├── _components/ │ │ │ │ ├── copy-to-clipboard.tsx │ │ │ │ ├── feature-icons.tsx │ │ │ │ ├── footer.tsx │ │ │ │ ├── header.tsx │ │ │ │ └── hover-card.tsx │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── (main)/ │ │ │ ├── _components/ │ │ │ │ ├── footer.tsx │ │ │ │ ├── header.tsx │ │ │ │ └── user-dropdown.tsx │ │ │ ├── account/ │ │ │ │ └── page.tsx │ │ │ ├── dashboard/ │ │ │ │ ├── _components/ │ │ │ │ │ ├── dashboard-nav.tsx │ │ │ │ │ ├── new-post.tsx │ │ │ │ │ ├── post-card-skeleton.tsx │ │ │ │ │ ├── post-card.tsx │ │ │ │ │ ├── posts-skeleton.tsx │ │ │ │ │ ├── posts.tsx │ │ │ │ │ └── verificiation-warning.tsx │ │ │ │ ├── billing/ │ │ │ │ │ ├── _components/ │ │ │ │ │ │ ├── billing-skeleton.tsx │ │ │ │ │ │ ├── billing.tsx │ │ │ │ │ │ └── manage-subscription-form.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── settings/ │ │ │ │ └── page.tsx │ │ │ ├── editor/ │ │ │ │ └── [postId]/ │ │ │ │ ├── _components/ │ │ │ │ │ ├── post-editor.tsx │ │ │ │ │ └── post-preview.tsx │ │ │ │ └── page.tsx │ │ │ └── layout.tsx │ │ ├── api/ │ │ │ ├── trpc/ │ │ │ │ └── [trpc]/ │ │ │ │ └── route.ts │ │ │ └── webhooks/ │ │ │ └── stripe/ │ │ │ └── route.ts │ │ ├── icon.tsx │ │ ├── layout.tsx │ │ ├── robots.ts │ │ └── sitemap.ts │ ├── components/ │ │ ├── icons.tsx │ │ ├── loading-button.tsx │ │ ├── password-input.tsx │ │ ├── responsive-dialog.tsx │ │ ├── submit-button.tsx │ │ ├── theme-provider.tsx │ │ ├── theme-toggle.tsx │ │ └── ui/ │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── dialog.tsx │ │ ├── drawer.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── pagination.tsx │ │ ├── skeleton.tsx │ │ ├── sonner.tsx │ │ ├── tabs.tsx │ │ └── textarea.tsx │ ├── config/ │ │ └── subscriptions.ts │ ├── env.js │ ├── lib/ │ │ ├── auth/ │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ └── validate-request.ts │ │ ├── constants.ts │ │ ├── email/ │ │ │ ├── index.tsx │ │ │ └── templates/ │ │ │ ├── email-verification.tsx │ │ │ └── reset-password.tsx │ │ ├── fonts.ts │ │ ├── hooks/ │ │ │ ├── use-debounce.ts │ │ │ └── use-media-query.ts │ │ ├── logger.ts │ │ ├── stripe.ts │ │ ├── utils.ts │ │ └── validators/ │ │ └── auth.ts │ ├── middleware.ts │ ├── server/ │ │ ├── api/ │ │ │ ├── root.ts │ │ │ ├── routers/ │ │ │ │ ├── post/ │ │ │ │ │ ├── post.input.ts │ │ │ │ │ ├── post.procedure.ts │ │ │ │ │ └── post.service.ts │ │ │ │ ├── stripe/ │ │ │ │ │ ├── stripe.input.ts │ │ │ │ │ ├── stripe.procedure.ts │ │ │ │ │ └── stripe.service.ts │ │ │ │ └── user/ │ │ │ │ └── user.procedure.ts │ │ │ └── trpc.ts │ │ └── db/ │ │ ├── index.ts │ │ └── schema.ts │ ├── styles/ │ │ └── globals.css │ └── trpc/ │ ├── react.tsx │ ├── server.ts │ └── shared.ts ├── tailwind.config.ts ├── tests/ │ └── e2e/ │ ├── auth-with-credential.spec.ts │ └── utils.ts └── tsconfig.json