├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── Taskfile.yaml ├── docker-compose.yml ├── litestream.yml ├── package.json ├── remix.config.js ├── remix.env.d.ts ├── src ├── Inter-variable.ttf ├── db │ ├── db.server.ts │ ├── errors.ts │ ├── messages.server.ts │ ├── schema.sql │ ├── types.ts │ └── users.server.ts ├── errors.ts ├── index.ts ├── inter.ts ├── logger │ └── index.ts ├── public │ ├── bulk-unsub-example.png │ ├── favicon.ico │ └── favicon.png ├── remix │ ├── auth │ │ ├── authenticator.ts │ │ ├── google.server.ts │ │ └── signin_redirect_cookie.ts │ ├── components │ │ ├── LandingPage.tsx │ │ ├── MarkdownRenderer.tsx │ │ └── TopNav.tsx │ ├── durable │ │ ├── task_runner.server.ts │ │ ├── unsubscriber.server.ts │ │ └── workflow_runner.server.ts │ ├── email │ │ └── ses.ts │ ├── entry.client.tsx │ ├── entry.server.tsx │ ├── google │ │ └── gmail.server.ts │ ├── index.css │ ├── markdown │ │ ├── privacy.md │ │ └── terms.md │ ├── root.tsx │ └── routes │ │ ├── _index.tsx │ │ ├── auth.google.callback.tsx │ │ ├── privacy.tsx │ │ ├── resub_notify.tsx │ │ ├── signin-needs-scopes.tsx │ │ ├── signin.tsx │ │ ├── signout.ts │ │ ├── sitemap-pages[.]xml.ts │ │ ├── sitemap[.]xml.ts │ │ └── terms.tsx ├── stripe │ ├── stripe_utils.ts │ ├── types.ts │ └── webhook.ts ├── utils.server.ts └── utils.ts ├── tailwind.config.ts ├── tsconfig.json ├── vector.sh └── vector.yaml /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/.dockerignore -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/.eslintrc.cjs -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/Dockerfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/README.md -------------------------------------------------------------------------------- /Taskfile.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/Taskfile.yaml -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /litestream.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/litestream.yml -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/package.json -------------------------------------------------------------------------------- /remix.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/remix.config.js -------------------------------------------------------------------------------- /remix.env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/remix.env.d.ts -------------------------------------------------------------------------------- /src/Inter-variable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/Inter-variable.ttf -------------------------------------------------------------------------------- /src/db/db.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/db.server.ts -------------------------------------------------------------------------------- /src/db/errors.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/errors.ts -------------------------------------------------------------------------------- /src/db/messages.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/messages.server.ts -------------------------------------------------------------------------------- /src/db/schema.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/schema.sql -------------------------------------------------------------------------------- /src/db/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/types.ts -------------------------------------------------------------------------------- /src/db/users.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/db/users.server.ts -------------------------------------------------------------------------------- /src/errors.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/errors.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/inter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/inter.ts -------------------------------------------------------------------------------- /src/logger/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/logger/index.ts -------------------------------------------------------------------------------- /src/public/bulk-unsub-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/public/bulk-unsub-example.png -------------------------------------------------------------------------------- /src/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/public/favicon.ico -------------------------------------------------------------------------------- /src/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/public/favicon.png -------------------------------------------------------------------------------- /src/remix/auth/authenticator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/auth/authenticator.ts -------------------------------------------------------------------------------- /src/remix/auth/google.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/auth/google.server.ts -------------------------------------------------------------------------------- /src/remix/auth/signin_redirect_cookie.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/auth/signin_redirect_cookie.ts -------------------------------------------------------------------------------- /src/remix/components/LandingPage.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/components/LandingPage.tsx -------------------------------------------------------------------------------- /src/remix/components/MarkdownRenderer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/components/MarkdownRenderer.tsx -------------------------------------------------------------------------------- /src/remix/components/TopNav.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/components/TopNav.tsx -------------------------------------------------------------------------------- /src/remix/durable/task_runner.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/durable/task_runner.server.ts -------------------------------------------------------------------------------- /src/remix/durable/unsubscriber.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/durable/unsubscriber.server.ts -------------------------------------------------------------------------------- /src/remix/durable/workflow_runner.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/durable/workflow_runner.server.ts -------------------------------------------------------------------------------- /src/remix/email/ses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/email/ses.ts -------------------------------------------------------------------------------- /src/remix/entry.client.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/entry.client.tsx -------------------------------------------------------------------------------- /src/remix/entry.server.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/entry.server.tsx -------------------------------------------------------------------------------- /src/remix/google/gmail.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/google/gmail.server.ts -------------------------------------------------------------------------------- /src/remix/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/index.css -------------------------------------------------------------------------------- /src/remix/markdown/privacy.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/markdown/privacy.md -------------------------------------------------------------------------------- /src/remix/markdown/terms.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/markdown/terms.md -------------------------------------------------------------------------------- /src/remix/root.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/root.tsx -------------------------------------------------------------------------------- /src/remix/routes/_index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/_index.tsx -------------------------------------------------------------------------------- /src/remix/routes/auth.google.callback.tsx: -------------------------------------------------------------------------------- 1 | export { loader } from "./signin" 2 | -------------------------------------------------------------------------------- /src/remix/routes/privacy.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/privacy.tsx -------------------------------------------------------------------------------- /src/remix/routes/resub_notify.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/resub_notify.tsx -------------------------------------------------------------------------------- /src/remix/routes/signin-needs-scopes.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/signin-needs-scopes.tsx -------------------------------------------------------------------------------- /src/remix/routes/signin.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/signin.tsx -------------------------------------------------------------------------------- /src/remix/routes/signout.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/signout.ts -------------------------------------------------------------------------------- /src/remix/routes/sitemap-pages[.]xml.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/sitemap-pages[.]xml.ts -------------------------------------------------------------------------------- /src/remix/routes/sitemap[.]xml.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/sitemap[.]xml.ts -------------------------------------------------------------------------------- /src/remix/routes/terms.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/remix/routes/terms.tsx -------------------------------------------------------------------------------- /src/stripe/stripe_utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/stripe/stripe_utils.ts -------------------------------------------------------------------------------- /src/stripe/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/stripe/types.ts -------------------------------------------------------------------------------- /src/stripe/webhook.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/stripe/webhook.ts -------------------------------------------------------------------------------- /src/utils.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/utils.server.ts -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/src/utils.ts -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vector.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/vector.sh -------------------------------------------------------------------------------- /vector.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danthegoodman1/BulkUnsubscribe/HEAD/vector.yaml --------------------------------------------------------------------------------