{"id":15002351,"url":"https://github.com/iwatanikenji/ignews","last_synced_at":"2026-03-16T10:07:10.995Z","repository":{"id":107777454,"uuid":"472503190","full_name":"iwataniKenji/ignews","owner":"iwataniKenji","description":"Subscription based application with Next.js, Prismic CMS, Stripe and FaunaDB","archived":false,"fork":false,"pushed_at":"2022-05-29T20:28:04.000Z","size":5706,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-18T12:15:38.819Z","etag":null,"topics":["css-modules","faunadb","jam-stack","jest","next-auth","nextjs","prismic","sass","ssr","stripe-api","vercel"],"latest_commit_sha":null,"homepage":"https://ignews-kenji.vercel.app/","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/iwataniKenji.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-21T20:34:15.000Z","updated_at":"2022-05-27T21:41:10.000Z","dependencies_parsed_at":"2023-07-06T11:31:04.407Z","dependency_job_id":null,"html_url":"https://github.com/iwataniKenji/ignews","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwataniKenji%2Fignews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwataniKenji%2Fignews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwataniKenji%2Fignews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwataniKenji%2Fignews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwataniKenji","download_url":"https://codeload.github.com/iwataniKenji/ignews/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243146458,"owners_count":20243720,"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":["css-modules","faunadb","jam-stack","jest","next-auth","nextjs","prismic","sass","ssr","stripe-api","vercel"],"created_at":"2024-09-24T18:49:47.660Z","updated_at":"2025-12-24T10:39:39.408Z","avatar_url":"https://github.com/iwataniKenji.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003csection align=\"center\"\u003e\n    \u003cimg src=\"./public/images/cover.jpg\" /\u003e\n\u003c/section\u003e\n\n\u003ch2 align=\"center\"\u003eSummary\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#about\"\u003e📙 About\u003c/a\u003e\n    \u003ca href=\"#preview\"\u003e🖼️ Preview\u003c/a\u003e\n    \u003ca href=\"#start\"\u003e📖 How to Start\u003c/a\u003e\n    \u003ca href=\"#features\"\u003e💡 Features\u003c/a\u003e\n    \u003ca href=\"#technologies\"\u003e💻 Technologies\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003e\n   ✔️ Ig.news project finished ✔️\n\u003c/h4\u003e\n\n\u003cH2 id=\"about\"\u003e📙 About\u003c/H2\u003e\n\n\u003cp\u003eIg.news is a serverless website based on Next.js framework usage and has an authentication functionality that allows the user to get access to written content about the ReactJS world if he is logged in or a preview of the original content if he's not.\u003c/p\u003e\n\u003cp\u003eThe access is allowed trough a payed monthly subscription and the authentication uses Github to get the user's basic information.\u003c/p\u003e\n\u003cp\u003eIn conclusion, this application was used to implement and learn unit testing basic concepts and tips on how to set \u003ca href=\"https://vercel.com/\"\u003eVercel\u003c/a\u003e config and environment variables settings.\u003c/p\u003e\n\u003cp\u003eThis project is originally created on Ignite from \u003ca href=\"https://www.rocketseat.com.br/\"\u003eRocketseat\u003c/a\u003e\n and made by \u003ca href=\"https://www.linkedin.com/in/kleverson-kenji-iwatani/\"\u003eKenji Iwatani\u003c/a\u003e\u003c/p\u003e\n\n\u003cp\u003e\n    \u003ch3\u003e\u003ca href=\"https://ignews-kenji.vercel.app/\"\u003eCheck website \u0026rarr;\u003c/a\u003e\u003c/h3\u003e\n\u003c/p\u003e\n\n\n---\n\n\u003cH2 id=\"preview\"\u003e🖼️ Preview\u003c/H2\u003e\n\n\u003ch4\u003eProject overview:\u003c/h4\u003e\n\n\u003csection align=\"center\"\u003e\n    \u003cimg alt=\"ignews website overview\" src=\"./public/images/preview.gif\"/\u003e\n\u003c/section\u003e\n\n\u003ch4\u003eTests coverage report:\u003c/h4\u003e\n\n\u003csection align=\"center\"\u003e\n    \u003cimg alt=\"ignews website tests coverage report overview\" src=\"./public/images/tests.png\"/\u003e\n\u003c/section\u003e\n\n---\n\n\u003cH2 id=\"start\"\u003e📖 How to Start\u003c/H2\u003e\n\n\u003ch3\u003eStarting this repository:\u003c/h3\u003e\n\n```bash\n# Clone this repository\n$ git clone https://github.com/iwataniKenji/ignews\n\n# Access the project directory\n$ cd ignews\n```\n\n\u003ch3\u003eCreating and setting the project:\u003c/h3\u003e\n\u003cp\u003eIt's required an account on \u003ca href=\"https://stripe.com/\"\u003eStripe\u003c/a\u003e (for payment system), \u003ca href=\"https://fauna.com/\"\u003eFauna\u003c/a\u003e (for database functionality), and \u003ca href=\"https://prismic.io/\"\u003ePrismic\u003c/a\u003e (to create publications of the website).\u003c/p\u003e\n\n```bash\n# Install dependencies\n$ yarn\n\n# On \".env.example\" file, fill the environment variables according to the instructions provided\n$\n\n# Rename the config file\n$ ren \".env.example\" \".env.local\"\n\n# Execute stripe to listen the events from webhooks\n$ stripe listen --forward-to localhost:3000/api/webhooks\n\n# Initialize and open local host\n$ yarn dev\n```\n\n\u003ch3\u003eRunning tests:\u003c/h3\u003e\n\n```bash\n# Run tests\n$ yarn test\n```\n\n---\n\n\u003cH2 id=\"features\"\u003e💡 Features\u003c/H2\u003e\n\n- [x] Static website with SSG\n- [x] Github authentication\n- [x] Subscription and payment system using Stripe\n- [x] Redirect when not authenticated\n- [x] Validation of active subscriptions\n- [x] Prevents duplicated customers accounts\n- [x] Posts preview functionality for non-subscribed users\n- [x] Backend independent (serverless website)\n- [x] Unit tests implemented and covering most of the application\n\n---\n\n\u003cH2 id=\"technologies\"\u003e💻 Technologies\u003c/H2\u003e\n\n- [x] \u003ca href=\"https://nextjs.org/\"\u003eNext.js\u003c/a\u003e\n- [x] \u003ca href=\"https://reactjs.org/\"\u003eReact\u003c/a\u003e\n- [x] \u003ca href=\"https://www.typescriptlang.org/\"\u003eTypescript\u003c/a\u003e\n- [x] \u003ca href=\"https://sass-lang.com/\"\u003eSASS\u003c/a\u003e\n- [x] \u003ca href=\"https://github.com/css-modules/css-modules\"\u003eCSS Modules\u003c/a\u003e\n- [x] \u003ca href=\"https://prismic.io/\"\u003ePrismic CMS\u003c/a\u003e\n- [x] \u003ca href=\"https://stripe.com/\"\u003eStripe\u003c/a\u003e\n- [x] \u003ca href=\"https://fauna.com/\"\u003eFaunaDB\u003c/a\u003e\n- [x] \u003ca href=\"https://jamstack.org/\"\u003eJAMStack\u003c/a\u003e\n- [x] \u003ca href=\"https://jestjs.io/\"\u003eJest\u003c/a\u003e\n- [x] \u003ca href=\"https://vercel.com/\"\u003eVercel\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwatanikenji%2Fignews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwatanikenji%2Fignews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwatanikenji%2Fignews/lists"}