diff --git a/.env b/.env new file mode 100644 index 0000000..ef451fa --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +NEXT_PUBLIC_TURNSTILE_SITE_KEY= +TURNSTILE_SECRET_KEY= +RESEND_API_KEY= diff --git a/.eslintrc.json b/.eslintrc.json index ecba9dd..01ab3c9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,3 @@ { - "plugins": ["@typescript-eslint"], - "extends": ["next/core-web-vitals", "plugin:@typescript-eslint/recommended", "prettier"], - "rules": { - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-explicit-any": "error" - } + "extends": ["next/core-web-vitals", "next/typescript", "prettier"] } diff --git a/.gitignore b/.gitignore index c87c9b3..9c05668 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz # testing /coverage @@ -23,10 +24,10 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -.pnpm-debug.log* # local env files .env*.local +.dev.vars # vercel .vercel diff --git a/.node-version b/.node-version index 297e3ef..2bd5a0a 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -17.9.0 +22 diff --git a/.vscode/settings.json b/.vscode/settings.json index 5ee5dda..43b2d93 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,4 @@ { - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - }, "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "typescript.tsdk": "node_modules/typescript/lib", diff --git a/assets/logos/prisma.svg b/assets/logos/prisma.svg deleted file mode 100644 index 82ff167..0000000 --- a/assets/logos/prisma.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/logos/sulu.svg b/assets/logos/sulu.svg deleted file mode 100644 index efcb456..0000000 --- a/assets/logos/sulu.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/cloudflare-env.d.ts b/cloudflare-env.d.ts new file mode 100644 index 0000000..2dac3d0 --- /dev/null +++ b/cloudflare-env.d.ts @@ -0,0 +1,2 @@ +interface CloudflareEnv { +} diff --git a/components/organisms/about-me-section.tsx b/components/organisms/about-me-section.tsx deleted file mode 100644 index 38299d0..0000000 --- a/components/organisms/about-me-section.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import Section from '../molecules/section'; - -export default function AboutMeSection() { - return ( -
-

- I'm a web developer and solution architect. -
- Strongly interested in new trends and technologies. -
- Enthusiastic open source contributor. -
- Love to work & travel. -
- Enjoy building business software the most. -
- Passionate skier in the Austrian Alps. -

-
- ); -} diff --git a/components/organisms/contact-section.tsx b/components/organisms/contact-section.tsx deleted file mode 100644 index 7047df7..0000000 --- a/components/organisms/contact-section.tsx +++ /dev/null @@ -1,128 +0,0 @@ -'use client'; - -import { FormEvent, useState } from 'react'; -import Button from '../atoms/button'; -import Input from '../atoms/input'; -import TextArea from '../atoms/textarea'; -import Section from '../molecules/section'; - -enum FormState { - IS_SUBMITTING, - ERROR, - SUCCESS, -} - -export default function ContactSection() { - const [formState, setFormState] = useState(undefined); - - const handleSubmit = async (event: FormEvent) => { - event.preventDefault(); - - const form = event.currentTarget; - setFormState(FormState.IS_SUBMITTING); - - try { - const response = await fetch('/api/contact', { - method: 'POST', - cache: 'no-cache', - body: new FormData(form), - }); - - if (!response.ok) { - setFormState(FormState.ERROR); - return; - } - - setFormState(FormState.SUCCESS); - } catch (e) { - setFormState(FormState.ERROR); - } - }; - - const handleClickTryAgain = () => { - setFormState(undefined); - }; - - return ( -
-
void handleSubmit(event)} - className="mx-auto flex max-w-lg flex-col gap-3 aria-hidden:hidden sm:gap-4" - method="POST" - action="/api/contact" - target="_blank" - aria-hidden={undefined !== formState && FormState.IS_SUBMITTING !== formState} - hidden={undefined !== formState && FormState.IS_SUBMITTING !== formState} - > -
-
- -
- -
- -
-
- - - -