Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1f51834
[FEAT] AI 예측 히스토리 카드 구현
Juyoung03 Feb 8, 2026
4343148
Merge pull request #27 from Co1nsight/feature/6-aihistory
Juyoung03 Feb 8, 2026
29fe796
[MOD] 코인 상세 정보 api 연결
Juyoung03 Feb 8, 2026
0142761
Merge pull request #28 from Co1nsight/feature/5-coininfo
Juyoung03 Feb 8, 2026
74e535a
[MOD] 코인 차트 api 연결
Juyoung03 Feb 9, 2026
20ed3e1
Merge pull request #29 from Co1nsight/feature/8-coinchart
Juyoung03 Feb 9, 2026
2684bc5
[MOD] 리팩터링 및 에러 처리 코드 추가
Juyoung03 Feb 9, 2026
7f229e1
Merge pull request #30 from Co1nsight/feature/8-coinchart
Juyoung03 Feb 9, 2026
910c17a
[FEAT] newsCard UI 구현
Juyoung03 Feb 10, 2026
709c013
Merge pull request #31 from Co1nsight/feature/6-aihistory
Juyoung03 Feb 10, 2026
9296631
[ADD] 코인 로고 추가
Juyoung03 Feb 11, 2026
5a3161e
Merge pull request #32 from Co1nsight/feature/5-coininfo
Juyoung03 Feb 11, 2026
e00cd22
[UI] 메인 페이지 구현
himinji Feb 18, 2026
b649e73
Merge pull request #33 from Co1nsight/feature/1-coinUI
himinji Feb 18, 2026
cd91f2e
[MOD] mock data 교체
himinji Feb 18, 2026
5b25992
[UI] 메인페이지 화면 크기에 따른 스크롤 생성 및 호재/악재 배지 크기 수정
himinji Feb 18, 2026
7c0f74a
Merge pull request #34 from Co1nsight/feature/1-coin
himinji Feb 18, 2026
bbcbfd9
[FEAT] 뉴스 리스트
himinji Feb 19, 2026
7de8006
[MOD] env 수정
himinji Feb 19, 2026
51e4d66
Merge pull request #35 from Co1nsight/feature/4-newslist
himinji Feb 19, 2026
a883c45
[FEAT] 코인별 뉴스 카드 ui 구현
Juyoung03 Feb 19, 2026
4be789a
Merge pull request #36 from Co1nsight/feature/6-aihistory
Juyoung03 Feb 19, 2026
0c3a4ef
[MOD] roundButton 수정
Juyoung03 Feb 19, 2026
1a6338f
Merge pull request #37 from Co1nsight/feature/6-aihistory
Juyoung03 Feb 19, 2026
1cd08c7
[FEAT] 코인 별 뉴스 api 연결
Juyoung03 Feb 19, 2026
d9b8e50
Merge pull request #39 from Co1nsight/feature/38-coin_related_news
Juyoung03 Feb 19, 2026
72c3351
[FEAT] 코인 리스트 클릭 시 상세 페이지 이동 기능 구현
Juyoung03 Feb 20, 2026
74b332e
Merge pull request #40 from Co1nsight/feature/5-coininfo
Juyoung03 Feb 20, 2026
7cd7c5b
[FEAT] ai 예측 히스토리 api 연결 및 데이터 가공
Juyoung03 Feb 24, 2026
984bdf3
Merge pull request #41 from Co1nsight/feature/6-aihistory
Juyoung03 Feb 24, 2026
bc4103f
[MOD] cointable null 처리
himinji Feb 24, 2026
a4163ae
Merge pull request #42 from Co1nsight/feature/1-coinlist
himinji Feb 24, 2026
5e69963
[FEAT] 뉴스 검색 기능 구현
himinji Feb 25, 2026
7b8c2d9
Merge pull request #43 from Co1nsight/feature/4-newssearch
himinji Feb 25, 2026
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
6 changes: 0 additions & 6 deletions .env.example

This file was deleted.

21 changes: 21 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
"globals": "^16.5.0",
"iconify-icon": "^3.0.2",
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The iconify-icon package is added under devDependencies, but it is used at runtime in multiple components (RoundButton, SearchBar, CoinListTable, HistoryCard, etc.) as a web component. Since it is needed in the production bundle, it should be in dependencies instead of devDependencies. While Vite will still bundle it during development, this is semantically incorrect and could cause issues in certain build/deployment pipelines that strip devDependencies.

Copilot uses AI. Check for mistakes.
"vite": "^7.2.4"
}
}
5 changes: 4 additions & 1 deletion src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,23 @@ import CoinDetailPage from './pages/CoinDetailPage';
import NewsDetailPage from './pages/NewsDetailPage';
import GamePage from './pages/GamePage';
import LeaderBoardPage from './pages/LeaderBoardPage';
import SearchResultPage from './pages/SearchResultPage';

