{"id":18992248,"url":"https://github.com/narze/thank-u-nextjs","last_synced_at":"2025-04-22T11:43:51.467Z","repository":{"id":56601579,"uuid":"288507336","full_name":"narze/thank-u-nextjs","owner":"narze","description":"Yet Another Next.js Boilerplate","archived":false,"fork":false,"pushed_at":"2020-10-30T11:38:26.000Z","size":1782,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-17T00:18:12.402Z","etag":null,"topics":["boilerplate","cypress","emotion","eslint","jest","nextjs","storybook","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://thank-u-nextjs.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/narze.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}},"created_at":"2020-08-18T16:27:31.000Z","updated_at":"2022-06-19T10:06:42.000Z","dependencies_parsed_at":"2022-08-15T21:40:47.819Z","dependency_job_id":null,"html_url":"https://github.com/narze/thank-u-nextjs","commit_stats":null,"previous_names":[],"tags_count":3,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narze%2Fthank-u-nextjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narze%2Fthank-u-nextjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narze%2Fthank-u-nextjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narze%2Fthank-u-nextjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/narze","download_url":"https://codeload.github.com/narze/thank-u-nextjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250237264,"owners_count":21397394,"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":["boilerplate","cypress","emotion","eslint","jest","nextjs","storybook","tailwindcss","typescript"],"created_at":"2024-11-08T17:16:55.247Z","updated_at":"2025-04-22T11:43:51.443Z","avatar_url":"https://github.com/narze.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thank u, Next.js\n\n[![codecov](https://codecov.io/gh/narze/thank-u-nextjs/branch/master/graph/badge.svg?token=6AIOFCOAPT)](undefined)\n\nBootstrap a developer-friendly (?) NextJS app configured with:\n\n- [Typescript](https://www.typescriptlang.org/)\n- Linting with [ESLint](https://eslint.org/)\n- Formatting with [Prettier](https://prettier.io/)\n- Linting, typechecking and formatting on by default using [Husky](https://github.com/typicode/husky) for commit hooks\n- Testing with [Jest](https://jestjs.io/) and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro)\n- [Tailwind CSS](https://tailwindcss.com)\n- [Chakra](https://chakra-ui.com), a React component library\n- [Emotion](https://emotion.sh)\n- [Twin.macro](https://github.com/ben-rogerson/twin.macro) - Enable using babel macro with Tailwind, so PurgeCSS is not needed.\n- [ts-jest](https://github.com/kulshekhar/ts-jest)\n- [Cypress](http://cypress.io/) and [Cypress Testing Library](https://github.com/testing-library/cypress-testing-library)\n- [Storybook](https://storybook.js.org)\n\nThis template is built from [examples/with-tailwindcss-emotion](https://github.com/vercel/next.js/blob/canary/examples/with-tailwindcss-emotion/README.md) \u0026 [examples/with-typescript-eslint-jest](https://github.com/vercel/next.js/blob/canary/examples/with-typescript-eslint-jest/README.md) then added some more sensible packages.\n\n## Development Workflow\n\nThis boilerplate is carefully built to make TDD workflow in frontend development possible, as you can see a bunch of testing libraries included.\n\n### Test-first\n\nBefore adding features (components, pages, etc.) you add tests in at least one level:\n\n- Unit Tests : Jest\n- Integration / e2e Tests : Cypress\n- UI Tests : Storybook\n\nYou can add `pending` tests if the feature is difficult or cannot figure out yet how to test (eg. authentication with Firebase, which is hard to mock)\nBut make sure that you cleanup pending tests quickly before it goes out of control and leaves you with low test coverage.\n\n[rant]\nYou (and your team) will be thankful for the tests later when you decide to refactor or add/switch dependencies, like updating dependencies, switching to Preact, adopting Recoil, trying out the next Next.js, and so on.\nWell tested codebase will save you from [Javascript Fatigue](https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f) no matter how large or small your project is.\n[/rant]\n\n### Static Analysis\n\n[Husky](https://github.com/typicode/husky) will lint \u0026 format the code before commit \u0026 push, so the code will be cleaner \u0026 easier for review (But please don't add `any` type everywhere)\n\n### CI\n\nGithub Actions will run all the tests. [See configuration](./.github/workflows/nodejs.yml)\n\n## Projects built with this template\n\n- https://github.com/narze/typeland\n- https://github.com/narze/toSkoy\n\n## Deploy your own\n\nDeploy the example using [Vercel](https://vercel.com):\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/narze/thank-u-nextjs)\n\n## How to use\n\n### Using `create-next-app`\n\nExecute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [npm](https://docs.npmjs.com/cli/init) or [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/) to bootstrap the example:\n\n```bash\nnpx create-next-app --example https://github.com/narze/thank-u-nextjs my-app\n# or\nyarn create next-app --example https://github.com/narze/thank-u-nextjs my-app\n```\n\nDeploy it to the cloud with [Vercel](https://vercel.com/import?filter=next.js\u0026utm_source=github\u0026utm_medium=readme\u0026utm_campaign=next-example) ([Documentation](https://nextjs.org/docs/deployment)).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnarze%2Fthank-u-nextjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnarze%2Fthank-u-nextjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnarze%2Fthank-u-nextjs/lists"}