https://postcode.map.daum.net/guide Daum ์ฐํธ๋ฒํธ ์๋น์ค ์ฐํธ๋ฒํธ ๊ฒ์๊ณผ ๋๋ก๋ช
์ฃผ์ ์
๋ ฅ ๊ธฐ๋ฅ์ ๋๋ฌด ๊ฐ๋จํ๊ฒ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ. Daum ์ฐํธ๋ฒํธ ์๋น์ค๋ฅผ ์ด์ฉํด๋ณด์ธ์. ์ด๋ ์ฌ์ดํธ์์๋ ๋ฌด๋ฃ๋ก ์ ์ฝ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ต๋๋ค. postcode.map.daum.net ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ ์ค, ์ฃผ์๋ฅผ ์ง์ ์
๋ ฅํ์ง ์๊ณ ๊ฒ์ ์๋น์ค๋ฅผ ๋ฃ๊ธฐ ์ํด ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋์ค, ๋๋ก๋ช
์ฃผ์ api๋ ์กฐ๊ธ ๋ณต์ก..ํ๋ค ์๊ฐํ๋ ์ค ๋ค์์ฃผ์ ๊ฒ์ api๋ฅผ ์๊ฒ๋จ! ์ด๊ฑด ์ง์ง ํธํ๋ฐ... ์ผ๋จ ๋ค์์์ ์ ๊ณตํ๋ api๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ์ค์น๋ถํฐ ํด๋ณด์ npm install react-daum-postcode ์ด๊ฒ๋ง ํ๋ฉด ์ด์ ์ง์ง ๋๋ฌ์!!! ๋๋ ํ์๊ฐ์
ํ์ด์ง์์ ๊ณตํต์ผ๋ก ์ฐ๋ ๋ฒํผ์ ์ด..
์ ์ฒด ๊ธ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋ํ ๋ธ๋ก๊ทธ :)https://fonts.google.com/?subset=korean¬o.script=Kore Browse Fonts - Google Fonts Making the web more beautiful, fast, and open through great typography fonts.google.com ๊ตฌ๊ธํฐํธ ๊ท์ฌ์ด ๊ฑฐ ์ฌ์ฉํ๋ ค๊ณ ์ฐพ์๋ด ์ํ๋ ํฐํธ get ๋ฒํผ ๋๋ฅด๊ณ global.css (ํน์ ์ ์ญ css) ์ @import ๋ฅผ ์ถ๊ฐํ๋ค @import url("https://fonts.googleapis.com/css2?family=Jura:wght@300..700&display=swap"); tailwind.config.ts import type { Config } from "tailwindc..
๊ธฐ๋ณธ ํ
๋๋ฆฌ๋ ๊ฒ์ ์์ด๊ณ , ์ฃผ๋ณ์์์ด๋ ๋ง์ถฐ์ ๋ณด์ด๊ฒ ํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํด์ผ๋ ์ง ์ฐพ์๋ณธ ๊น์ ๋ฉ๋ชจ focus:ring-2 focus:ring-inset focus:ring-#์ฌ๊ธฐ์์์ focus:outline-none ์ด๊ฑฐ ์ถ๊ฐํด์ฃผ๋ฉด ๋จ focus ์์ ring ์ถ๊ฐํ๊ณ , ์ ์ชฝ์ผ๋ก ์ถ๊ฐํ๊ณ ๊ทธ๋ ๊ฒ ๊น์ง๋ง ํ๋ฉด outline ๊ฒ์ ์์ด ๊ทธ๋๋ก ๋ณด์ด๊ธฐ ๋๋ฌธ์ none ์ฒ๋ฆฌ
ํ์์๋ ๋ค๋ฅธ ๋ธ๋์น์์ ์์
ํ git lab์ ์ง์ ๋ค์ด๊ฐ์ create merge~์ด์ฉ๊ณ ๋จ๋ฉด ๊ทธ๊ฑฐ ๋๋ฌ์ merge์์
ํ์๋๋ฐ, (git merge ๋ช
๋ น์ด๊ฐ ์กฐ๊ธ ๋ณต์ก์๋ ต๊ฒ ๋๊ปด์ง๊ณ , ํน์๋ผ๋ mergeํ๋ค ์ถฉ๋๋ ๊น๋ด ใ
ใ
)_ ํ์ง๋ง ์ถฉ๋๋๋ฉฐ ๋ฐฐ์ฐ๋ git..... (์ด๋ผ์ฐ๊ณ ๋งจ๋ ๋ฐ๋ก ๋ฐฑ์
ํด๋์ใ
) ๋ช
๋ น์ด๋ก ํด๋ณด๋ ์ต๊ด์ ๋ค์ด๊ธฐ๋ก ํจ dev๋ผ๋ ๋ธ๋์น์์ ์์
ํ main์ ๋จธ์ง๋ฅผ ํ๋ ค๋ฉด, 1. ์ผ๋จ main๋ธ๋์น๋ก ์ด๋ํ๋ค. git checkout main 2. dev์ ์ฌ๋ผ์์๋ ์์ค๋ฅผ merge ํ๋ค. git merge dev 3. ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฒฉ์ ์ฅ์๋ก pushํ๋ค. git push origin main ๋ง์ผ push ํ๋ค๊ฐ error: failed to push some refs to..
https://chakra-ui.com/community/recipes/floating-labels Chakra UI - A simple, modular and accessible component library that gives you the building blocks you need to build your React a Simple, Modular and Accessible UI Components for your React Applications. Built with Styled System chakra-ui.com ์ด ๋์์ธ์ ๋ก๊ทธ์ธํ๋ฉด์ input์ผ๋ก ๋ฃ๊ณ ์ถ์๋ค. ๊ทธ๋์ ํ๋์ ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด์, ๊ณ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด๋ณด์๋ค. provider.tsx "use client"; i..
Next 13์ด์ ๋ฒ์ ์์ ์ฐจํฌ๋ผ ui ์ฐ๋ ๋ฒ ์ ๋ฆฌ npm i @chakra-ui/react @chakra-ui/next-js @emotion/react @emotion/styled framer-motion app/providers.tsx 'use client' import { ChakraProvider } from '@chakra-ui/react' export function Providers({ children }: { children: React.ReactNode }) { return {children} } client์์ provider๋ฅผ ์์ฑํด์ค๋ค. app/layout.tsx import { Providers } from './providers' export default function Ro..
dev์์ ์์
์ํ๊ณ main์ ๋ณํฉํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๋๋ฐ, ์ฒดํฌ๋ฅผ ์ํ๊ณ ์๊พธ main์์ ์์ ์์
์ ํ๋ค ใ
^^ ๊ทธ๋์ ๊ทธ๋์์ ๊ทธ๋ฅ ๋๊ฐ์ด dev์์๋ ์์
ํ๊ณ ์ปค๋ฐํด์คฌ๋๋ฐ, ์ด๋ฒ์ ๋ด์ญ์ด ์ข ๋ง์์,, ์ผ๋จ ๊ธฐ๋กํด๋์ผ๋ ค๊ณ ํจ ๊ฒ๋ด์ง๋ง๊ณ ๊ทธ๋ฅ git checkout dev git merge main ํด์ฃผ๋ฉด main์ ์๋ ์์ค๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณ , ๋ณ๊ฒฝ์ฌํญ์ด ๋ฌ๋ค. (์ฌ๊ธฐ์ ์ถฉ๋์ด ์์ผ๋ฉด ์ถฉ๋ ์์ ๊น์ง ํด์ค) ์ด์ ์ด ์์ ๋ด์ญ์ด ์์ฌ์ git status๋ฅผ ํด์ฃผ๋ฉด commit๋ด์ญ์ด ์๋ค๊ณ ๋์ด ์ด์ ํธํ๊ฑธ๋ก push ํด์ฃผ๋ฉด ๋จ! ์ ๋ฒํผ ๋๋ฅด๋ฉด ๋์ง๋ง ๋๋ ์์ฆ์ ๋ช
๋ น์ด๋ก๋ง git์ฐ๋ ๊ฑฐ ์ต๊ด๋ค์ด๋ ค๊ณ git push origin dev ํด์ฃผ์๋ค
axios๋ฅผ ์ฌ์ฉํ ๋, ์ข
์ข
Axios ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ํน์ ์ค์ ์ ์ง์ ํ๊ฑฐ๋ ๊ธฐ๋ณธ ์ค์ ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ ๊ฒ ์์ฑ๋ Axios ์ธ์คํด์ค๋ ํ๋ก์ ํธ ๋ด์์ ์ฌ๋ฌ ์์ฒญ์์ ๋์ผํ ์ค์ ์ ๊ณต์ ํ ์ ์์ด ํธ๋ฆฌํ๋ค ์๋ฅผ ๋ค์ด, instance.ts import axios, { AxiosInstance } from 'axios'; // Axios ์ธ์คํด์ค ์์ฑ const myAxiosInstance: AxiosInstance = axios.create({ baseURL: 'https://api.example.com', timeout: 5000, // ์์ฒญ ํ์์์ ์ค์ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ..
๊ตฌ๊ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ์ฌ์ดํธ sns ๋ก๊ทธ์ธ์ ๊ตฌํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ผ๋จ ํ๋ฆ๋๋ ์นด์นด์ค ๊ตฌํ๊ณผ ๊ฐ๋ค.๊ณ์ ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ฌ์ฉ์ ์ ๋ณด๊ฐ ์๋ค๋ ๋ฉ์์ง๋ฅผ ๋์ ๊ด๋ฆฌ์๊ฐ ๋ฐ๋ก ๋ฑ๋กํด์ผ๋ง ํ๋ ํ๋ฆ์ด๋ค. (https://moon-lilac.tistory.com/183) Next.js | ์นด์นด์ค ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ๊ธฐ์กด์ ํ์ด์ง์ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค.๊ทธ๋์ ์ด๋ฏธ ์๋ ์ฌ์ฉ์์ ์๋ก ๋ก๊ทธ์ธํ ์ฌ์ฉ์์์ ๋งค์นญ๊ธฐ๋ฅ์ด ํ์ํ๋ค.๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์
์ด ํ์ํ ์ฌ์ดํธ๊ฐ ์๋๋ผ, ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ์moon-lilac.tistory.com + ์ถ๊ฐ์ฌํญ ๐ก๊ธฐ์กด์์ ์ถ๊ฐ๋๊ฒ ์๋ค๋ฉด ์ฌ์ฉ์ ์ ๋ณด(์ด๋ฆ, ์ ํ๋ฒํธ)๋ฅผ ์
๋ ฅํ๋ ํ์ด์ง๋ฅผ ๋์ฐ๊ธฐ ์ ์์ธ๊ฐ์ฝ๋์ sns ์ฝ๋๋ง ๋ณด๋ด๋ api๋ฅผ ๋ฐ๋ก ํ์ ๊ธฐ์กด์ ๋ก๊ทธ์ธํ๋ ์ ์ (snsi..
๊ธฐ๋ฅ ๋ฐ ํ๋ก์ฐ๋ ์๋์ ๊ฐ๋ค. ๊ฐ์ ํ์ด์ง์ ์ถ๊ฐ๋ก ๊ตฌํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ! https://moon-lilac.tistory.com/183 Next.js | ์นด์นด์ค ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ ๊ธฐ์กด์ ํ์ด์ง์ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค.๊ทธ๋์ ์ด๋ฏธ ์๋ ์ฌ์ฉ์์ ์๋ก ๋ก๊ทธ์ธํ ์ฌ์ฉ์์์ ๋งค์นญ๊ธฐ๋ฅ์ด ํ์ํ๋ค.๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์
์ด ํ์ํ ์ฌ์ดํธ๊ฐ ์๋๋ผ, ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ์ moon-lilac.tistory.com 1. ๊ตฌ๊ธ ํด๋ผ์ฐ๋์์ ํ๋ก์ ํธ ์์ฑ ๋ง๋ค๊ธฐ ํ API ๋ฐ ์๋น์ค์์ OAuth ๋์ ํ๋ฉด ๋๋ฌ์ฃผ๊ณ , ๋ด๋ถ๋ง๊ณ ์ธ๋ถ ์ ํํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ ํ์๊ฐ์ธ ์ฑ ์ด๋ฆ, ์ฌ์ฉ์ ์ง์ ์ด๋ฉ์ผ, ๊ฐ๋ฐ์ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์
๋ ฅํ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ค. ๊ณ์ ์ ์ฅํ ๊ณ์ ๋๋ฅด๋ค๊ฐ ์์ฝํ๋ฉด ๋์ค๋ฉด ๋์๋ณด๋๋ก ๋์๊ฐ๊ธฐ๋ฅผ ๋๋ฌ..
๊ฐ์ ํ๋ฉด๊ตฌ์ฑ์ ๊ฐ์ API์ธ ์์ ์ด์ด์ ํ์ด์ง๋ฅผ ๋ฐ๋ก ๋ง๋ค ํ์๊ฐ ์์ด์ ๋ชจ๋ SNS ๋ก๊ทธ์ธ์ Oauth.tsxํ์ผ๋ก ํ๊ธฐ๋ก ํ๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ sns๋ณ๋ก ์ฝ๋๋ฅผ ์๋ฒ๋จ์ผ๋ก ๋ณด๋ด์ค์ผ๋๋๋ฐ, ์ด๋ ๋ผ์ฐํธ๋ฅผ ์ด์ฉํด์ ๋ด์์ ๋ณด๋ด์ค ๊ทผ๋ฐ Redirect URI๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ ์กฐ๊ธ ๋ฌ๋ผ์ ๊ฒธ์ฌ๊ฒธ์ฌ ๊ธฐ๋กํด๋๋๋ค [] ๋๊ดํธ๋ฅผ ์ฌ์ฉํด์ ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ oauth.ts ํ์ผ์ ๋ง๋ฆ (next13์ดํ ๋ถํฐ๋ oauthํด๋์ page.tsxํ์ผ๋ก) oauth.tsํ์ผ์ ์ปดํฌ๋ํธ ํ์ด์ง๋ก ๋ฐ๋ก ์ด๋๋๋ค. ๊ธฐ์กด์ NEXT_PUBLIC_OAUTH_REDIRECT๋ http://localhost:3000/login/oauth์ธ๋ฐ, ๋ค์oauth๋ฅผ ๋นผ์ฃผ๊ณ redirect URI๋ฅผ ์ฌ์ค์ ํด์คฌ๋ค WebLogin.tsx con..
๊ธฐ์กด์ ํ์ด์ง์ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค.๊ทธ๋์ ์ด๋ฏธ ์๋ ์ฌ์ฉ์์ ์๋ก ๋ก๊ทธ์ธํ ์ฌ์ฉ์์์ ๋งค์นญ๊ธฐ๋ฅ์ด ํ์ํ๋ค.๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์
์ด ํ์ํ ์ฌ์ดํธ๊ฐ ์๋๋ผ, ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ์์ ๋ณด๋ฅผ ๋ฑ๋กํ๋ ํ์์ด๋ผ ๋ง์ผ ์ ๋ณด๊ฐ ์์ผ๋ฉด ํ๊ฒจ๋์์ ๊ด๋ฆฌ์ ๋ฌธ์๋ฅผ ๋ฐ๋ก ํด์ผํ๋ค. ๊ทธ๋ฌ๋ ๋ก๊ทธ์ธ๊ธฐ๋ฅ๋ง ์์ผ๋ฉด ๋จ! ๐ํ๋ฆ๋ ๊ทธ๋ฆผ์์๋ ๋ณด๋ค์ํผ ์ฌ์ค ํ๋ก ํธ์์ ํฌ๊ฒ ํ ์ผ์ ์๋ค..์ผ๋จ kakao ๋ก๊ทธ์ธ์ ์ด์ฉํ๊ธฐ ์ํด ์ธํ
๋ถํฐ! 1. Kakao Developers ์์ ์ ํ๋ฆฌ์ผ์ด์
์์ฑkakao developers ์์ ์นด์นด์ค ๋ก๊ทธ์ธํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ค.๊ทธ๋ฌ๋ฉด ์๋์ฒ๋ผ api key๊ฐ์ ์ป์ ์ ์๋๋ฐ ์ฌ๊ธฐ์ javascript ํค๊ฐ์ ์ฌ์ฉํ ๊ฒ์ ๊ทธ๋ฆฌ๊ณ ํ๋ซํผ > Web ํ๋ซํผ ๋ฑ๋ก์ ํด์ ์ฌ์ดํธ ๋๋ฉ์ธ์..