function App() {

return (
<BrowserRouter>
<Routes>
<Route path="/" element={<MainPage />} />
<Route path='/coindetail' element={<CoinDetailPage />} />
<Route path='/coindetail/:ticker' element={<CoinDetailPage />} />
<Route path='/newsdetail' element={<NewsDetailPage />} />
<Route path='/game' element={<GamePage />} />
<Route path='/leaderboard' element={<LeaderBoardPage />} />
<Route path='/search' element={<SearchResultPage />} />
</Routes>
</BrowserRouter>
)
}

export default App

23 changes: 23 additions & 0 deletions src/apis/CoinDetail/aihistory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { instance } from "../../utils/axios";

export const getAiPredictions = async (ticker) => {
try {
const res = await instance.get(`/api/v1/crypto/${ticker}/predictions`);
//console.log(res);
return res.data;
} catch (error) {
console.error("코인 예측 히스토리 불러오기 실패: ", error);
throw error;
}
}

export const getPredictionNews = async (ticker, predictionId) => {
try {
const res = await instance.get(`/api/v1/crypto/${ticker}/predictions/${predictionId}/news`);
console.log(res);
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

console.log(res) is left in production code. Other API functions in this PR correctly comment out or omit their console.log calls. This debug logging should be removed.

Suggested change
console.log(res);
//console.log(res);

Copilot uses AI. Check for mistakes.
return res.data;
} catch (error) {
console.error("예측에 사용된 뉴스 목록 조회 실패 : ", error);
throw error;
}
}
13 changes: 12 additions & 1 deletion src/apis/CoinDetail/chart.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,13 @@
const BACKEND = import.meta.env.VITE_BACKEND_URL;
import { instance } from "../../utils/axios";

export const getCandleInfo = async (ticker, unit=1, count=200) => {
try {
const res = await instance.get(`/api/v1/market/candles/${ticker}?unit=${unit}&count=${count}`);
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Query parameters are manually concatenated into the URL string rather than using params as done consistently in all other API functions in this PR (e.g., search.js, analysis.js, tickers.js, coinNews.js). This is inconsistent and could lead to encoding issues. Use params: { unit, count } as the second argument to instance.get for consistency with the rest of the codebase.

Suggested change
const res = await instance.get(`/api/v1/market/candles/${ticker}?unit=${unit}&count=${count}`);
const res = await instance.get(`/api/v1/market/candles/${ticker}`, {
params: { unit, count },
});

Copilot uses AI. Check for mistakes.
//console.log(res.data);
return res.data;
} catch (error) {
console.error("코인 분봉 차트 불러오기 실패: ", error);
throw error;
}

}
4 changes: 2 additions & 2 deletions src/apis/CoinDetail/coinInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { instance } from "../../utils/axios";
export const getCoinInfo = async (ticker) => {
try {
const res = await instance.get(`/api/v1/crypto/${ticker}`);
console.log(res);
return res;
//console.log(res);
return res.data;
} catch (error) {
console.error("코인 정보 불러오기 실패: ", error);
throw error;
Expand Down
14 changes: 14 additions & 0 deletions src/apis/CoinDetail/coinNews.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { instance } from "../../utils/axios";

export const getCoinNews = async (ticker, page=0, size=20) => {
try {
const res = await instance.get(`/api/v1/crypto/${ticker}/news/recent`, {
params: {page, size}
});
//console.log(res);
return res.data;
} catch (error) {
console.error("코인 관련 뉴스 불러오기 실패: ", error);
throw error;
}
}
13 changes: 13 additions & 0 deletions src/apis/Market/tickers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { instance } from "../../utils/axios";

export const getTickers = async (marketType = "KRW", sortBy = "tradeValue") => {
try {
const res = await instance.get("/api/v1/market/tickers", {
params: { marketType, sortBy },
});
return res.data;
} catch (error) {
console.error("코인 시세 목록 불러오기 실패: ", error);
throw error;
}
};
13 changes: 13 additions & 0 deletions src/apis/News/analysis.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { instance } from "../../utils/axios";

export const getNewsAnalysis = async (page = 0, size = 20) => {
try {
const res = await instance.get("/api/v1/news/analysis", {
params: { page, size },
});
return res.data;
} catch (error) {
console.error("뉴스 분석 목록 불러오기 실패: ", error);
throw error;
}
};
13 changes: 13 additions & 0 deletions src/apis/News/search.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { instance } from "../../utils/axios";

export const searchNews = async (keyword, page = 0, size = 20) => {
try {
const res = await instance.get("/api/v1/news/search", {
params: { keyword, page, size },
});
return res.data;
} catch (error) {
console.error("뉴스 검색 실패: ", error);
throw error;
}
};
1 change: 1 addition & 0 deletions src/assets/pixelarticons--coin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading