Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const compat = new FlatCompat({
});

const eslintConfig = [
{ ignores: ['next-env.d.ts', '.next/**'] },
...compat.extends('next/core-web-vitals', 'next/typescript'),
];

Expand Down
6 changes: 6 additions & 0 deletions next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference path="./.next/types/routes.d.ts" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
15 changes: 15 additions & 0 deletions src/app/error.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
'use client';

export default function Error({
reset,
}: {
error: Error & { digest?: string };
reset: () => void;
}) {
return (
<main>
<h2>오류가 발생했습니다.</h2>
<button onClick={reset}>다시 시도</button>
</main>
);
}
1 change: 1 addition & 0 deletions src/app/globals.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@use '../styles/main';
19 changes: 19 additions & 0 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { Metadata } from 'next';
import './globals.scss';

export const metadata: Metadata = {
title: 'TALKY-OWL',
description: 'AI 갈등 조정 판결 서비스',
};

export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="ko">
<body>{children}</body>
</html>
);
}
7 changes: 7 additions & 0 deletions src/app/loading.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export default function Loading() {
return (
<main>
<p>로딩 중...</p>
</main>
);
}
7 changes: 7 additions & 0 deletions src/app/not-found.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export default function NotFound() {
return (
<main>
<h2>404 — 페이지를 찾을 수 없습니다.</h2>
</main>
);
}
8 changes: 8 additions & 0 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export default function RootPage() {
return (
<main>
<h1>TALKY-OWL</h1>
<p>Next.js 초기 세팅 완료</p>
</main>
);
}
17 changes: 17 additions & 0 deletions src/styles/abstracts/_mixins.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Flex center
@mixin flex-center {
display: flex;
align-items: center;
justify-content: center;
}

// Responsive breakpoint (mobile-first)
@mixin respond-to($breakpoint) {
@if $breakpoint == 'sm' {
@media (min-width: 480px) { @content; }
} @else if $breakpoint == 'md' {
@media (min-width: 768px) { @content; }
} @else if $breakpoint == 'lg' {
@media (min-width: 1024px) { @content; }
}
}
10 changes: 10 additions & 0 deletions src/styles/abstracts/_variables.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Color
$color-white: #ffffff;
$color-black: #000000;

// Typography
$font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
$font-size-base: 16px;

// Spacing
$spacing-unit: 8px;
10 changes: 10 additions & 0 deletions src/styles/base/_global.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
@use '../abstracts/variables' as v;

body {
font-family: v.$font-family-base;
font-size: v.$font-size-base;
background-color: v.$color-white;
color: v.$color-black;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
28 changes: 28 additions & 0 deletions src/styles/base/_reset.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}

ul,
ol {
list-style: none;
}

a {
text-decoration: none;
color: inherit;
}

button {
cursor: pointer;
background: none;
border: none;
}

img {
display: block;
max-width: 100%;
}
2 changes: 2 additions & 0 deletions src/styles/layout/_page.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// 페이지 기본 레이아웃
// 상세 스타일은 각 페이지 SCSS Module에서 작성
5 changes: 5 additions & 0 deletions src/styles/main.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@use './abstracts/variables';
@use './abstracts/mixins';
@use './base/reset';
@use './base/global';
@use './layout/page';
1 change: 0 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
Expand Down