├── .env.example ├── .gitignore ├── LICENSE.md ├── README.md ├── components ├── articles │ ├── ArticleDetails.tsx │ ├── ArticleList.tsx │ ├── ArticleListItem.tsx │ └── CreateArticleForm.tsx ├── common │ ├── Icon.tsx │ └── InputWithLabel.tsx ├── page │ ├── Footer.tsx │ ├── GoogleAnalytics.tsx │ ├── Header.tsx │ ├── Notifications.tsx │ └── PageHead.tsx └── user │ ├── SigninWithEmailForm.tsx │ └── SigninWithGoogleButton.tsx ├── config └── config.ts ├── docs ├── demo.jpg └── lighthouse_score.png ├── hooks ├── useArticles.tsx └── useUser.ts ├── jsconfig.json ├── lib ├── data │ └── firebase.ts ├── formatDate.ts ├── handleRestRequest.ts ├── isClientSide.ts ├── isDevelopment.ts ├── makeRestRequest.ts ├── showNotification.ts └── toSlug.ts ├── next-env.d.ts ├── next.config.js ├── package.json ├── pages ├── _app.tsx ├── _document.tsx ├── about.tsx ├── api │ ├── notifications.tsx │ └── revalidate.tsx ├── articles │ └── [slug].tsx ├── index.tsx ├── robots.txt.tsx ├── signin │ ├── authenticate.tsx │ └── index.tsx └── sitemap.xml.tsx ├── public ├── app.css ├── favicon.ico ├── favicon.png ├── icons │ ├── feedback.svg │ ├── help.svg │ ├── home.svg │ ├── menu.svg │ └── person.svg ├── images │ └── google_g.svg ├── manifest.json └── share_preview.jpg ├── tsconfig.json ├── types └── global.d.ts ├── vercel.json └── yarn.lock /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/.env.example -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/README.md -------------------------------------------------------------------------------- /components/articles/ArticleDetails.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/articles/ArticleDetails.tsx -------------------------------------------------------------------------------- /components/articles/ArticleList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/articles/ArticleList.tsx -------------------------------------------------------------------------------- /components/articles/ArticleListItem.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/articles/ArticleListItem.tsx -------------------------------------------------------------------------------- /components/articles/CreateArticleForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/articles/CreateArticleForm.tsx -------------------------------------------------------------------------------- /components/common/Icon.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/common/Icon.tsx -------------------------------------------------------------------------------- /components/common/InputWithLabel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/common/InputWithLabel.tsx -------------------------------------------------------------------------------- /components/page/Footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/page/Footer.tsx -------------------------------------------------------------------------------- /components/page/GoogleAnalytics.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/page/GoogleAnalytics.tsx -------------------------------------------------------------------------------- /components/page/Header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/page/Header.tsx -------------------------------------------------------------------------------- /components/page/Notifications.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/page/Notifications.tsx -------------------------------------------------------------------------------- /components/page/PageHead.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/page/PageHead.tsx -------------------------------------------------------------------------------- /components/user/SigninWithEmailForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/user/SigninWithEmailForm.tsx -------------------------------------------------------------------------------- /components/user/SigninWithGoogleButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/components/user/SigninWithGoogleButton.tsx -------------------------------------------------------------------------------- /config/config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/config/config.ts -------------------------------------------------------------------------------- /docs/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/docs/demo.jpg -------------------------------------------------------------------------------- /docs/lighthouse_score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/docs/lighthouse_score.png -------------------------------------------------------------------------------- /hooks/useArticles.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/hooks/useArticles.tsx -------------------------------------------------------------------------------- /hooks/useUser.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/hooks/useUser.ts -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/jsconfig.json -------------------------------------------------------------------------------- /lib/data/firebase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/data/firebase.ts -------------------------------------------------------------------------------- /lib/formatDate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/formatDate.ts -------------------------------------------------------------------------------- /lib/handleRestRequest.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/handleRestRequest.ts -------------------------------------------------------------------------------- /lib/isClientSide.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/isClientSide.ts -------------------------------------------------------------------------------- /lib/isDevelopment.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/isDevelopment.ts -------------------------------------------------------------------------------- /lib/makeRestRequest.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/makeRestRequest.ts -------------------------------------------------------------------------------- /lib/showNotification.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/showNotification.ts -------------------------------------------------------------------------------- /lib/toSlug.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/lib/toSlug.ts -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/next-env.d.ts -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/next.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/package.json -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/_app.tsx -------------------------------------------------------------------------------- /pages/_document.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/_document.tsx -------------------------------------------------------------------------------- /pages/about.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/about.tsx -------------------------------------------------------------------------------- /pages/api/notifications.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/api/notifications.tsx -------------------------------------------------------------------------------- /pages/api/revalidate.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/api/revalidate.tsx -------------------------------------------------------------------------------- /pages/articles/[slug].tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/articles/[slug].tsx -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/index.tsx -------------------------------------------------------------------------------- /pages/robots.txt.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/robots.txt.tsx -------------------------------------------------------------------------------- /pages/signin/authenticate.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/signin/authenticate.tsx -------------------------------------------------------------------------------- /pages/signin/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/signin/index.tsx -------------------------------------------------------------------------------- /pages/sitemap.xml.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/pages/sitemap.xml.tsx -------------------------------------------------------------------------------- /public/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/app.css -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/favicon.png -------------------------------------------------------------------------------- /public/icons/feedback.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/icons/feedback.svg -------------------------------------------------------------------------------- /public/icons/help.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/icons/help.svg -------------------------------------------------------------------------------- /public/icons/home.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/icons/home.svg -------------------------------------------------------------------------------- /public/icons/menu.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/icons/menu.svg -------------------------------------------------------------------------------- /public/icons/person.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/icons/person.svg -------------------------------------------------------------------------------- /public/images/google_g.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/images/google_g.svg -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/manifest.json -------------------------------------------------------------------------------- /public/share_preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/public/share_preview.jpg -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/tsconfig.json -------------------------------------------------------------------------------- /types/global.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/types/global.d.ts -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/vercel.json -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomsoderlund/nextjs-pwa-firebase-boilerplate/HEAD/yarn.lock --------------------------------------------------------------------------------