├── .env
├── .eslintignore
├── .eslintrc.json
├── .github
├── FUNDING.yml
└── workflows
│ ├── CI.yml
│ ├── checkly.yml
│ ├── crowdin.yml
│ ├── release.yml
│ └── update-deps.yml
├── .gitignore
├── .husky
├── commit-msg
└── pre-commit
├── .storybook
├── main.ts
└── preview.ts
├── .vscode
├── extensions.json
├── i18n-ally-custom-framework.yml
├── launch.json
├── settings.json
└── tasks.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── checkly.config.ts
├── codecov.yml
├── commitlint.config.ts
├── crowdin.yml
├── drizzle.config.ts
├── lint-staged.config.js
├── migrations
├── 0000_init_db.sql
└── meta
│ ├── 0000_snapshot.json
│ └── _journal.json
├── next-env.d.ts
├── next.config.mjs
├── package-lock.json
├── package.json
├── playwright.config.ts
├── postcss.config.js
├── public
├── apple-touch-icon.png
├── assets
│ └── images
│ │ ├── better-stack-dark.png
│ │ ├── better-stack-white.png
│ │ ├── checkly-logo-dark.png
│ │ ├── checkly-logo-light.png
│ │ ├── clerk-logo-dark.png
│ │ ├── codecov-dark.svg
│ │ ├── codecov-white.svg
│ │ ├── crowdin-dark.png
│ │ ├── crowdin-white.png
│ │ ├── nextjs-starter-banner.png
│ │ ├── nextlessjs.png
│ │ ├── sentry-dark.png
│ │ ├── sentry-white.png
│ │ ├── turso-dark.png
│ │ └── turso-light.png
├── favicon-16x16.png
├── favicon-32x32.png
└── favicon.ico
├── sentry.client.config.ts
├── sentry.edge.config.ts
├── sentry.server.config.ts
├── src
├── app
│ ├── [locale]
│ │ ├── (auth)
│ │ │ ├── (center)
│ │ │ │ ├── layout.tsx
│ │ │ │ ├── sign-in
│ │ │ │ │ └── [[...sign-in]]
│ │ │ │ │ │ └── page.tsx
│ │ │ │ └── sign-up
│ │ │ │ │ └── [[...sign-up]]
│ │ │ │ │ └── page.tsx
│ │ │ ├── dashboard
│ │ │ │ ├── layout.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ └── user-profile
│ │ │ │ │ └── [[...user-profile]]
│ │ │ │ │ └── page.tsx
│ │ │ └── layout.tsx
│ │ ├── (unauth)
│ │ │ ├── about
│ │ │ │ ├── page.test.tsx
│ │ │ │ └── page.tsx
│ │ │ ├── api
│ │ │ │ └── guestbook
│ │ │ │ │ └── route.ts
│ │ │ ├── guestbook
│ │ │ │ └── page.tsx
│ │ │ ├── layout.tsx
│ │ │ ├── page.test.tsx
│ │ │ ├── page.tsx
│ │ │ └── portfolio
│ │ │ │ ├── [slug]
│ │ │ │ └── page.tsx
│ │ │ │ └── page.tsx
│ │ └── layout.tsx
│ ├── global-error.tsx
│ ├── robots.ts
│ └── sitemap.ts
├── components
│ ├── AddGuestbookForm.tsx
│ ├── DeleteGuestbookEntry.tsx
│ ├── DemoBadge.tsx
│ ├── EditableGuestbookEntry.tsx
│ ├── GuestbookForm.tsx
│ ├── GuestbookList.tsx
│ ├── Hello.tsx
│ ├── LocaleSwitcher.tsx
│ ├── LogOutButton.tsx
│ └── Sponsors.tsx
├── libs
│ ├── DB.ts
│ ├── Env.ts
│ ├── Logger.ts
│ ├── i18n.ts
│ └── i18nNavigation.ts
├── locales
│ ├── en.json
│ └── fr.json
├── middleware.ts
├── models
│ └── Schema.ts
├── styles
│ └── global.css
├── templates
│ ├── BaseTemplate.stories.tsx
│ ├── BaseTemplate.test.tsx
│ └── BaseTemplate.tsx
├── types
│ └── global.d.ts
├── utils
│ ├── AppConfig.ts
│ ├── Helpers.test.ts
│ ├── Helpers.ts
│ └── dist
│ │ └── AppConfig.js
└── validations
│ └── GuestbookValidation.ts
├── tailwind.config.ts
├── tests
├── e2e
│ ├── Guestbook.spec.ts
│ ├── Navigation.spec.ts
│ └── Sanity.check.spec.ts
└── integration
│ └── Guestbook.spec.ts
├── tsconfig.json
├── vitest-setup.ts
└── vitest.config.mts
/.env:
--------------------------------------------------------------------------------
1 | # FIXME: Configure environment variables for your project
2 |
3 | # For security reason, don't push secret key in your git repo.
4 | # Append .local to the environment files to prevent your secret key from being commited to Git.
5 |
6 | # Hosting
7 | # Replace by your domain name, only for production
8 | # NEXT_PUBLIC_APP_URL=https://example.com
9 |
10 | # Database
11 | # Using an incorrect DATABASE_URL value, Next.js build will timeout and you will get the following error: "because it took more than 60 seconds"
12 | # DATABASE_URL=libsql://[RANDOM-CHARS]-[DB-NAME]-[ORG-NAME].turso.io
13 | DATABASE_URL=file:next-js-boilerplate.db
14 |
15 | # Clerk authentication
16 | NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_cHJvZm91bmQtYmx1ZWdpbGwtMC5jbGVyay5hY2NvdW50cy5kZXYk
17 |
18 | NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
19 |
20 | ######## [BEGIN] SENSITIVE DATA ######## For security reason, don't update the following variables (secret key) directly in this file.
21 | ######## Please create a new file named `.env.local`, all environment files ending with `.local` won't be tracked by Git.
22 | ######## After creating the file, you can add the following variables.
23 | CLERK_SECRET_KEY=sk_test_19ZQnHVcfboDNoxeTuVBRwGNorgLXEgzQwIm5Gbstj
24 |
25 | DATABASE_AUTH_TOKEN=your_database_auth_token
26 |
27 | # LOGTAIL_SOURCE_TOKEN=
28 | ######## [END] SENSITIVE DATA
29 |
30 | # CROWDIN_PROJECT_ID=yayu-form
31 | # CROWDIN_PERSONAL_TOKEN=091f789109e4dda61679a42a946cab775c314af908dda4d3b53f976b786626b0366c8eada9bb72a1
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | out
3 | !.storybook
4 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | // Configuration for JavaScript files
3 | "extends": [
4 | "airbnb-base",
5 | "next/core-web-vitals", // Needed to avoid warning in next.js build: 'The Next.js plugin was not detected in your ESLint configuration'
6 | "plugin:prettier/recommended"
7 | ],
8 | "rules": {
9 | "prettier/prettier": [
10 | "error",
11 | {
12 | "singleQuote": true,
13 | "endOfLine": "auto"
14 | }
15 | ] // Avoid conflict rule between Prettier and Airbnb Eslint
16 | },
17 | "overrides": [
18 | // Configuration for TypeScript files
19 | {
20 | "files": ["**/*.ts", "**/*.tsx", "**/*.mts"],
21 | "plugins": [
22 | "@typescript-eslint",
23 | "unused-imports",
24 | "tailwindcss",
25 | "simple-import-sort"
26 | ],
27 | "extends": [
28 | "plugin:tailwindcss/recommended",
29 | "airbnb",
30 | "airbnb-typescript",
31 | "next/core-web-vitals",
32 | "plugin:prettier/recommended"
33 | ],
34 | "parser": "@typescript-eslint/parser",
35 | "parserOptions": {
36 | "project": "./tsconfig.json"
37 | },
38 | "rules": {
39 | "prettier/prettier": [
40 | "error",
41 | {
42 | "singleQuote": true,
43 | "endOfLine": "auto"
44 | }
45 | ], // Avoid conflict rule between Prettier and Airbnb Eslint
46 | "import/extensions": "off", // Avoid missing file extension errors, TypeScript already provides a similar feature
47 | "react/function-component-definition": "off", // Disable Airbnb's specific function type
48 | "react/destructuring-assignment": "off", // Vscode doesn't support automatically destructuring, it's a pain to add a new variable
49 | "react/require-default-props": "off", // Allow non-defined react props as undefined
50 | "react/jsx-props-no-spreading": "off", // _app.tsx uses spread operator and also, react-hook-form
51 | "@typescript-eslint/comma-dangle": "off", // Avoid conflict rule between Eslint and Prettier
52 | "@typescript-eslint/consistent-type-imports": "error", // Ensure `import type` is used when it's necessary
53 | "no-restricted-syntax": [
54 | "error",
55 | "ForInStatement",
56 | "LabeledStatement",
57 | "WithStatement"
58 | ], // Overrides Airbnb configuration and enable no-restricted-syntax
59 | "import/prefer-default-export": "off", // Named export is easier to refactor automatically
60 | "simple-import-sort/imports": "error", // Import configuration for `eslint-plugin-simple-import-sort`
61 | "simple-import-sort/exports": "error", // Export configuration for `eslint-plugin-simple-import-sort`
62 | "import/order": "off", // Avoid conflict rule between `eslint-plugin-import` and `eslint-plugin-simple-import-sort`
63 | "@typescript-eslint/no-unused-vars": "off",
64 | "unused-imports/no-unused-imports": "error",
65 | "unused-imports/no-unused-vars": [
66 | "error",
67 | { "argsIgnorePattern": "^_" }
68 | ]
69 | }
70 | },
71 | // Configuration for testing
72 | {
73 | "files": ["**/*.test.ts", "**/*.test.tsx"],
74 | "plugins": ["vitest", "jest-formatting", "testing-library", "jest-dom"],
75 | "extends": [
76 | "plugin:vitest/recommended",
77 | "plugin:jest-formatting/recommended",
78 | "plugin:testing-library/react",
79 | "plugin:jest-dom/recommended"
80 | ]
81 | },
82 | // Configuration for e2e testing (Playwright)
83 | {
84 | "files": ["**/*.spec.ts"],
85 | "extends": ["plugin:playwright/recommended"]
86 | },
87 | // Configuration for Storybook
88 | {
89 | "files": ["*.stories.*"],
90 | "extends": ["plugin:storybook/recommended"],
91 | "rules": {
92 | "import/no-extraneous-dependencies": [
93 | "error",
94 | {
95 | "devDependencies": true
96 | }
97 | ]
98 | }
99 | }
100 | ]
101 | }
102 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: ixartz
2 | custom:
3 | ["https://donate.stripe.com/7sI5m5146ehfddm7tj", "https://nextlessjs.com"]
4 |
--------------------------------------------------------------------------------
/.github/workflows/CI.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches: [main]
6 | pull_request:
7 | branches: [main]
8 |
9 | jobs:
10 | build:
11 | strategy:
12 | matrix:
13 | node-version: [20.x, 22.x]
14 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
15 |
16 | name: Build with ${{ matrix.node-version }}
17 | runs-on: ubuntu-latest
18 |
19 | steps:
20 | - uses: actions/checkout@v3
21 | - name: Use Node.js ${{ matrix.node-version }}
22 | uses: actions/setup-node@v3
23 | with:
24 | node-version: ${{ matrix.node-version }}
25 | cache: "npm"
26 | - run: npm ci
27 | - run: npm run build
28 |
29 | test:
30 | strategy:
31 | matrix:
32 | node-version: [20.x]
33 |
34 | name: Run all tests
35 | runs-on: ubuntu-latest
36 |
37 | steps:
38 | - uses: actions/checkout@v3
39 | with:
40 | fetch-depth: 0 # Retrieve Git history, needed to verify commits
41 | - name: Use Node.js ${{ matrix.node-version }}
42 | uses: actions/setup-node@v3
43 | with:
44 | node-version: ${{ matrix.node-version }}
45 | cache: "npm"
46 | - run: npm ci
47 |
48 | - name: Set SENTRY_AUTH_TOKEN env if secret exists
49 | run: |
50 | if [[ -n "${{ secrets.SENTRY_AUTH_TOKEN }}" ]]; then
51 | echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> $GITHUB_ENV
52 | fi
53 |
54 | - name: Build Next.js for E2E tests
55 | run: npm run build
56 |
57 | - if: github.event_name == 'pull_request'
58 | name: Validate all commits from PR
59 | run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
60 |
61 | - name: Linter
62 | run: npm run lint
63 |
64 | - name: Type checking
65 | run: npm run check-types
66 |
67 | - name: Run unit tests
68 | run: npm run test
69 |
70 | - name: Upload coverage reports to Codecov
71 | uses: codecov/codecov-action@v3
72 | env:
73 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
74 |
75 | - name: Install Playwright (used for Storybook and E2E tests)
76 | run: npx playwright install --with-deps
77 |
78 | - name: Run storybook tests
79 | run: npm run test-storybook:ci
80 |
81 | - name: Run E2E tests
82 | run: npx percy exec -- npm run test:e2e
83 | env:
84 | PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
85 |
86 | - uses: actions/upload-artifact@v3
87 | if: always()
88 | with:
89 | name: test-results
90 | path: test-results/
91 | retention-days: 7
92 |
--------------------------------------------------------------------------------
/.github/workflows/checkly.yml:
--------------------------------------------------------------------------------
1 | name: Checkly
2 |
3 | on: [deployment_status]
4 |
5 | env:
6 | CHECKLY_API_KEY: ${{ secrets.CHECKLY_API_KEY }}
7 | CHECKLY_ACCOUNT_ID: ${{ secrets.CHECKLY_ACCOUNT_ID }}
8 | ENVIRONMENT_URL: ${{ github.event.deployment_status.environment_url }}
9 | CHECKLY_TEST_ENVIRONMENT: ${{ github.event.deployment_status.environment }}
10 |
11 | jobs:
12 | test-e2e:
13 | strategy:
14 | matrix:
15 | node-version: [20.x]
16 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
17 |
18 | # Only run when the deployment was successful
19 | if: github.event.deployment_status.state == 'success'
20 |
21 | name: Test E2E on Checkly
22 | runs-on: ubuntu-latest
23 | timeout-minutes: 10
24 |
25 | steps:
26 | - uses: actions/checkout@v3
27 | with:
28 | ref: "${{ github.event.deployment_status.deployment.ref }}"
29 | fetch-depth: 0
30 |
31 | - name: Set branch name # workaround to detect branch name in "deployment_status" actions
32 | run: echo "CHECKLY_TEST_REPO_BRANCH=$(git show -s --pretty=%D HEAD | tr -s ',' '\n' | sed 's/^ //' | grep -e 'origin/' | head -1 | sed 's/\origin\///g')" >> $GITHUB_ENV
33 |
34 | - uses: actions/setup-node@v3
35 | with:
36 | node-version: ${{ matrix.node-version }}
37 | cache: "npm"
38 |
39 | - name: Restore or cache node_modules
40 | id: cache-node-modules
41 | uses: actions/cache@v3
42 | with:
43 | path: node_modules
44 | key: node-modules-${{ hashFiles('package-lock.json') }}
45 |
46 | - name: Install dependencies
47 | if: steps.cache-node-modules.outputs.cache-hit != 'true'
48 | run: npm ci
49 |
50 | - name: Run checks # run the checks passing in the ENVIRONMENT_URL and recording a test session.
51 | id: run-checks
52 | run: npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} --reporter=github --record
53 |
54 | - name: Create summary # export the markdown report to the job summary.
55 | id: create-summary
56 | run: cat checkly-github-report.md > $GITHUB_STEP_SUMMARY
57 |
58 | - name: Deploy checks # if the test run was successful and we are on Production, deploy the checks
59 | id: deploy-checks
60 | if: steps.run-checks.outcome == 'success' && github.event.deployment_status.environment == 'Production'
61 | run: npx checkly deploy --force
62 |
--------------------------------------------------------------------------------
/.github/workflows/crowdin.yml:
--------------------------------------------------------------------------------
1 | name: Crowdin Action
2 |
3 | on:
4 | push:
5 | branches: [ main ] # Run on push to the main branch
6 | schedule:
7 | - cron: "0 5 * * *" # Run every day at 5am
8 | workflow_dispatch: # Run manually
9 |
10 | jobs:
11 | synchronize-with-crowdin:
12 | name: Synchronize with Crowdin
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v3
17 |
18 | - name: crowdin action
19 | uses: crowdin/github-action@v1
20 | with:
21 | upload_sources: true
22 | upload_translations: true
23 | download_translations: true
24 | localization_branch_name: l10n_crowdin_translations
25 | create_pull_request: true
26 | pull_request_title: 'New Crowdin Translations'
27 | pull_request_body: 'New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action)'
28 | pull_request_base_branch_name: 'main'
29 | commit_message: 'chore: new Crowdin translations by GitHub Action'
30 | env:
31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32 | CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
33 | CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
34 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | workflow_run:
5 | workflows: ["CI"]
6 | types:
7 | - completed
8 | branches:
9 | - main
10 |
11 | jobs:
12 | release:
13 | strategy:
14 | matrix:
15 | node-version: [20.x]
16 |
17 | name: Create a new release
18 | runs-on: ubuntu-latest
19 |
20 | permissions:
21 | contents: write # to be able to publish a GitHub release
22 | issues: write # to be able to comment on released issues
23 | pull-requests: write # to be able to comment on released pull requests
24 |
25 | steps:
26 | - uses: actions/checkout@v3
27 | with:
28 | fetch-depth: 0
29 | - name: Use Node.js ${{ matrix.node-version }}
30 | uses: actions/setup-node@v3
31 | with:
32 | node-version: ${{ matrix.node-version }}
33 | cache: "npm"
34 | - run: HUSKY=0 npm ci
35 |
36 | - name: Release
37 | env:
38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 | run: npx semantic-release
40 |
--------------------------------------------------------------------------------
/.github/workflows/update-deps.yml:
--------------------------------------------------------------------------------
1 | name: Update dependencies
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: "0 0 1 * *"
7 |
8 | jobs:
9 | update:
10 | strategy:
11 | matrix:
12 | node-version: [20.x]
13 |
14 | name: Update all dependencies
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v3
19 | - name: Use Node.js ${{ matrix.node-version }}
20 | uses: actions/setup-node@v3
21 | with:
22 | node-version: ${{ matrix.node-version }}
23 | cache: "npm"
24 | - run: npm ci
25 |
26 | - run: npx npm-check-updates -u # Update dependencies
27 | - run: rm -Rf node_modules package-lock.json
28 | - run: npm install
29 | - name: Create Pull Request
30 | uses: peter-evans/create-pull-request@v4
31 | with:
32 | commit-message: "build: update dependencies to the latest version"
33 | title: Update dependencies to the latest version
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # Database
9 | *.db
10 |
11 | # testing
12 | /coverage
13 |
14 | # storybook
15 | storybook-static
16 | *storybook.log
17 |
18 | # playwright
19 | /test-results/
20 | /playwright-report/
21 | /playwright/.cache/
22 |
23 | # next.js
24 | /.next
25 | /out
26 |
27 | # cache
28 | .swc/
29 |
30 | # production
31 | /build
32 |
33 | # misc
34 | .DS_Store
35 | *.pem
36 | Thumbs.db
37 |
38 | # debug
39 | npm-debug.log*
40 | pnpm-debug.log*
41 | yarn-debug.log*
42 | yarn-error.log*
43 |
44 | # local env files
45 | .env*.local
46 |
47 | # local folder
48 | local
49 |
50 | # vercel
51 | .vercel
52 |
53 | # Sentry Config File
54 | .sentryclirc
55 |
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | cd "$(dirname "$0")/.." && npx --no -- commitlint --edit $1
3 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Disable concurent to run `check-types` after ESLint in lint-staged
3 | cd "$(dirname "$0")/.." && npx lint-staged --concurrent false
4 |
--------------------------------------------------------------------------------
/.storybook/main.ts:
--------------------------------------------------------------------------------
1 | import type { StorybookConfig } from '@storybook/nextjs';
2 |
3 | const config: StorybookConfig = {
4 | stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
5 | addons: [
6 | '@storybook/addon-onboarding',
7 | '@storybook/addon-links',
8 | '@storybook/addon-essentials',
9 | '@storybook/addon-interactions',
10 | ],
11 | framework: {
12 | name: '@storybook/nextjs',
13 | options: {},
14 | },
15 | staticDirs: ['../public'],
16 | core: {
17 | disableTelemetry: true,
18 | },
19 | };
20 |
21 | export default config;
22 |
--------------------------------------------------------------------------------
/.storybook/preview.ts:
--------------------------------------------------------------------------------
1 | import '../src/styles/global.css';
2 |
3 | import type { Preview } from '@storybook/react';
4 |
5 | const preview: Preview = {
6 | parameters: {
7 | controls: {
8 | matchers: {
9 | color: /(background|color)$/i,
10 | date: /Date$/i,
11 | },
12 | },
13 | nextjs: {
14 | appDirectory: true,
15 | },
16 | },
17 | };
18 |
19 | export default preview;
20 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "dbaeumer.vscode-eslint",
4 | "mikestead.dotenv",
5 | "csstools.postcss",
6 | "bradlc.vscode-tailwindcss",
7 | "vitest.explorer",
8 | "humao.rest-client",
9 | "yoavbls.pretty-ts-errors",
10 | "ms-playwright.playwright",
11 | "github.vscode-github-actions",
12 | "lokalise.i18n-ally"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/.vscode/i18n-ally-custom-framework.yml:
--------------------------------------------------------------------------------
1 | languageIds:
2 | - javascript
3 | - typescript
4 | - javascriptreact
5 | - typescriptreact
6 |
7 | usageMatchRegex:
8 | - "[^\\w\\d]t\\(['\"`]({key})['\"`]"
9 |
10 | scopeRangeRegex: "(?:useTranslations\\(|getTranslations\\(|namespace:)\\s*['\"`](.*?)['\"`]"
11 |
12 | monopoly: true
13 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Next.js: debug full stack",
9 | "type": "node-terminal",
10 | "request": "launch",
11 | "command": "npm run dev",
12 | "serverReadyAction": {
13 | "pattern": "- Local:.+(https?://.+)",
14 | "uriFormat": "%s",
15 | "action": "debugWithChrome"
16 | }
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.tabSize": 2,
3 | "editor.detectIndentation": false,
4 | "search.exclude": {
5 | "package-lock.json": true
6 | },
7 | "editor.defaultFormatter": "dbaeumer.vscode-eslint",
8 | "editor.formatOnSave": false,
9 | "editor.codeActionsOnSave": [
10 | "source.addMissingImports",
11 | "source.fixAll.eslint"
12 | ],
13 | "typescript.tsdk": "node_modules/typescript/lib", // Use the workspace version of TypeScript
14 | "typescript.enablePromptUseWorkspaceTsdk": true, // For security reasons it's require that users opt into using the workspace version of typescript
15 | "typescript.preferences.autoImportFileExcludePatterns": [
16 | // useRouter should be imported from `next/navigation` instead of `next/router`
17 | "next/router.d.ts",
18 | "next/dist/client/router.d.ts",
19 | // give priority for Link to next/link instead of lucide-react
20 | "lucide-react"
21 | ],
22 | "typescript.preferences.preferTypeOnlyAutoImports": true, // Prefer type-only imports
23 | "testing.openTesting": "neverOpen", // Don't open the testing view automatically when running tests
24 | // Multiple language settings for json and jsonc files
25 | "[json][jsonc][yaml]": {
26 | "editor.formatOnSave": true,
27 | "editor.defaultFormatter": "esbenp.prettier-vscode"
28 | },
29 | "prettier.ignorePath": ".gitignore", // Don't run prettier for files listed in .gitignore
30 | "i18n-ally.localesPaths": ["src/locales"],
31 | "i18n-ally.keystyle": "nested"
32 | }
33 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=733558
3 | // for the documentation about the tasks.json format
4 | "version": "2.0.0",
5 | "tasks": [
6 | {
7 | "label": "Project wide type checking with TypeScript",
8 | "type": "npm",
9 | "script": "check-types",
10 | "problemMatcher": ["$tsc"],
11 | "group": {
12 | "kind": "build",
13 | "isDefault": true
14 | },
15 | "presentation": {
16 | "clear": true,
17 | "reveal": "never"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # [3.52.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.51.0...v3.52.0) (2024-05-31)
2 |
3 |
4 | ### Features
5 |
6 | * update Drizzle configuration for Drizzle Kit 0.22 and improve ([5159455](https://github.com/ixartz/Next-js-Boilerplate/commit/5159455ab2cfb569702b33a7e2135ec23f32d598))
7 |
8 | # [3.51.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.50.1...v3.51.0) (2024-05-29)
9 |
10 |
11 | ### Features
12 |
13 | * update to Drizzle kit 0.21 version, no need to have dialect in command line ([62aa678](https://github.com/ixartz/Next-js-Boilerplate/commit/62aa6786117637e6b76c97f6c98f7ca6e8c343b0))
14 |
15 | ## [3.50.1](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.50.0...v3.50.1) (2024-05-20)
16 |
17 |
18 | ### Bug Fixes
19 |
20 | * add eslint support for .mts file ([cd58d38](https://github.com/ixartz/Next-js-Boilerplate/commit/cd58d3806206e269d712e0976f4101af26275e44))
21 |
22 | # [3.50.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.49.0...v3.50.0) (2024-05-18)
23 |
24 |
25 | ### Features
26 |
27 | * replace Jest by Vitest for better DX ([2504504](https://github.com/ixartz/Next-js-Boilerplate/commit/25045041bb0af1fc4065ccffdb4d4d9b715c5823))
28 | * update to Storybook v8 ([51b20a6](https://github.com/ixartz/Next-js-Boilerplate/commit/51b20a64f8f7a9780cb4c81b6ec2f0d1ac8779c5))
29 |
30 |
31 | ### Reverts
32 |
33 | * reuse vitest.config.mts to avoid warning when running the tests ([f923242](https://github.com/ixartz/Next-js-Boilerplate/commit/f9232425d3cca895bcf3b45355dbee2caaedccce))
34 |
35 | # [3.49.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.48.0...v3.49.0) (2024-05-17)
36 |
37 |
38 | ### Features
39 |
40 | * vscode jest open test result view on test fails and add unauthenticatedUrl in clerk middleware ([2a68124](https://github.com/ixartz/Next-js-Boilerplate/commit/2a681244f834b6ea55bcd5cd3105f8b4a9df4a05))
41 |
42 | # [3.48.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.47.0...v3.48.0) (2024-05-09)
43 |
44 |
45 | ### Features
46 |
47 | * add custom configuration for i18n ally VSCode extension ([46f9459](https://github.com/ixartz/Next-js-Boilerplate/commit/46f945963c02eb29efc802fb0f3b1220b10bdf13))
48 |
49 | # [3.47.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.46.0...v3.47.0) (2024-05-07)
50 |
51 |
52 | ### Features
53 |
54 | * make dashboard without lang protected route in Clerk ([704466b](https://github.com/ixartz/Next-js-Boilerplate/commit/704466bbab40e366d0c1e17b66d7f5f0e97b902b))
55 | * run Clerk middleware only needed ([5aeee06](https://github.com/ixartz/Next-js-Boilerplate/commit/5aeee0609bb9abbccf17aa0d2900cffdc7c3a18a))
56 | * upgrade to Clerk v5 and use Clerk's Core 2 ([c1978f1](https://github.com/ixartz/Next-js-Boilerplate/commit/c1978f181a7c29e443fe407d91dfb9c2ae147f04))
57 |
58 |
59 | ### Reverts
60 |
61 | * add back process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL ([f8cb9f4](https://github.com/ixartz/Next-js-Boilerplate/commit/f8cb9f441e08ec4f0e4501e4b42b4923adbc01a1))
62 | * downgrade React to 18.2 due to testing errors, error raised in Next.js issue [#65161](https://github.com/ixartz/Next-js-Boilerplate/issues/65161) ([1815eb3](https://github.com/ixartz/Next-js-Boilerplate/commit/1815eb3670f53b4d949a06505e8ef3afd4ab0ee5))
63 |
64 | # [3.46.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.45.0...v3.46.0) (2024-04-13)
65 |
66 |
67 | ### Features
68 |
69 | * new turso logo ([3e781fc](https://github.com/ixartz/Next-js-Boilerplate/commit/3e781fc75201a7271a3a640a0b665adb1560add6))
70 | * use new Turso tagline ([601ba6b](https://github.com/ixartz/Next-js-Boilerplate/commit/601ba6b2a4beb1a0c6779964d2d654bd3553f044))
71 |
72 | # [3.45.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.44.1...v3.45.0) (2024-04-04)
73 |
74 |
75 | ### Features
76 |
77 | * remove next-sitemap and use the native Next.js sitemap/robots.txt ([135a435](https://github.com/ixartz/Next-js-Boilerplate/commit/135a4350bef905d2a38a8901d42e5fa304fb92bc))
78 |
79 | ## [3.44.1](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.44.0...v3.44.1) (2024-04-03)
80 |
81 |
82 | ### Bug Fixes
83 |
84 | * add Twitter in the index page ([75dfb8b](https://github.com/ixartz/Next-js-Boilerplate/commit/75dfb8bc5ca40446005f8d405add52d09071f62a))
85 | * use new VSCode Jest configuration ([e92e4e0](https://github.com/ixartz/Next-js-Boilerplate/commit/e92e4e09c636944d85cec38683738520224acebb))
86 |
87 | # [3.44.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.43.0...v3.44.0) (2024-04-02)
88 |
89 |
90 | ### Features
91 |
92 | * run migration only in development and eslint-disable need to be at the top ([db94f31](https://github.com/ixartz/Next-js-Boilerplate/commit/db94f31615cd5ffcc3739ab56572646f7ce1f177))
93 |
94 | # [3.43.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.42.0...v3.43.0) (2024-03-07)
95 |
96 |
97 | ### Features
98 |
99 | * use eslintrc.json and give release.yml permission in GitHub Actions ([a329518](https://github.com/ixartz/Next-js-Boilerplate/commit/a32951811e157696ab915eebd6b71b09f49ccb83))
100 |
101 | # [3.42.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.41.0...v3.42.0) (2024-02-22)
102 |
103 |
104 | ### Features
105 |
106 | * remove import React when it's not needed ([a7082d3](https://github.com/ixartz/Next-js-Boilerplate/commit/a7082d3492d9a426218829f86554b2aeda9da8fd))
107 |
108 | # [3.41.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.40.0...v3.41.0) (2024-02-09)
109 |
110 |
111 | ### Features
112 |
113 | * add target blank for links going outside ([37ba36e](https://github.com/ixartz/Next-js-Boilerplate/commit/37ba36e5e3815d87cf882dc9aaf8b69b5849b49e))
114 | * make the index page of the boilerplate cleaner ([f3a3f9b](https://github.com/ixartz/Next-js-Boilerplate/commit/f3a3f9b306bfaed85058d59cd15e62db158468ca))
115 |
116 | # [3.40.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.39.0...v3.40.0) (2024-02-07)
117 |
118 |
119 | ### Features
120 |
121 | * add pino.js as Logger ([1d35f43](https://github.com/ixartz/Next-js-Boilerplate/commit/1d35f43efd5e250498d2d30654be672e4e2d91c9))
122 |
123 | # [3.39.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.38.0...v3.39.0) (2024-02-07)
124 |
125 |
126 | ### Features
127 |
128 | * add preferType on VSCode ([a55bc6a](https://github.com/ixartz/Next-js-Boilerplate/commit/a55bc6a4b543c47ec491c5a84806f62c93dc1aa4))
129 |
130 | # [3.38.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.37.0...v3.38.0) (2024-01-19)
131 |
132 |
133 | ### Features
134 |
135 | * update to Next.js 14.1 ([5dab52d](https://github.com/ixartz/Next-js-Boilerplate/commit/5dab52d58648a12b5779f04d642ad4b2010931b0))
136 |
137 | # [3.37.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.36.0...v3.37.0) (2024-01-13)
138 |
139 |
140 | ### Features
141 |
142 | * add environment variables for one click deploy Netlify ([5becdbf](https://github.com/ixartz/Next-js-Boilerplate/commit/5becdbf59f43fdfe893c5b7b62cac1246787a07e))
143 |
144 | # [3.36.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.35.0...v3.36.0) (2024-01-10)
145 |
146 |
147 | ### Features
148 |
149 | * prod environement use the same method to migrate ([f6cfe7f](https://github.com/ixartz/Next-js-Boilerplate/commit/f6cfe7fa7583621c9161aa478f1d958d5c93c083))
150 |
151 |
152 | ### Reverts
153 |
154 | * add back process.env.NODE_ENV check in README file for migrate ([853f3dc](https://github.com/ixartz/Next-js-Boilerplate/commit/853f3dc4cbade618902b382023fe6a6a8e947082))
155 | * only run migration in development, if it run in production, it also run during the build ([c94a600](https://github.com/ixartz/Next-js-Boilerplate/commit/c94a6007b20f71fe10b10c76a05659364ee920ff))
156 |
157 | # [3.35.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.34.0...v3.35.0) (2024-01-07)
158 |
159 |
160 | ### Features
161 |
162 | * automatically run migrate in DB instead of running in NPM scripts ([b202686](https://github.com/ixartz/Next-js-Boilerplate/commit/b202686687a41eb38cf92a0451f03b5f0a854a2d))
163 | * e2e tests run against next start with production code ([a57f724](https://github.com/ixartz/Next-js-Boilerplate/commit/a57f72402c459b75aec65472db7030557974643b))
164 | * jest fail on console error and warn ([2dd92f2](https://github.com/ixartz/Next-js-Boilerplate/commit/2dd92f2db19df25210f0aa6eb8b9c44136a16ab7))
165 |
166 |
167 | ### Reverts
168 |
169 | * change related to running playwright with next start ([1a2d0b6](https://github.com/ixartz/Next-js-Boilerplate/commit/1a2d0b6473e6e7b4965c7df353d39645a8688273))
170 | * change related to running playwright with next start ([e9e0c17](https://github.com/ixartz/Next-js-Boilerplate/commit/e9e0c1790a8e76b51ee8a0b1012cc3492349bd1b))
171 |
172 | # [3.34.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.33.0...v3.34.0) (2024-01-06)
173 |
174 |
175 | ### Features
176 |
177 | * add type definition in Postcss config ([07906ff](https://github.com/ixartz/Next-js-Boilerplate/commit/07906ff20a7c8d2b0c24cc1f33c93b0bc541b9c3))
178 | * change commitlint config from JS to TS ([6509805](https://github.com/ixartz/Next-js-Boilerplate/commit/650980539eb16c4ef0f5d1ed3e833cdb08faaf86))
179 | * change jest config extension from js to TypeScript ([1cdea44](https://github.com/ixartz/Next-js-Boilerplate/commit/1cdea44c2a193e9df792dc997f6aa5304e043ff6))
180 | * change nodeResolution to the new bundler from TypeScript 5.0 ([59282a2](https://github.com/ixartz/Next-js-Boilerplate/commit/59282a2f028a10b841f4af42248e4ecd2c41c080))
181 | * convert Tailwind config file from JS to TS ([aff3b27](https://github.com/ixartz/Next-js-Boilerplate/commit/aff3b276c6b857570c3ec0b68de3cd5efaaeebbd))
182 |
183 | # [3.33.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.32.1...v3.33.0) (2024-01-03)
184 |
185 |
186 | ### Features
187 |
188 | * enable SWC compiler in Storybook ([5b4c61e](https://github.com/ixartz/Next-js-Boilerplate/commit/5b4c61ea11164b6e5853cefe363d2d433cda374d))
189 |
190 | ## [3.32.1](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.32.0...v3.32.1) (2023-12-27)
191 |
192 |
193 | ### Bug Fixes
194 |
195 | * typo in en.json file for Portfolio word ([4d42b3d](https://github.com/ixartz/Next-js-Boilerplate/commit/4d42b3d11feeb1134961c0c688a6659b5e88364e))
196 |
197 | # [3.32.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.31.0...v3.32.0) (2023-12-22)
198 |
199 |
200 | ### Features
201 |
202 | * add code coverage reporting with Codecov ([08abd23](https://github.com/ixartz/Next-js-Boilerplate/commit/08abd23acbb5fb770046900901a367d60f18695e))
203 |
204 | # [3.31.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.30.1...v3.31.0) (2023-12-20)
205 |
206 |
207 | ### Features
208 |
209 | * add FIXME tag for Sentry configuration ([2eceef1](https://github.com/ixartz/Next-js-Boilerplate/commit/2eceef14257232c89f625acfe475c1aa7f220e46))
210 | * add Sentry and launch spotlight.js in dev mode ([a1326ae](https://github.com/ixartz/Next-js-Boilerplate/commit/a1326aebb4ade33dc8a4429e749fb482ed906754))
211 | * add spotlight ([34086c1](https://github.com/ixartz/Next-js-Boilerplate/commit/34086c1b8636bdc391c31ceed062a1e858d81539))
212 | * enable Sentry Spotlight only in development mode ([62cc01a](https://github.com/ixartz/Next-js-Boilerplate/commit/62cc01ab2e1ae5594a4b91f931f313a904ff4b7d))
213 | * ignore technical exception throw by React RSC in Sentry ([4bf9503](https://github.com/ixartz/Next-js-Boilerplate/commit/4bf95038600a28ea3e98e84dabec4df5fd9af609))
214 | * in global error get locale in params and set in html lang attribute ([c3b4d25](https://github.com/ixartz/Next-js-Boilerplate/commit/c3b4d25d3be6a5ceed48f2d365bd14e44ff9b114))
215 |
216 | ## [3.30.1](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.30.0...v3.30.1) (2023-12-17)
217 |
218 |
219 | ### Bug Fixes
220 |
221 | * api routes not found after apply intl middleware ([4650a5e](https://github.com/ixartz/Next-js-Boilerplate/commit/4650a5e293716dee7704c6082839aaf94b63e7ad)), closes [#209](https://github.com/ixartz/Next-js-Boilerplate/issues/209)
222 |
223 | # [3.30.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.29.0...v3.30.0) (2023-12-12)
224 |
225 |
226 | ### Features
227 |
228 | * add GitHub Actions to sync with Crowdin ([ccc86e9](https://github.com/ixartz/Next-js-Boilerplate/commit/ccc86e9e4df89dadd3214ae167972038f44108a6))
229 |
230 | # [3.29.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.28.0...v3.29.0) (2023-12-08)
231 |
232 |
233 | ### Features
234 |
235 | * add i18n support for client component and typesafety for i18n keys ([2d86247](https://github.com/ixartz/Next-js-Boilerplate/commit/2d862478414c4e6cf06e287acbef50369ef9a119))
236 | * add i18n support for Dashboard url used in Clerk ([12b89bc](https://github.com/ixartz/Next-js-Boilerplate/commit/12b89bcfa1cae76872fc1504960a5ee417ef5eea))
237 | * add i18n with Clerk components and remove custom style in global.css file ([5e1af6c](https://github.com/ixartz/Next-js-Boilerplate/commit/5e1af6c9a83cc6988c68fd761bf4945a2e0cdb9c))
238 | * add i18n with next-intl ([1f43eb2](https://github.com/ixartz/Next-js-Boilerplate/commit/1f43eb247ad8591fef3aa8a34d112dd804eec4c3))
239 | * add locale switcher UI to change lang ([13b40e3](https://github.com/ixartz/Next-js-Boilerplate/commit/13b40e32d265d341da1cf723c1af36f3ea53e7e1))
240 | * add metatags in App Router for page migrated from Pages Router ([ce8c277](https://github.com/ixartz/Next-js-Boilerplate/commit/ce8c2770c41abcc3c866d7320de6ef4d8a541715))
241 | * add support i18n for authMiddleware ([8651d36](https://github.com/ixartz/Next-js-Boilerplate/commit/8651d36279512b0f5e008341916110a8ee6f167a))
242 | * add tests for page in App Router ([6a722a1](https://github.com/ixartz/Next-js-Boilerplate/commit/6a722a1fec7a236973f794edc6583a245ebb4747))
243 | * convert all hard coded text and translate in french ([0c3b1b2](https://github.com/ixartz/Next-js-Boilerplate/commit/0c3b1b2f9a8ae5c0d34cb6f3a227a907aca00342))
244 | * i18n for page metatag ([5e7676d](https://github.com/ixartz/Next-js-Boilerplate/commit/5e7676de0d58238de1d46e662c3c8e6e00bd2c5b))
245 | * link in BaseTemplate replaced margin with gap ([28b6ff2](https://github.com/ixartz/Next-js-Boilerplate/commit/28b6ff24577b5d4338a7da068e06070c7f50f195))
246 | * migreate the index page from Page Rotuer to App Router ([fd3e82c](https://github.com/ixartz/Next-js-Boilerplate/commit/fd3e82c2ff837951277a8300fd95f15294b9290a))
247 | * move messages folder to locales ([305e385](https://github.com/ixartz/Next-js-Boilerplate/commit/305e38504939008ecfbbd3bfb6deaf052e57eae7))
248 | * remove Page router and migrate about page to App Router ([3965cbf](https://github.com/ixartz/Next-js-Boilerplate/commit/3965cbf89a67a64272b895809a31791ccf383b57))
249 | * translate text in dashboard layout ([8119f1d](https://github.com/ixartz/Next-js-Boilerplate/commit/8119f1db63853f83710a6cc1f3135b45bc209809))
250 |
251 |
252 | ### Reverts
253 |
254 | * add back NEXT_PUBLIC_CLERK_SIGN_IN_URL in the previous location ([16ae2ef](https://github.com/ixartz/Next-js-Boilerplate/commit/16ae2ef3a7b2800a3ac4d847bb7afa70743ee805))
255 | * add back style for a tag link ([c12a7bd](https://github.com/ixartz/Next-js-Boilerplate/commit/c12a7bd400c875a115eefe2a9921db9e36bf644d))
256 | * use percy/cli 1.27.4 instead of 1.27.5, impossible to upload snapshort with 1.27.5 ([73f8a0b](https://github.com/ixartz/Next-js-Boilerplate/commit/73f8a0b0e9c69f83e5c5a2b51f52159fcc43c654))
257 |
258 | # [3.28.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.27.0...v3.28.0) (2023-11-22)
259 |
260 |
261 | ### Features
262 |
263 | * rename custom SignOutButton to LogOutButton to avoid confusion with Clerk SignOutButton ([183301b](https://github.com/ixartz/Next-js-Boilerplate/commit/183301b5e87bfa4479727c295e83b45b923454a0))
264 | * use custom SignOutButton to apply custom CSS styles, unified with other nav links ([35094bf](https://github.com/ixartz/Next-js-Boilerplate/commit/35094bf038f0eae6e7e2d77238840c97cc7adabe))
265 |
266 | # [3.27.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.26.0...v3.27.0) (2023-11-20)
267 |
268 |
269 | ### Features
270 |
271 | * add PRODUCTION_URL environment variable and throw error when targetURL doesn't exist ([8134dee](https://github.com/ixartz/Next-js-Boilerplate/commit/8134dee84205e297020851bad4c81cf3906e7dfe))
272 | * unified e2e tests for Checkly and playwright ([afa53f5](https://github.com/ixartz/Next-js-Boilerplate/commit/afa53f56b51f9a537131ceb046f90ea59c17dd71))
273 | * use target URl instead of baseURL for checkly ([4fd61ed](https://github.com/ixartz/Next-js-Boilerplate/commit/4fd61edc77e1ef0d457cb829a89545f7dab47210))
274 |
275 | # [3.26.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.25.0...v3.26.0) (2023-11-15)
276 |
277 |
278 | ### Features
279 |
280 | * add a new GitHub Actions file for Checkly ([2109b1c](https://github.com/ixartz/Next-js-Boilerplate/commit/2109b1c75359a9ce89c2c0773fd65e78e1439403))
281 | * add aria-label to fix jsx-a11y/control-has-associated-label error ([47e4ff4](https://github.com/ixartz/Next-js-Boilerplate/commit/47e4ff4f811b4e2071b9ba31f5c0ad1367b0caba))
282 | * add email alert channel for checkly ([d1a4380](https://github.com/ixartz/Next-js-Boilerplate/commit/d1a43801d64fa261bdb252cf83dc289742f37294))
283 | * add email channel in Checkly configuration to send emails when failing ([2019591](https://github.com/ixartz/Next-js-Boilerplate/commit/20195919d8a07f4e3cc0b7884e7d972de2935a94))
284 | * create checkly config with a random working test ([32255b0](https://github.com/ixartz/Next-js-Boilerplate/commit/32255b0770ec5be84e9fd3321154329c556aedee))
285 | * remove eslint rule customization in VSCode and use min(1) instead of nonempty (deprecated) ([9982a2d](https://github.com/ixartz/Next-js-Boilerplate/commit/9982a2d94fe7854eefaa754e9f41cf4735a81c86))
286 | * update package-lock.json to fix CI ([1fff7ef](https://github.com/ixartz/Next-js-Boilerplate/commit/1fff7efe7295a9ee750b9f05af1a670db7bda733))
287 |
288 | # [3.25.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.24.0...v3.25.0) (2023-10-30)
289 |
290 |
291 | ### Features
292 |
293 | * release a new version for Next.js 14 and update README file ([4be2485](https://github.com/ixartz/Next-js-Boilerplate/commit/4be24850b75b9ca896e9e5546b8357745b128398))
294 |
295 | # [3.24.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.23.0...v3.24.0) (2023-10-24)
296 |
297 |
298 | ### Features
299 |
300 | * make guestbook endpoint avaiable to signed out users ([10b4d81](https://github.com/ixartz/Next-js-Boilerplate/commit/10b4d814d477e3475569537b1ef01a86b68c9a43))
301 |
302 | # [3.23.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.22.0...v3.23.0) (2023-10-12)
303 |
304 |
305 | ### Features
306 |
307 | * add playwright extension in VSCode ([956d1a8](https://github.com/ixartz/Next-js-Boilerplate/commit/956d1a8ec70c6a1214c72a115f0378507aa1b436))
308 | * add playwright plugin in ESLint ([b2486f1](https://github.com/ixartz/Next-js-Boilerplate/commit/b2486f1b1090c458115b873ddc5bffa8ecaf8412))
309 | * add Playwright: config, first test and dependency ([f054ea2](https://github.com/ixartz/Next-js-Boilerplate/commit/f054ea264bab3376ab7f86b0a0fdc1b6a4e98350))
310 | * remove all Cypress related files and configurations ([9fe8271](https://github.com/ixartz/Next-js-Boilerplate/commit/9fe8271e667b819910702803f5489e99766fe9ff))
311 |
312 |
313 | ### Reverts
314 |
315 | * the failing test in Navigation spec ([28996f5](https://github.com/ixartz/Next-js-Boilerplate/commit/28996f59d2f02562761609348000d55776365f7e))
316 |
317 | # [3.22.0](https://github.com/ixartz/Next-js-Boilerplate/compare/v3.21.0...v3.22.0) (2023-10-02)
318 |
319 |
320 | ### Features
321 |
322 | * remove basePath in Next.js configuration ([7f9a0e6](https://github.com/ixartz/Next-js-Boilerplate/commit/7f9a0e6ed42aec7d9ec500531b7f519dc11a5ec9))
323 | * remove no-img-element and use Next.js built-in
4 |
5 |
6 |
7 | 🚀 Boilerplate and Starter for Next.js with App Router support, Tailwind CSS, and TypeScript ⚡️ Prioritizing developer experience first: Next.js, TypeScript, ESLint, Prettier, Husky, Lint-Staged, Jest (replaced by Vitest), Testing Library, Commitlint, VSCode, PostCSS, Tailwind CSS, Authentication with [Clerk](https://clerk.com?utm_source=github&utm_medium=sponsorship&utm_campaign=nextjs-boilerplate), Database with DrizzleORM (SQLite, PostgreSQL, and MySQL) and [Turso](https://turso.tech/?utm_source=nextjsstarterbp), Error Monitoring with [Sentry](https://sentry.io/for/nextjs/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo), Logging with Pino.js and Log Management, Monitoring as Code, Storybook, Multi-language (i18n), and more. Ready for Next.js 15.
8 |
9 | Clone this project and use it to create your own [Next.js](https://nextjs.org) project. You can check a [Next js templates demo](https://creativedesignsguru.com/demo/Nextjs-Boilerplate/).
10 |
11 | ## Sponsors
12 |
13 |
31 | Follow{' '}
32 |
37 | @Ixartz on Twitter
38 | {' '}
39 | for updates and more information about the boilerplate.
40 |
41 |
42 | Our sponsors' exceptional support has made this project possible.
43 | Their services integrate seamlessly with the boilerplate, and we
44 | recommend trying them out.
45 |
46 |
Sponsors
47 |
48 |
49 | Boilerplate Code for Your Next.js Project with Tailwind CSS
50 |
51 |
52 |
53 | 🚀
54 | {' '}
55 | Next.js Boilerplate is a developer-friendly starter code for Next.js
56 | projects, built with Tailwind CSS, and TypeScript.{' '}
57 |
58 | ⚡️
59 | {' '}
60 | Made with developer experience first: Next.js, TypeScript, ESLint,
61 | Prettier, Husky, Lint-Staged, Jest (replaced by Vitest), Testing
62 | Library, Commitlint, VSCode, PostCSS, Tailwind CSS, Authentication with{' '}
63 |
68 | Clerk
69 |
70 | , Database with DrizzleORM (SQLite, PostgreSQL, and MySQL) and{' '}
71 |
76 | Turso
77 |
78 | , Error Monitoring with{' '}
79 |
84 | Sentry
85 |
86 | , Logging with Pino.js and Log Management with{' '}
87 |
92 | Better Stack
93 |
94 | , Monitoring as Code with Checkly, Storybook, Multi-language (i18n), and
95 | more.
96 |