Skip to content

kss2002/SCamp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

S.Camp (์Šค์บ ํ”„)

AI ๊ธฐ๋ฐ˜ ์‚ฌ๊ธฐ ํƒ์ง€ ๋ฐ ์˜ˆ๋ฐฉ ํ”Œ๋žซํผ
์‹ค์‹œ๊ฐ„ ์‚ฌ๊ธฐ ๋ถ„์„๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜ ์‚ฌ๋ก€ ๊ณต์œ ๋กœ ๋” ์•ˆ์ „ํ•œ ๋””์ง€ํ„ธ ํ™˜๊ฒฝ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

React Vite License

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

S.Camp๋Š” AI ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ ํ”ผ์‹ฑ, ์Šค๋ฏธ์‹ฑ, ๋ณด์ด์Šคํ”ผ์‹ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฌ๊ธฐ ์œ ํ˜•์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํƒ์ง€ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์‚ฌ๊ธฐ ์ˆ˜๋ฒ•๊ณผ ์˜ˆ๋ฐฉ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์™œ S.Camp์ธ๊ฐ€?

  • ๐Ÿšจ ์‹ค์‹œ๊ฐ„ AI ๋ถ„์„: ์˜์‹ฌ์Šค๋Ÿฌ์šด URL์ด๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฆ‰์‹œ ๋ถ„์„
  • ๐Ÿ“ฐ ์ตœ์‹  ๋‰ด์Šค: ๊ธˆ์œต ์‚ฌ๊ธฐ ๊ด€๋ จ ์ตœ์‹  ๋‰ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘
  • ๐Ÿ’ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ: ์‹ค์ œ ์‚ฌ๊ธฐ ์‚ฌ๋ก€์™€ ์˜ˆ๋ฐฉ ์ˆ˜์น™์„ ๊ณต์œ 
  • ๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ์ตœ์ ํ™”: ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

1. AI ์‚ฌ๊ธฐ ํƒ์ง€๊ธฐ

  • ์ž…๋ ฅํ•œ URL ๋˜๋Š” ๋ฉ”์‹œ์ง€์˜ ์‚ฌ๊ธฐ ์œ„ํ—˜๋„๋ฅผ 0-100์ ์œผ๋กœ ๋ถ„์„
  • ์œ„ํ—˜๋„์— ๋”ฐ๋ฅธ 5๋‹จ๊ณ„๋กœ ๊ตฌ๋ณ„๋˜๊ณ , ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ฅธ ๋ฉ˜ํŠธ๋ฅผ ์ œ๊ณต
  • ๋ถ„์„ ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ๊ด€๋ จ ์‚ฌ๋ก€ ์ œ๊ณต

2. ์‹ค์‹œ๊ฐ„ ์‚ฌ๊ธฐ ๋‰ด์Šค

  • ๊ธˆ์œต ์‚ฌ๊ธฐ ๊ด€๋ จ ์ตœ์‹  ๋‰ด์Šค ์ž๋™ ์ˆ˜์ง‘
  • ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ด๋ชจ์ง€ ์ž๋™ ๋งค์นญ
  • ์™ธ๋ถ€ ๋‰ด์Šค ์‚ฌ์ดํŠธ๋กœ ๋ฐ”๋กœ ์—ฐ๊ฒฐ

3. ์‚ฌ๊ธฐ ์‚ฌ๋ก€ ๊ฒŒ์‹œํŒ

  • ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ•„ํ„ฐ๋ง (๊ณต์ง€์‚ฌํ•ญ/์˜ˆ๋ฐฉ์ˆ˜์น™/์‚ฌ๋ก€๊ณต์œ )
  • ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ ์กฐํšŒ ๋ฐ ๊ณต์œ  ๊ธฐ๋Šฅ
  • ์กฐํšŒ์ˆ˜ ์ถ”์  ๋ฐ ์ตœ์‹ ์ˆœ์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

Frontend

  • React 19.1.1 - UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • React Router DOM 7.9.5 - ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…
  • Vite 7.1.14 - ๋นŒ๋“œ ๋„๊ตฌ ๋ฐ ๊ฐœ๋ฐœ ์„œ๋ฒ„
  • Axios 1.13.1 - HTTP ํด๋ผ์ด์–ธํŠธ

Styling

  • Vanilla CSS - ์ปค์Šคํ…€ CSS (CSS ๋ชจ๋“ˆ ํŒจํ„ด)
  • lucide-react - ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Development Tools

  • Yarn - ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18.0 ์ด์ƒ
  • Yarn 1.22 ์ด์ƒ

์„ค์น˜ ๋ฐ ์‹คํ–‰

  1. ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/kss2002/ganzi.git
cd ganzi
  1. ์˜์กด์„ฑ ์„ค์น˜
yarn install
  1. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
yarn dev
  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธ
http://localhost:5173

๋นŒ๋“œ

ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด:

yarn build

๋นŒ๋“œ๋œ ํŒŒ์ผ์€ dist/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ฆฌ๋ทฐ

๋นŒ๋“œ๋œ ํ”„๋กœ๋•์…˜ ํŒŒ์ผ์„ ๋กœ์ปฌ์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ:

yarn preview

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

