+ {t('title')}
+ {t('tagline')}
+
+
+
+
+ {t('disclaimer')}
+
+ );
+}
diff --git a/apps/web/src/i18n.ts b/apps/web/src/i18n.ts
new file mode 100644
index 0000000..ca7d5f9
--- /dev/null
+++ b/apps/web/src/i18n.ts
@@ -0,0 +1,18 @@
+import { notFound } from 'next/navigation';
+import { getRequestConfig } from 'next-intl/server';
+
+export const locales = ['it'] as const;
+export const defaultLocale = 'it' as const;
+
+export type Locale = (typeof locales)[number];
+
+export default getRequestConfig(async ({ locale }) => {
+ if (!locales.includes(locale as Locale)) {
+ notFound();
+ }
+
+ return {
+ locale: locale as Locale,
+ messages: (await import(`../messages/${locale}.json`)).default,
+ };
+});
diff --git a/apps/web/src/middleware.ts b/apps/web/src/middleware.ts
new file mode 100644
index 0000000..5d51b4c
--- /dev/null
+++ b/apps/web/src/middleware.ts
@@ -0,0 +1,13 @@
+import createMiddleware from 'next-intl/middleware';
+
+import { defaultLocale, locales } from './i18n';
+
+export default createMiddleware({
+ locales,
+ defaultLocale,
+ localePrefix: 'as-needed',
+});
+
+export const config = {
+ matcher: ['/((?!api|_next|_vercel|.*\\..*).*)'],
+};
diff --git a/apps/web/src/styles/globals.css b/apps/web/src/styles/globals.css
new file mode 100644
index 0000000..2857b71
--- /dev/null
+++ b/apps/web/src/styles/globals.css
@@ -0,0 +1,9 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+ html {
+ -webkit-text-size-adjust: 100%;
+ }
+}
diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts
new file mode 100644
index 0000000..68d0c5a
--- /dev/null
+++ b/apps/web/tailwind.config.ts
@@ -0,0 +1,15 @@
+import type { Config } from 'tailwindcss';
+
+const config: Config = {
+ content: ['./src/**/*.{ts,tsx}', '../../packages/ui/src/**/*.{ts,tsx}'],
+ theme: {
+ extend: {
+ fontFamily: {
+ sans: ['var(--font-sans)', 'system-ui', 'sans-serif'],
+ },
+ },
+ },
+ plugins: [],
+};
+
+export default config;
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
new file mode 100644
index 0000000..7bef14d
--- /dev/null
+++ b/apps/web/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "@ketopath/tsconfig/nextjs.json",
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "incremental": true,
+ "plugins": [{ "name": "next" }]
+ },
+ "include": ["next-env.d.ts", "src/**/*.ts", "src/**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules", ".next"]
+}
diff --git a/packages/eslint-config/index.cjs b/packages/eslint-config/index.cjs
index e6c0688..1c85694 100644
--- a/packages/eslint-config/index.cjs
+++ b/packages/eslint-config/index.cjs
@@ -18,6 +18,7 @@ module.exports = {
'import/resolver': {
typescript: {
alwaysTryTypes: true,
+ project: ['tsconfig.json', 'apps/*/tsconfig.json', 'packages/*/tsconfig.json'],
},
node: true,
},
@@ -48,18 +49,9 @@ module.exports = {
env: { node: true },
rules: {
'@typescript-eslint/no-var-requires': 'off',
+ '@typescript-eslint/consistent-type-imports': 'off',
},
},
],
- ignorePatterns: [
- 'node_modules/',
- 'dist/',
- 'build/',
- '.next/',
- 'out/',
- 'coverage/',
- '*.config.js',
- '*.config.cjs',
- '*.config.mjs',
- ],
+ ignorePatterns: ['node_modules/', 'dist/', 'build/', '.next/', 'out/', 'coverage/'],
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 885d597..3c085e3 100644
Binary files a/pnpm-lock.yaml and b/pnpm-lock.yaml differ