{"id":13809328,"url":"https://github.com/rwieruch/nextjs-firebase-authentication","last_synced_at":"2025-04-04T15:09:29.084Z","repository":{"id":39851046,"uuid":"233860269","full_name":"rwieruch/nextjs-firebase-authentication","owner":"rwieruch","description":"Next.js + Firebase Starter","archived":false,"fork":false,"pushed_at":"2022-09-28T10:36:20.000Z","size":4244,"stargazers_count":654,"open_issues_count":8,"forks_count":113,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-28T14:07:17.103Z","etag":null,"topics":["authentication","boiler","firebase","nextjs","starter"],"latest_commit_sha":null,"homepage":"https://www.robinwieruch.de","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rwieruch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"rwieruch","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-01-14T14:30:53.000Z","updated_at":"2025-03-13T20:03:46.000Z","dependencies_parsed_at":"2022-08-20T11:30:29.429Z","dependency_job_id":null,"html_url":"https://github.com/rwieruch/nextjs-firebase-authentication","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwieruch%2Fnextjs-firebase-authentication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwieruch%2Fnextjs-firebase-authentication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwieruch%2Fnextjs-firebase-authentication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwieruch%2Fnextjs-firebase-authentication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rwieruch","download_url":"https://codeload.github.com/rwieruch/nextjs-firebase-authentication/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198461,"owners_count":20900080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["authentication","boiler","firebase","nextjs","starter"],"created_at":"2024-08-04T01:02:18.360Z","updated_at":"2025-04-04T15:09:29.057Z","avatar_url":"https://github.com/rwieruch.png","language":"TypeScript","funding_links":["https://github.com/sponsors/rwieruch","https://developer.paypal.com/","https://developer.paypal.com/docs/checkout/"],"categories":["TypeScript"],"sub_categories":[],"readme":"# My Course Platform\n\n[![Build Status](https://travis-ci.org/rwieruch/nextjs-firebase-authentication.svg?branch=master)](https://travis-ci.org/rwieruch/nextjs-firebase-authentication) [![Greenkeeper badge](https://badges.greenkeeper.io/rwieruch/nextjs-firebase-authentication.svg)](https://greenkeeper.io/)\n\n- [Demo](https://courses.robinwieruch.de/)\n- [Thread on \"What went into this project\"](https://twitter.com/rwieruch/status/1243209627707346944)\n\n**Server-Side User Management with**\n\n- GraphQL ([Tutorial](https://www.robinwieruch.de/graphql-apollo-server-tutorial)) and Firebase ([Tutorial](https://www.robinwieruch.de/complete-firebase-authentication-react-tutorial))\n  - Sign In\n  - Sign Up\n  - Sign Out\n  - Email Change\n  - Password Change\n  - Password Reset\n\n**Client and Server-Side Protected Routes with**\n\n- Next.js Authorization and Firebase Session\n\n**Payment with**\n\n- Stripe\n- PayPal\n\n**Styling with**\n\n- [Ant Design](https://ant.design/)\n- Styled Components ([Tutorial](https://www.robinwieruch.de/react-styled-components))\n- Page Transitions\n\n**Type Support with**\n\n- TypeScript\n\n**Tested Code Base with**\n\n- [Jest](https://jestjs.io/) ([Tutorial](https://www.robinwieruch.de/react-testing-jest))\n- [React Testing Library](https://github.com/testing-library/react-testing-library)\n- [Apollo Mocks](https://www.apollographql.com/docs/react/development-testing/testing/)\n\n**Environment Variables with**\n\n- [Dotenv](https://github.com/motdotla/dotenv)\n\n**Absolute Imports with**\n\n- Babel Module Resolver ([Tutorial](https://www.robinwieruch.de/babel-module-resolver/))\n\n**Sentry**\n\n**More Features**\n\n- Discounts with Coupons\n- Affiliate Marketing with Partner Program\n\n## Installation\n\n- `git clone git@github.com:rwieruch/nextjs-firebase-authentication.git`\n- `cd nextjs-firebase-authentication`\n- See other installation instructions below ...\n- `yarn install`\n- `yarn run dev`\n- Visit http://localhost:3000/\n\n### .env file\n\nCreate a _.env_ file. If using git, add it to your _.gitignore_ file.\n\nValues may differ for development and production:\n\n```\nBASE_URL=http://localhost:3000\n\nFIREBASE_API_KEY=\nFIREBASE_AUTH_DOMAIN=\nFIREBASE_DATABASE_URL=\nFIREBASE_PROJECT_ID=\nFIREBASE_STORAGE_BUCKET=\nFIREBASE_MESSAGING_SENDER_ID=\nFIREBASE_APP_ID=\n\nPAYPAL_CLIENT_ID=\nPAYPAL_CLIENT_SECRET=\n\nSTRIPE_CLIENT_ID=\nSTRIPE_CLIENT_SECRET=\nSTRIPE_WEBHOOK_SECRET=\n\nCOUPON_SALT=\nCOUPON_URL=\nFIREBASE_ADMIN_UID=\n\nSENTRY_DSN=\n\nREVUE_TOKEN=\n\nSLACK_TOKEN=\n\nCONVERTKIT_API_KEY=\nCONVERTKIT_FORM_ID=\n\nS3_ENDPOINT=\nS3_ACCESS_KEY_ID=\nS3_SECRET_ACCESS_KEY=\nS3_BUCKET=\n\nDATABASE_TYPE=\nDATABASE_HOST=\nDATABASE_PORT=\nDATABASE_USERNAME=\nDATABASE_PASSWORD=\nDATABASE_NAME=\nDATABASE_SSL_CERTIFICATE=\n```\n\n- [FIREBASE](https://firebase.google.com/)\n  - Activate Email/Password Sign-In Method for your Firebase Project\n- [PAYPAL](https://developer.paypal.com/)\n  - [Checkout](https://developer.paypal.com/docs/checkout/)\n- [STRIPE](https://stripe.com/)\n  - [Checkout](https://stripe.com/docs/payments/checkout/one-time)\n  - [Webhook](https://stripe.com/docs/payments/checkout/fulfillment#webhooks)\n\n### .firebaseServiceAccountKey.json file\n\nVisit [here](https://firebase.google.com/docs/admin/setup/#initialize-sdk) for Firebase Admin SDK and generate a _firebaseServiceAccountKey.json_ file from there which should be in your project's root folder. If using git, add it to your _.gitignore_ file.\n\n### Admin Account\n\nIf you want to have an account with Firebase admin claims, create this Firebase account first via UI, then set the user account's `uid` in _.env_ with `FIREBASE_ADMIN_UID`, and restart your server.\n\n### Stripe CLI for Webhook in Development Mode\n\n[Stripe CLI](https://stripe.com/docs/stripe-cli)\n\n```\nstripe login\n# follow instructions\nstripe listen --forward-to localhost:3000/api/stripe-webhook\n# copy and paste secret\n```\n\nThe `secret` can be used in _.env_:\n\n```\nSTRIPE_WEBHOOK_SECRET=secret\n```\n\nThen fake a request with Stripe CLI `stripe payment_intents create --amount=100 --currency=usd` will work. Make sure the application is running too. Or use the web application's Stripe Checkout feature for real.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwieruch%2Fnextjs-firebase-authentication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frwieruch%2Fnextjs-firebase-authentication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwieruch%2Fnextjs-firebase-authentication/lists"}