=================
== The Archive ==
=================

๐Ÿ” ๋ฐฉ๋ฌธ ๊ธฐ๋ก ๊ฒ€์ƒ‰ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ, Historikie

|

๋ฐฉ๋ฌธ ๊ธฐ๋ก ๊ฒ€์ƒ‰ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ, Historikie๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค

์š”์ฆ˜์€ ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ๋งŽ์ด ์—ด์–ด๋‘๊ณ  ์ž‘์—…ํ•˜๋‹ค ๋ณด๋‹ˆ, โ€œ๋ถ„๋ช…ํžˆ ์•„๊นŒ ๋ดค๋˜ ํŽ˜์ด์ง€์ธ๋ฐ ์–ด๋”” ๊ฐ”์ง€?โ€๋ผ๋Š” ์ˆœ๊ฐ„์ด ์ž์ฃผ ์ƒ๊น๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐฉ๋ฌธ ๊ธฐ๋ก ํŽ˜์ด์ง€์—์„œ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฒ€์ƒ‰ ํ๋ฆ„์ด ๋Š๊ธฐ๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ์ •๋ณด์— ๋ฐ”๋กœ ๋„๋‹ฌํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ๋ธŒ๋ผ์šฐ์ € ํŒ์—…์—์„œ ๋ฐ”๋กœ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ, Historikie๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ํ•œ ์ค„ ์†Œ๊ฐœ

Historikie๋Š” TypeScript ๊ธฐ๋ฐ˜์˜ ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ,

๋ฅผ ํ•ต์‹ฌ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Chrome(Manifest V3), Firefox(Manifest V2) ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.


์™œ ๋งŒ๋“ค์—ˆ๋‚˜?

์ œ๊ฐ€ ์›ํ–ˆ๋˜ ๊ฒฝํ—˜์€ ๋‹จ์ˆœํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ํ™•์žฅ ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅธ๋‹ค.
  2. ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  3. ๋ฐ”๋กœ ์›ํ•˜๋Š” ๊ธฐ๋ก์„ ์—ฐ๋‹ค.

์ฆ‰, โ€œ๊ธฐ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์„œ ๋‹ค์‹œ ๊ฒ€์ƒ‰โ€ํ•˜๋Š” ๊ณผ์ •์„ ์ค„์ด๊ณ , ์ž‘์—… ํ๋ฆ„์„ ๋Š์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€์Šต๋‹ˆ๋‹ค.


์ฃผ์š” ๊ธฐ๋Šฅ

Historikie์—๋Š” ์•„๋ž˜ ๊ธฐ๋Šฅ๋“ค์„ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค.


๊ธฐ์ˆ  ์Šคํƒ๊ณผ ๊ตฌํ˜„ ํฌ์ธํŠธ

1) TypeScript + Vite ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ

๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ ๊ฐœ๋ฐœ์—์„œ๋„ ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ๋นŒ๋“œ ์†๋„๋ฅผ ํ™•๋ณดํ•˜๊ณ  ์‹ถ์–ด์„œ ์ด ์กฐํ•ฉ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

2) ๋ธŒ๋ผ์šฐ์ € API ํ†ตํ•ฉ ๋ ˆ์ด์–ด

Chrome/Firefox๋Š” ํ™•์žฅ API์˜ ์„ธ๋ถ€ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ ์ „๋ฐ˜์—์„œ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ src/browser-api.ts์— ํ†ตํ•ฉ API ๋ ˆ์ด์–ด๋ฅผ ๋‘๊ณ , ์‹ค์ œ UI/๋กœ์ง ์ฝ”๋“œ์—์„œ๋Š” ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

3) ํ”„๋ผ์ด๋ฒ„์‹œ ์šฐ์„ 

์ด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๋ณธ ์›์น™์€ ๋‹ค์Œ์ž…๋‹ˆ๋‹ค.

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ํŠน์„ฑ์ƒ ์‹ ๋ขฐ๊ฐ€ ํ•ต์‹ฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ์ด ๊ธฐ์ค€์„ ์ง€ํ‚ค๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
.
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ manifest.json            # Chrome (V3)
โ”‚   โ””โ”€โ”€ manifest-firefox.json    # Firefox (V2)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ background.ts            # Background script
โ”‚   โ”œโ”€โ”€ browser-api.ts           # Browser API wrapper
โ”‚   โ””โ”€โ”€ popup.ts                 # Popup UI logic
โ”œโ”€โ”€ popup.html
โ”œโ”€โ”€ vite.config.ts
โ””โ”€โ”€ package.json

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์„ค์น˜/๊ฐœ๋ฐœ

1
2
3
4
git clone https://github.com/bossm0n5t3r/historikie.git
cd historikie
pnpm install
pnpm dev

๋นŒ๋“œ

1
2
3
4
5
6
7
8
# Chrome
pnpm build:chrome

# Firefox
pnpm build:firefox

# ๋‘˜ ๋‹ค
pnpm build:all

๋งˆ๋ฌด๋ฆฌ

Historikie๋Š” โ€œ๋ธŒ๋ผ์šฐ์ € ๋ฐฉ๋ฌธ ๊ธฐ๋ก์„ ๋” ๋น ๋ฅด๊ณ , ๋” ๊น”๋”ํ•˜๊ฒŒ ์ฐพ๊ณ  ์‹ถ๋‹คโ€๋Š” ์•„์ฃผ ๊ฐœ์ธ์ ์ธ ๋ถˆํŽธ์—์„œ ์‹œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์ž‘์ง€๋งŒ ์‹ค์ œ๋กœ ์ž์ฃผ ์“ฐ๊ฒŒ ๋˜๋Š” ๋„๊ตฌ๋ฅผ ๋ชฉํ‘œ๋กœ ๋งŒ๋“ค์—ˆ๊ณ , ์•ž์œผ๋กœ๋„ ๊ฒ€์ƒ‰ ํ’ˆ์งˆ๊ณผ UX๋ฅผ ๊ณ„์† ๋‹ค๋“ฌ์–ด ๊ฐˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ์€ ์–ธ์ œ๋“  ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™Œ