Zlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i
zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7
zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG
z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S
zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr
z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S
zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er
zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa
zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc-
zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V
zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I
zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc
z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E(
zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef
LrJugUA?W`A8`#=m
literal 0
HcmV?d00001
diff --git a/src/app/globals.css b/src/app/globals.css
new file mode 100644
index 0000000..b5c61c9
--- /dev/null
+++ b/src/app/globals.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
new file mode 100644
index 0000000..89f4c4e
--- /dev/null
+++ b/src/app/layout.tsx
@@ -0,0 +1,24 @@
+import "./globals.css";
+import { Inter } from "next/font/google";
+import { ReactQueryClientProvider } from "@/utils/react-query";
+
+const inter = Inter({ subsets: ["latin"] });
+
+export const metadata = {
+ title: "Create Next App",
+ description: "Generated by create next app",
+};
+
+type LayoutProps = {
+ children: React.ReactNode;
+};
+
+export default function RootLayout({ children }: LayoutProps) {
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx
new file mode 100644
index 0000000..0df7a54
--- /dev/null
+++ b/src/app/not-found.tsx
@@ -0,0 +1,5 @@
+const NotFound = () => {
+ return 404 Page Not Found ;
+};
+
+export default NotFound;
diff --git a/src/app/page.tsx b/src/app/page.tsx
new file mode 100644
index 0000000..db7393c
--- /dev/null
+++ b/src/app/page.tsx
@@ -0,0 +1,9 @@
+const Home = () => {
+ return (
+
+ Hello World
+
+ );
+};
+
+export default Home;
diff --git a/src/utils/error.ts b/src/utils/error.ts
new file mode 100644
index 0000000..adcd6e7
--- /dev/null
+++ b/src/utils/error.ts
@@ -0,0 +1,12 @@
+class Fault extends Error {
+ name: string;
+ code: number;
+
+ constructor(code: number, name: string, message: string) {
+ super(message);
+ this.name = name;
+ this.code = code;
+ }
+}
+
+export default Fault;
diff --git a/src/utils/react-query.tsx b/src/utils/react-query.tsx
new file mode 100644
index 0000000..f77ccb4
--- /dev/null
+++ b/src/utils/react-query.tsx
@@ -0,0 +1,17 @@
+"use client";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+
+const client = new QueryClient({
+ defaultOptions: {
+ queries: {
+ staleTime: 60000,
+ gcTime: 10 * 60 * 1000,
+ },
+ },
+});
+
+export const ReactQueryClientProvider = ({
+ children,
+}: {
+ children: React.ReactNode;
+}) => {children};
diff --git a/tailwind.config.ts b/tailwind.config.ts
new file mode 100644
index 0000000..de550dd
--- /dev/null
+++ b/tailwind.config.ts
@@ -0,0 +1,8 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: ["./src/**/*.{ts,tsx}"],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+};
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..b602a2d
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./src/*"],
+ "@/public/*": ["./public/*"]
+ },
+ "incremental": true
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
|