src/
โ”œโ”€โ”€ pages/              # ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ main/          # ๋ฉ”์ธ ํ™ˆ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ ai/            # AI ํƒ์ง€๊ธฐ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ board/         # ๊ฒŒ์‹œํŒ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ news/          # ๋‰ด์Šค ํŽ˜์ด์ง€
โ”‚   โ””โ”€โ”€ not/           # 404 ํŽ˜์ด์ง€
โ”œโ”€โ”€ components/         # ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ board/         # ๊ฒŒ์‹œํŒ ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ””โ”€โ”€ news/          # ๋‰ด์Šค ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ
โ”œโ”€โ”€ layout/            # ๋ ˆ์ด์•„์›ƒ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ Layout.jsx     # ๋ฉ”์ธ ๋ ˆ์ด์•„์›ƒ
โ”‚   โ””โ”€โ”€ Header.jsx     # ๊ณตํ†ต ํ—ค๋”
โ”œโ”€โ”€ hooks/             # ์ปค์Šคํ…€ ํ›…
โ”‚   โ”œโ”€โ”€ useAiAnalysis.js
โ”‚   โ””โ”€โ”€ useScrollTop.js
โ”œโ”€โ”€ api/               # API ํด๋ผ์ด์–ธํŠธ
โ”‚   โ”œโ”€โ”€ apiClient.js   # Axios ์ธ์Šคํ„ด์Šค
โ”‚   โ”œโ”€โ”€ newsApi.js     # ๋‰ด์Šค API
โ”‚   โ”œโ”€โ”€ postApi.js     # ๊ฒŒ์‹œ๊ธ€ API
โ”‚   โ”œโ”€โ”€ analyzeApi.js  # AI ๋ถ„์„ API
โ”‚   โ””โ”€โ”€ index.js       # API ํ†ตํ•ฉ export
โ”œโ”€โ”€ animation/         # ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ด€๋ จ
โ”‚   โ”œโ”€โ”€ FadeInSection.jsx
โ”‚   โ””โ”€โ”€ useFadeInAnimation.jsx
โ”œโ”€โ”€ route/             # ๋ผ์šฐํŒ… ์„ค์ •
โ”‚   โ””โ”€โ”€ routeConfig.jsx
โ”œโ”€โ”€ utils/             # ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜
โ”‚   โ””โ”€โ”€ errorHandler.js
โ”œโ”€โ”€ App.jsx            # ์•ฑ ๋ฃจํŠธ ์ปดํฌ๋„ŒํŠธ
โ”œโ”€โ”€ main.jsx           # ์ง„์ž…์ 
โ””โ”€โ”€ index.css          # ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ

๐Ÿ“ก API ๋ฌธ์„œ

Base URL

Production: https://api.inwoo.store
Development: http://localhost:5173/api (Vite Proxy)

์ฃผ์š” ์—”๋“œํฌ์ธํŠธ

1. AI ๋ถ„์„

POST /api/analyze
Content-Type: application/json

{
  "text": "๋ถ„์„ํ•  URL ๋˜๋Š” ๋ฉ”์‹œ์ง€"
}

Response:
{
  "score": 85,
  "analysis": "๋ถ„์„ ๊ฒฐ๊ณผ ์ƒ์„ธ ์„ค๋ช…"
}

2. ๋‰ด์Šค ์กฐํšŒ

GET /api/news

Response:
{
  "items": [
    {
      "title": "๋‰ด์Šค ์ œ๋ชฉ",
      "description": "๋‰ด์Šค ์š”์•ฝ",
      "link": "๋‰ด์Šค ๋งํฌ",
      "pubDate": "๋ฐœํ–‰์ผ"
    }
  ]
}

3. ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ

GET /api/posts                          # ์ „์ฒด ๊ฒŒ์‹œ๊ธ€
GET /api/posts/{id}                     # ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ
GET /api/posts/category/{category}      # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์กฐํšŒ

Response:
{
  "id": 1,
  "title": "์ œ๋ชฉ",
  "content": "๋‚ด์šฉ",
  "category": "NOTICE",
  "authorName": "์ž‘์„ฑ์ž",
  "displayDate": "2025.11.03",
  "viewCount": 123
}

์ž์„ธํ•œ API ๋ฌธ์„œ๋Š” Swagger์—์„œ ํ™•์ธํ•˜์„ธ์š”.

๐ŸŒ ๋ฐฐํฌ

  • Vercel ๋ฐฐํฌ

๐ŸŽจ ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

CSS ๊ทœ์น™

  • ๋„ค์ด๋ฐ: BEM ๊ทœ์น™ ์ ์šฉ (.block__element--modifier)
  • ์ปฌ๋Ÿฌ: CSS ๋ณ€์ˆ˜ ์‚ฌ์šฉ (--primary-color, --text-color)
  • ๋ฐ˜์‘ํ˜•: ๋ชจ๋ฐ”์ผ๊นŒ์ง€ ๊ณ ๋ ค

React ๊ทœ์น™

  • ์ปดํฌ๋„ŒํŠธ: ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ
  • ์ƒํƒœ ๊ด€๋ฆฌ: useState, useEffect ๋“ฑ React Hooks ํ™œ์šฉ
  • Props: ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‚ฌ์šฉ
  • ํŒŒ์ผ๋ช…: PascalCase (์˜ˆ: BoardItem.jsx)

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

https://github.com/kss2002/SCamp/blob/main/CONTRIBUTING.md

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ‘ฅ ํŒ€

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์ด ์žˆ์œผ์‹œ๋ฉด Issues๋ฅผ ํ†ตํ•ด ์•Œ๋ ค์ฃผ์„ธ์š”.

Made with โค๏ธ by S.Camp Team

https://s-camp.vercel.app

About

[S.Camp]: Fraud Prevention and Detection Platform / Ganjiton Project

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •