{"id":14155424,"url":"https://github.com/syhner/next-kickstart","last_synced_at":"2025-04-12T03:30:52.809Z","repository":{"id":183314377,"uuid":"667943532","full_name":"syhner/next-kickstart","owner":"syhner","description":"Next.js 14 kickstarter. Zero setup \u0026 edge ready. Take what you need: ESLint, Prettier, Tailwind, tRPC, WebSockets, Drizzle, Lucia Auth, Vitest, Testing Library, Playwright, PWA, Docker, CI, Bun","archived":true,"fork":false,"pushed_at":"2024-02-21T10:35:54.000Z","size":498,"stargazers_count":183,"open_issues_count":1,"forks_count":19,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-05T19:14:47.666Z","etag":null,"topics":["authjs","boilerplate","bun","drizzle","drizzle-orm","edge","edge-runtime","github-actions","next-auth","next-starter","nextjs","nextjs-app-router","playwright","pwa","tailwindcss","template","testing-library","trpc","vitest","websockets"],"latest_commit_sha":null,"homepage":"https://next-kickstart.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/syhner.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":"2023-07-18T16:45:50.000Z","updated_at":"2025-03-17T05:17:15.000Z","dependencies_parsed_at":"2023-07-23T23:32:12.827Z","dependency_job_id":"86634e7c-3510-454b-867c-3c567b998fb4","html_url":"https://github.com/syhner/next-kickstart","commit_stats":{"total_commits":154,"total_committers":1,"mean_commits":154.0,"dds":0.0,"last_synced_commit":"cdf207a49bf0f87ae46deec3d842b3a16482f9d0"},"previous_names":["syhner/webstack"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syhner%2Fnext-kickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syhner%2Fnext-kickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syhner%2Fnext-kickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syhner%2Fnext-kickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syhner","download_url":"https://codeload.github.com/syhner/next-kickstart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248512484,"owners_count":21116612,"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":["authjs","boilerplate","bun","drizzle","drizzle-orm","edge","edge-runtime","github-actions","next-auth","next-starter","nextjs","nextjs-app-router","playwright","pwa","tailwindcss","template","testing-library","trpc","vitest","websockets"],"created_at":"2024-08-17T08:03:06.409Z","updated_at":"2025-04-12T03:30:52.318Z","avatar_url":"https://github.com/syhner.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","boilerplate"],"sub_categories":[],"readme":"## next-kickstart\n\nFeature packed Next.js boilerplate. Zero setup. Edge ready.\n\nSome features depend on environment variables (indicated in features list with 💡) and so require enabling. They are disabled by default so that the app runs without any setup. They can be enabled by uncommenting all lines under where `@enable {feature}` appears.\n\n## 📚 Features\n\n**View the [repository branches](https://github.com/syhner/next-kickstart/branches) for other feature sets** (e.g. Bun)\n\n### Core\n\n- 🏗️ [**TypeScript**](https://www.typescriptlang.org/) - Configured to maximize type safety\n- ⚙️ [**T3 Env**](https://github.com/t3-oss/t3-env) - Environment variable validation\n- 🌐 [**tRPC**](https://trpc.io/) - Create end-to-end type-safe APIs that work in both client and server components\n- ⚡💡 [**WebSockets**](https://pusher.com) - Real-time communication (using Pusher, but can be swapped out for alternatives)\n  - 🔗 integrates with tRPC for end-to-end type-safe events\n- 💽💡 [**Drizzle**](https://orm.drizzle.team/) - ORM with maximal type safety\n- 🔒💡 [**Lucia Auth**](https://lucia-auth.com/) - Flexible and secure authentication\n  - 🔗💡 integrates with Drizzle to store auth data\n\n### Development\n\n- 📏 [**ESLint**](https://eslint.org/) - Consistent code standards\n- ✨ [**Prettier**](https://prettier.io/) - Consistent code styling\n- 🎨 [**Tailwind CSS**](https://tailwindcss.com/) - Utility-first CSS framework\n- 🧩 [**shadcn/ui**](https://ui.shadcn.com/) - Components built with Radix UI and Tailwind CSS\n- 📝 [**MDX**](https://mdxjs.com/) - Use markdown with components\n- 📁 [**Absolute imports**](https://nextjs.org/docs/app/building-your-application/configuring/absolute-imports-and-module-aliases) - Easier and cleaner module imports\n- 💻 [**VS Code configurations**](https://code.visualstudio.com/) - Configurations for easy debugging\n\n### Testing\n\n- 🧪 [**Vitest**](https://vitest.dev/) - Flexible testing framework\n- 🐙 [**React Testing Library**](https://testing-library.com/docs/react-testing-library/intro/) - Maintainable component testing\n  - 🔗 integrates with Vitest as your testing framework\n- 🎭 [**Playwright**](https://playwright.dev/) - End-to-end testing against multiple environments\n\n### Deployment\n\n- 📊 [**Bundle analyzer**](https://www.npmjs.com/package/@next/bundle-analyzer) - Analyze bundle sizes in each environment with `pnpm run build:analyze`\n- 📦💡 [**next-pwa**](https://www.npmjs.com/package/@ducanh2912/next-pwa) - Make your website as a progressive web app (PWA)\n- 🐳 [**Docker**](https://www.docker.com/) - (local and production) Docker-compose and Dockerfiles for running anywhere\n- 🔄 [**GitHub Actions**](https://github.com/features/actions) - Robust CI/CD\n\n## 🌱 Getting started\n\n🚀 **Option 1: Clone and deploy with Vercel**\n\n[![Vercel](https://vercel.com/button)](https://vercel.com/new/clone?s=https%3A%2F%2Fgithub.com%2FSyhner%2Fnext-kickstart)\n\n📋 **Option 2: Clone and run locally**\n\n1. [Fork this repository](https://github.com/syhner/next-kickstart/fork) (uncheck 'Copy the `main` branch only` if you are interested in other branches / feature sets)\n2. Clone your new repository\n3. Install dependencies and run the development server\n\n- with [pnpm](https://pnpm.io/installation)\n\n  ```sh\n  pnpm install\n  pnpm run dev\n  ```\n\n- or with [Docker](https://docs.docker.com/get-docker/)\n\n  ```sh\n  docker-compose --file docker/dev/docker-compose.yml up\n  ```\n\n## ⚙️ Configuration\n\n### [Docker](https://www.docker.com/)\n\n- [`.dockerignore`](.dockerignore)\n- [`docker/`](docker/) - Dockerfile and docker-compose.yml for development and production\n\n### [Drizzle](https://orm.drizzle.team/)\n\n💡 (requires enabling)\n\n- [`src/db/`](src/db/)\n- [`src/lib/db.ts`](src/lib/db.ts)\n- [`drizzle.config.ts`](drizzle.config.ts)\n\n### [ESLint](https://eslint.org/)\n\n- [`.eslintrc.json`](.eslintrc.json)\n\n### [GitHub Actions](https://github.com/features/actions)\n\n- [`.github/workflows/ci.yml`](.github/workflows/ci.yml) - type-checking and linting (hence these errors are ignored in [`next.config.mjs`](next.config.mjs))\n\n### [Lucia Auth](https://lucia-auth.com/)\n\n💡 (requires enabling)\n\n- [`src/app/api/auth`](src/app/api/auth)\n- [`src/app/auth`](src/app/auth)\n- [`src/components/auth.tsx`](src/components/auth.tsx)\n- [`src/db/schemas/auth.ts)`](src/db/schemas/auth.ts) store auth data in database\n- [`src/lib/auth.ts`](src/lib/auth.ts)\n- [`types/lucia.d.ts`](types/lucia.d.ts)\n\n#### Examples\n\n- [`src/app/examples/profile/page.tsx`](src/app/examples/profile/page.tsx)\n\n### [MDX](https://mdxjs.com/)\n\n- [`mdx-components.tsx`](mdx-components.tsx)\n\n### [next-pwa](https://www.npmjs.com/package/@ducanh2912/next-pwa)\n\n- [`public/icon-512x512.png`](public/icon-512x512.png)\n- [`public/manifest.json`](public/manifest.json)\n- [`next.config.mjs`](next.config.mjs)\n\n### [Playwright](https://playwright.dev/)\n\n- [`e2e/`](e2e/)\n- [`playwright.config.ts`](playwright.config.ts)\n\n### [Prettier](https://prettier.io/)\n\n- [`.eslintrc.json`](.eslintrc.json)\n- [`.prettierignore`](.prettierignore)\n- [`.prettierrc.json`](.prettierrc.json)\n\n### [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/)\n\n- [`src/app/page.test.tsx`](src/app/page.test.tsx)\n- [`testing/setup.ts`](testing/setup.ts)\n\n### [shadcn/ui](https://ui.shadcn.com/)\n\n- [`src/components/providers/theme-provider.tsx`](src/components/providers/theme-provider.tsx)\n- [`src/components/ui/`](src/components/ui/)\n- [`src/components/theme-toggle.tsx`](src/components/theme-toggle.tsx)\n- [`components.json`](components.json)\n\n### [T3 Env](https://github.com/t3-oss/t3-env)\n\n- [`src/env.mjs`](src/env.mjs) - configure environment variables\n- [`next.config.mjs`](next.config.mjs) - environment variables are validated at build-time\n\n### [Tailwind CSS](https://tailwindcss.com/)\n\n- [`src/styles/globals.css`](src/styles/globals.css)\n- [`tailwind.config.js`](tailwind.config.js)\n\n### [tRPC](https://trpc.io/)\n\n- [`src/app/api/trpc/[trpc]/route.ts`](src/components/providers/trpc-provider.tsx)\n- [`src/components/providers/trpc-provider.tsx`](src/app/api/trpc/[trpc]/route.ts)\n- [`src/trpc/`](src/trpc)\n\n#### Examples\n\n- [`src/app/examples/client-component/page.tsx`](src/app/examples/client-component/page.tsx) - use in a client component\n- [`src/app/examples/server-component/page.tsx`](src/app/examples/server-component/page.tsx) - use in a server component\n\n### [TypeScript](https://www.typescriptlang.org/)\n\n- [`tsconfig.json`](tsconfig.json) - all modifications from [create-next-app](https://www.npmjs.com/package/create-next-app) are explained with comments\n- [`types/reset.d.ts`](types/reset.d.ts) - using [ts-reset](https://github.com/total-typescript/ts-reset) to increase type-safety\n\n### [Vitest](https://vitest.dev/)\n\n- [`testing/setup.ts`](testing/setup.ts)\n- [`vitest.config.ts`](vitest.config.ts)\n\n### [VS Code](https://code.visualstudio.com/)\n\n- [`.vscode/extensions.json`](.vscode/extensions.json) - recommended workspace extensions\n- [`.vscode/launch.json`](.vscode/launch.json) - debug configurations\n- [`.vscode/settings.json`](.vscode/settings.json) - use project TypeScript version\n\n### [WebSockets with Pusher](https://pusher.com)\n\n💡 (requires enabling)\n\n- [`src/hooks/useEvent.ts`](src/hooks/useEvent.ts)\n- [`src/lib/events.ts`](src/lib/events.ts)\n- [`src/trpc/methods.ts`](src/trpc/methods.ts)\n\n#### Examples\n\n- [`src/app/examples/websockets/page.tsx`](src/app/examples/websockets/page.tsx)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyhner%2Fnext-kickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyhner%2Fnext-kickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyhner%2Fnext-kickstart/lists"}