{
 "generated": "2026-10-21T07:34:32.739Z",
 "projects": [
  {
   "slug": "exchange",
   "title": "VELOX",
   "subtitle_ko": "하이 프리퀀시 마진 트레이딩 거래소 — 초저지연 인메모리 매칭엔진",
   "subtitle_en": "High-frequency margin trading exchange — ultra-low-latency in-memory matching engine",
   "category": "Exchange",
   "summary_ko": "모든 오더북을 메모리 위에서 처리하는 Rust 인메모리 매칭엔진을 심장으로, 마이크로초 단위로 주문을 체결하는 하이엔드 거래소입니다. 매칭엔진·WAL 이벤트 소싱·원장·리스크/청산·WebSocket 시세·트레이딩 UI까지 외부 엔진이나 거래소 솔루션 없이 처음부터 전부 직접 설계하고 구현했습니다. 공개 데모에서는 마켓메이커 시뮬레이터가 바이낸스·OKX·바이비트 지수를 따라 오더북을 실시간으로 채웁니다.",
   "summary_en": "A high-end exchange built around an in-memory Rust matching engine that keeps every order book in RAM and fills orders in microseconds. Matching engine, WAL event sourcing, ledger, risk/liquidation, WebSocket market data and the trading UI were all designed and written from scratch — no third-party engine or white-label exchange. In the public demo a market-maker simulator keeps every book quoted off the Binance/OKX/Bybit index.",
   "highlights_ko": [
    "초저지연 인메모리 매칭: 체결 p50 ≈ 10.2µs · p99 ≈ 26.6µs (목표 100µs 대비 4배 여유)",
    "캐시 라인 정렬(64B)로 false sharing 제거, loom 모델 검증 lock-free 인입 링 ≈16ns 핸드오프 · 6,200만 handoff/s",
    "WAL·스냅샷 이벤트 소싱 — 장애 후 바이트 단위 동일 복구, 원장 해시체인 감사",
    "격리 마진·레버리지·청산·펀딩·보험기금을 갖춘 무기한 선물",
    "전 과정 자체 개발: 매칭엔진·원장·API 게이트웨이·프런트·모니터링(Prometheus)·CI 지연 회귀 게이트"
   ],
   "highlights_en": [
    "Ultra-low-latency in-memory matching: p50 ≈ 10.2µs · p99 ≈ 26.6µs (4× headroom on the 100µs target)",
    "64-byte cache-line alignment against false sharing; loom-verified lock-free ingress ring, ≈16ns handoff · 62M handoffs/s",
    "WAL + snapshot event sourcing — byte-identical recovery after a crash, hash-chained ledger audit",
    "Perpetual futures with isolated margin, leverage, liquidation, funding and insurance fund",
    "Built end-to-end in-house: engine, ledger, API gateway, frontend, Prometheus monitoring, CI latency-regression gate"
   ],
   "stack": [
    "Rust",
    "PostgreSQL",
    "WebSocket",
    "React",
    "TypeScript",
    "Docker"
   ],
   "metric": {
    "value": "26.6µs",
    "label_ko": "매칭 p99 지연",
    "label_en": "matching p99 latency"
   },
   "status": "live",
   "demo_url": "/exchange/",
   "shots": [
    {
     "src": "/portfolio-assets/exchange/trade.webp?g=1792565652",
     "thumb": "/portfolio-assets/exchange/trade.thumb.webp?g=1792565652",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "현물 거래 화면 — 오더북, 차트, 주문 패널",
     "alt_en": "Spot trading view — order book, chart, order panel",
     "blur": "/portfolio-assets/exchange/trade.blur.webp?g=1792566003",
     "blur_thumb": "/portfolio-assets/exchange/trade.blur.thumb.webp?g=1792566003"
    },
    {
     "src": "/portfolio-assets/exchange/markets.webp?g=1792565653",
     "thumb": "/portfolio-assets/exchange/markets.thumb.webp?g=1792565653",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "마켓 목록과 24시간 추세",
     "alt_en": "Market list with 24h trends",
     "blur": "/portfolio-assets/exchange/markets.blur.webp?g=1792566003",
     "blur_thumb": "/portfolio-assets/exchange/markets.blur.thumb.webp?g=1792566003"
    },
    {
     "src": "/portfolio-assets/exchange/status.webp?g=1792565653",
     "thumb": "/portfolio-assets/exchange/status.thumb.webp?g=1792565653",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "시스템 상태 페이지",
     "alt_en": "System status page",
     "blur": "/portfolio-assets/exchange/status.blur.webp?g=1792566003",
     "blur_thumb": "/portfolio-assets/exchange/status.blur.thumb.webp?g=1792566004"
    }
   ],
   "featured": true,
   "order": 1
  },
  {
   "slug": "evechain",
   "title": "EVECHAIN",
   "subtitle_ko": "Rust로 처음부터 만든 하이엔드 L1 블록체인 — 병렬 EVM · BFT PoS · 온체인 CLOB",
   "subtitle_en": "A high-end L1 written from scratch in Rust — parallel EVM · BFT PoS · on-chain CLOB",
   "category": "Blockchain",
   "summary_ko": "합의·실행·네트워킹·스토리지·DEX·인덱서·익스플로러까지 레이어 전체를 Rust로 처음부터 직접 만든 EVM 호환 PoS 블록체인입니다. BLS 집계 투표 BFT 합의로 블록이 즉시 확정되고, Block-STM 병렬 실행이 순차 실행과 비트 단위로 같은 결과를 내면서 초당 12만 건 이상을 처리합니다. 체인 안에 내장한 인메모리 오더북 CLOB가 초당 29만 건의 주문을 매칭하며, 4-검증자 데브넷이 이 서버에서 실제로 돌아갑니다.",
   "summary_en": "An EVM-compatible PoS blockchain with every layer — consensus, execution, networking, storage, DEX, indexer and explorer — written from scratch in Rust. BLS-aggregated BFT consensus gives instant finality; Block-STM parallel execution stays bit-identical to sequential execution at 120k+ tx/s. A native in-memory order-book CLOB inside the chain matches 299k orders/s, and a 4-validator devnet runs live on this server.",
   "highlights_ko": [
    "실행+상태루트 120–130k tx/s (N=100k 독립 전송, 순차 98.9k)",
    "네이티브 CLOB 매칭 299k orders/s · Perp 매칭+정산 359k orders/s",
    "tx 수락→영수증 21–29ms · mempool 수용 44k tx/s",
    "state-sync·롤링 업그레이드 무정지·chaos 8/8·14.7h soak 검증",
    "145+ 라운드 자체 적대 감사로 실버그 179건 수정",
    "전 레이어 자체 개발: 합의·병렬 EVM 실행·QUIC P2P·redb 상태 저장·인덱서·EveScan 익스플로러"
   ],
   "highlights_en": [
    "Execution + state root: 120–130k tx/s (100k independent transfers; 98.9k sequential)",
    "Native CLOB matching 299k orders/s · perp matching+settlement 359k orders/s",
    "Tx accept→receipt 21–29 ms · mempool admission 44k tx/s",
    "Verified state-sync, zero-downtime rolling upgrades, chaos 8/8, 14.7h soak",
    "145+ rounds of internal adversarial audits, 179 real bugs fixed",
    "Every layer built in-house: consensus, parallel EVM execution, QUIC P2P, redb state store, indexer, EveScan explorer"
   ],
   "stack": [
    "Rust",
    "revm",
    "BLS12-381",
    "QUIC",
    "redb",
    "axum",
    "SQLite",
    "React",
    "TypeScript",
    "viem"
   ],
   "metric": {
    "value": "299k",
    "label_ko": "orders/s 네이티브 CLOB 매칭",
    "label_en": "orders/s native CLOB matching"
   },
   "status": "live",
   "demo_url": "/evechain/",
   "shots": [
    {
     "src": "/portfolio-assets/evechain/home-desktop.webp?g=1792556456",
     "thumb": "/portfolio-assets/evechain/home-desktop.thumb.webp?g=1792556456",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "EveScan 대시보드 — 실시간 블록·트랜잭션·BFT 파이널리티",
     "alt_en": "EveScan dashboard — live blocks, transactions and BFT finality",
     "blur": "/portfolio-assets/evechain/home-desktop.blur.webp?g=1792566001",
     "blur_thumb": "/portfolio-assets/evechain/home-desktop.blur.thumb.webp?g=1792566001"
    },
    {
     "src": "/portfolio-assets/evechain/trade-desktop.webp?g=1792556457",
     "thumb": "/portfolio-assets/evechain/trade-desktop.thumb.webp?g=1792556457",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "온체인 무기한 선물 오더북·마크 차트·최근 체결",
     "alt_en": "On-chain perpetual order book, mark chart and recent fills",
     "blur": "/portfolio-assets/evechain/trade-desktop.blur.webp?g=1792566001",
     "blur_thumb": "/portfolio-assets/evechain/trade-desktop.blur.thumb.webp?g=1792566001"
    },
    {
     "src": "/portfolio-assets/evechain/tx-desktop.webp?g=1792556458",
     "thumb": "/portfolio-assets/evechain/tx-desktop.thumb.webp?g=1792556458",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "트랜잭션 상세 — ERC-20 transfer 메서드·입력 디코딩",
     "alt_en": "Transaction detail with decoded ERC-20 transfer input",
     "blur": "/portfolio-assets/evechain/tx-desktop.blur.webp?g=1792566001",
     "blur_thumb": "/portfolio-assets/evechain/tx-desktop.blur.thumb.webp?g=1792566002"
    },
    {
     "src": "/portfolio-assets/evechain/token-desktop.webp?g=1792556458",
     "thumb": "/portfolio-assets/evechain/token-desktop.thumb.webp?g=1792556459",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "ERC-20 토큰 컨트랙트 주소 페이지",
     "alt_en": "ERC-20 token contract address page",
     "blur": "/portfolio-assets/evechain/token-desktop.blur.webp?g=1792566002",
     "blur_thumb": "/portfolio-assets/evechain/token-desktop.blur.thumb.webp?g=1792566002"
    },
    {
     "src": "/portfolio-assets/evechain/home-mobile.webp?g=1792556480",
     "thumb": "/portfolio-assets/evechain/home-mobile.thumb.webp?g=1792556460",
     "w": 780,
     "h": 1688,
     "kind": "mobile",
     "alt_ko": "모바일 익스플로러 홈",
     "alt_en": "Explorer home on mobile",
     "blur": "/portfolio-assets/evechain/home-mobile.blur.webp?g=1792566002",
     "blur_thumb": "/portfolio-assets/evechain/home-mobile.blur.thumb.webp?g=1792566002"
    }
   ],
   "featured": true,
   "order": 2
  },
  {
   "slug": "blackboard",
   "title": "Blackboard",
   "subtitle_ko": "Hyperliquid·Polymarket 통합 온체인 트레이딩 터미널",
   "subtitle_en": "Onchain multi-market trading terminal (Hyperliquid · Polymarket)",
   "category": "DeFi | Exchange | Web App",
   "summary_ko": "임베디드 지갑 기반으로 Hyperliquid·Aster 무기한 선물, Aark 고레버리지, Polymarket 예측시장, TCG 카드를 하나의 React SPA에서 거래하는 실서비스 DEX. 시드 문구나 CEX 없이 로그인 즉시 거래하도록 embedded-first + 백엔드 가스 스폰서십 구조로 설계했고, NestJS 백엔드가 체인·베뉴 어댑터와 인덱서를 운영합니다.",
   "summary_en": "A live DEX that trades Hyperliquid and Aster perpetuals, Aark high-leverage futures, Polymarket prediction markets and TCG cards from a single React SPA. Embedded-wallet-first with backend gas sponsorship so users trade right after login, backed by a NestJS service running chain/venue adapters and indexers.",
   "highlights_ko": [
    "TradFi·Crypto·1000X·Prediction·TCG 5개 섹터 단일 터미널",
    "Polymarket CLOB SDK 없이 자체 구현, Hyperliquid·Aster·Aark·EVM·Solana·Tron 어댑터",
    "Privy 임베디드 지갑 + 가스 스폰서십으로 시드 없는 온보딩",
    "lightweight-charts 차트·오더북·실시간 체결 티커, 모바일 전용 레이아웃",
    "NestJS + Prisma/PostgreSQL + Redis, AWS ECS Fargate 배포",
    "전 과정 자체 개발: 트레이딩 터미널·베뉴 어댑터·인덱서·NestJS 백엔드·AWS 인프라"
   ],
   "highlights_en": [
    "One terminal for five sectors: TradFi, Crypto, 1000X, Prediction, TCG",
    "In-house Polymarket CLOB client; Hyperliquid, Aster, Aark, EVM, Solana and Tron adapters",
    "Seedless onboarding via Privy embedded wallets and gas sponsorship",
    "Charts, order book and live trade ticker, with a dedicated mobile layout",
    "NestJS + Prisma/PostgreSQL + Redis on AWS ECS Fargate",
    "Built end-to-end in-house: trading terminal, venue adapters, indexer, NestJS backend, AWS infra"
   ],
   "stack": [
    "React",
    "Vite",
    "TypeScript",
    "viem",
    "zustand",
    "NestJS",
    "Prisma",
    "PostgreSQL",
    "Redis"
   ],
   "status": "service",
   "live_url": "https://app.blackboard.fi",
   "shots": [
    {
     "src": "/portfolio-assets/blackboard/trade@desktop.webp?g=1792555623",
     "thumb": "/portfolio-assets/blackboard/trade@desktop.thumb.webp?g=1792555623",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "S&P500 무기한 선물 거래 터미널",
     "alt_en": "S&P500 perpetual trading terminal",
     "blur": "/portfolio-assets/blackboard/trade@desktop.blur.webp?g=1792565995",
     "blur_thumb": "/portfolio-assets/blackboard/trade@desktop.blur.thumb.webp?g=1792565995"
    },
    {
     "src": "/portfolio-assets/blackboard/markets@desktop.webp?g=1792555623",
     "thumb": "/portfolio-assets/blackboard/markets@desktop.thumb.webp?g=1792555623",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "TradFi 마켓 개요 · 지수·통화·원자재",
     "alt_en": "TradFi markets overview",
     "blur": "/portfolio-assets/blackboard/markets@desktop.blur.webp?g=1792565995",
     "blur_thumb": "/portfolio-assets/blackboard/markets@desktop.blur.thumb.webp?g=1792565995"
    },
    {
     "src": "/portfolio-assets/blackboard/predict@desktop.webp?g=1792555624",
     "thumb": "/portfolio-assets/blackboard/predict@desktop.thumb.webp?g=1792555624",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "Polymarket 예측시장 브라우즈",
     "alt_en": "Polymarket prediction markets",
     "blur": "/portfolio-assets/blackboard/predict@desktop.blur.webp?g=1792565996",
     "blur_thumb": "/portfolio-assets/blackboard/predict@desktop.blur.thumb.webp?g=1792565996"
    },
    {
     "src": "/portfolio-assets/blackboard/predict@mobile.webp?g=1792555624",
     "thumb": "/portfolio-assets/blackboard/predict@mobile.thumb.webp?g=1792555624",
     "w": 780,
     "h": 1688,
     "kind": "mobile",
     "alt_ko": "모바일 예측시장",
     "alt_en": "Prediction markets on mobile",
     "blur": "/portfolio-assets/blackboard/predict@mobile.blur.webp?g=1792565996",
     "blur_thumb": "/portfolio-assets/blackboard/predict@mobile.blur.thumb.webp?g=1792565996"
    },
    {
     "src": "/portfolio-assets/blackboard/brochure.webp?g=1792555625",
     "thumb": "/portfolio-assets/blackboard/brochure.thumb.webp?g=1792555625",
     "w": 2400,
     "h": 1712,
     "kind": "desktop",
     "alt_ko": "행사 브로슈어",
     "alt_en": "Event brochure",
     "blur": "/portfolio-assets/blackboard/brochure.blur.webp?g=1792565996",
     "blur_thumb": "/portfolio-assets/blackboard/brochure.blur.thumb.webp?g=1792565997"
    }
   ],
   "featured": true,
   "order": 3
  },
  {
   "slug": "saveticker",
   "title": "SaveTicker",
   "subtitle_ko": "실시간 투자 뉴스·관심종목 플랫폼",
   "subtitle_en": "Real-time investing news & watchlist platform",
   "category": "Web App",
   "summary_ko": "실시간 투자 뉴스, 관심종목, 경제 캘린더, 투자자 커뮤니티, 알림을 한 곳에 모은 투자 정보 플랫폼 세이브티커(saveticker.com)입니다. 기획부터 개발·운영까지 전체를 직접 맡아 실서비스로 운영 중입니다.",
   "summary_en": "SaveTicker (saveticker.com) brings real-time investing news, watchlists, an economic calendar, an investor community and alerts into one place — planned, built and operated in-house.",
   "highlights_ko": [
    "실시간 뉴스 피드",
    "관심종목(워치리스트)·알림",
    "경제 캘린더",
    "투자자 커뮤니티·검색",
    "기획·개발·운영 전체 직접 수행"
   ],
   "highlights_en": [
    "Real-time news feed",
    "Watchlists and alerts",
    "Economic calendar",
    "Investor community and search",
    "Planned, built and operated in-house"
   ],
   "stack": [],
   "status": "service",
   "live_url": "https://saveticker.com",
   "shots": [],
   "featured": false,
   "order": 3.5
  },
  {
   "slug": "edux",
   "title": "EDUX Futures",
   "subtitle_ko": "바이낸스 USDT-M 선물 거래 교육 시뮬레이터",
   "subtitle_en": "Binance USDT-M futures trading education simulator",
   "category": "Exchange",
   "summary_ko": "바이낸스 USDT-M 선물 거래를 가상 자산으로 재현하는 모의투자 플랫폼입니다. Rust(Axum) 엔진이 Binance WebSocket 실시간 호가·마크가격을 받아 슬리피지·청산·펀딩비·ADL까지 시뮬레이션하고, React 웹과 모바일 앱에서 랭킹·커뮤니티·뉴스를 제공합니다.",
   "summary_en": "A paper-trading platform that reproduces Binance USDT-M futures with virtual funds. A Rust (Axum) engine consumes live Binance WebSocket depth and mark prices to simulate slippage, liquidation, funding and ADL, with ranking, community and news on React web and mobile apps.",
   "highlights_ko": [
    "Binance 실시간 호가(500+ 심볼) 기반 VWAP 슬리피지 체결",
    "격리/교차 마진·청산·8시간 펀딩비·ADL·TP/SL 워커",
    "인메모리 엔진 + WAL 배치 영속화(CRC32, fsync)",
    "ROI/PnL 랭킹, 커뮤니티, 뉴스, 인디케이터",
    "웹(React/Vite) + Capacitor 모바일 앱",
    "전 과정 자체 개발: Rust 시뮬레이션 엔진·실시간 시세 수집·웹·모바일 앱"
   ],
   "highlights_en": [
    "VWAP slippage fills on live Binance order books (500+ symbols)",
    "Isolated/cross margin, liquidation, 8h funding, ADL and TP/SL workers",
    "In-memory engine with WAL batch persistence (CRC32, fsync)",
    "ROI/PnL ranking, community, news and indicators",
    "Web (React/Vite) plus Capacitor mobile app",
    "Built end-to-end in-house: Rust simulation engine, live market ingestion, web and mobile apps"
   ],
   "stack": [
    "Rust",
    "Axum",
    "PostgreSQL",
    "Redis",
    "Binance WebSocket",
    "React",
    "Vite",
    "TradingView"
   ],
   "status": "live",
   "demo_url": "/edux/",
   "demo_login": {
    "label_ko": "데모 계정",
    "label_en": "Demo account",
    "email": "demo@dev-david.com",
    "password": "EduxDemo2026!"
   },
   "shots": [
    {
     "src": "/portfolio-assets/edux/trade.webp?g=1792563846",
     "thumb": "/portfolio-assets/edux/trade.thumb.webp?g=1792563846",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "선물 거래 화면 (차트·호가·포지션)",
     "alt_en": "Futures trading screen with chart, order book and positions",
     "blur": "/portfolio-assets/edux/trade.blur.webp?g=1792565997",
     "blur_thumb": "/portfolio-assets/edux/trade.blur.thumb.webp?g=1792565997"
    },
    {
     "src": "/portfolio-assets/edux/store-hero.webp?g=1792555501",
     "thumb": "/portfolio-assets/edux/store-hero.thumb.webp?g=1792555501",
     "w": 1080,
     "h": 1920,
     "kind": "mobile",
     "alt_ko": "모바일 앱 대표 이미지",
     "alt_en": "Mobile app hero",
     "blur": "/portfolio-assets/edux/store-hero.blur.webp?g=1792565997",
     "blur_thumb": "/portfolio-assets/edux/store-hero.blur.thumb.webp?g=1792565997"
    },
    {
     "src": "/portfolio-assets/edux/store-trade.webp?g=1792555501",
     "thumb": "/portfolio-assets/edux/store-trade.thumb.webp?g=1792555501",
     "w": 1080,
     "h": 1920,
     "kind": "mobile",
     "alt_ko": "모바일 실시간 시세 거래",
     "alt_en": "Mobile live-price trading",
     "blur": "/portfolio-assets/edux/store-trade.blur.webp?g=1792565998",
     "blur_thumb": "/portfolio-assets/edux/store-trade.blur.thumb.webp?g=1792565998"
    },
    {
     "src": "/portfolio-assets/edux/store-ranking.webp?g=1792555502",
     "thumb": "/portfolio-assets/edux/store-ranking.thumb.webp?g=1792555502",
     "w": 1080,
     "h": 1920,
     "kind": "mobile",
     "alt_ko": "랭킹 시스템",
     "alt_en": "Ranking system",
     "blur": "/portfolio-assets/edux/store-ranking.blur.webp?g=1792565998",
     "blur_thumb": "/portfolio-assets/edux/store-ranking.blur.thumb.webp?g=1792565998"
    },
    {
     "src": "/portfolio-assets/edux/store-community.webp?g=1792555502",
     "thumb": "/portfolio-assets/edux/store-community.thumb.webp?g=1792555502",
     "w": 1080,
     "h": 1920,
     "kind": "mobile",
     "alt_ko": "커뮤니티",
     "alt_en": "Community",
     "blur": "/portfolio-assets/edux/store-community.blur.webp?g=1792565999",
     "blur_thumb": "/portfolio-assets/edux/store-community.blur.thumb.webp?g=1792565999"
    }
   ],
   "featured": false,
   "order": 4
  },
  {
   "slug": "encore",
   "title": "ENCORE",
   "subtitle_ko": "프리미엄 재혼 매칭 플랫폼 — 홈페이지·회원 라운지·운영 워크스페이스",
   "subtitle_en": "Premium remarriage-matching platform — site, member lounge & operations workspace",
   "category": "Web App",
   "summary_ko": "상담 접수부터 가입 심사, 소개, 계약, 정산까지 결혼정보회사의 업무 전체를 하나로 묶은 플랫폼입니다. Rust(Axum)·PostgreSQL 백엔드와 92개 DB 마이그레이션, React 웹(홈페이지·회원 라운지·운영자 워크스페이스), Expo 모바일 앱으로 구성됩니다. 데모는 가상 데이터로 동작하는 읽기 전용 미리보기입니다.",
   "summary_en": "A platform covering a matchmaking agency's whole workflow — consultation intake, membership review, introductions, contracts and settlements. Rust (Axum) + PostgreSQL backend with 92 DB migrations, a React web app (public site, member lounge, staff workspace) and an Expo mobile app. The demo is a read-only preview running on mock data.",
   "highlights_ko": [
    "운영자 워크스페이스: 회원·만남·계약·운영 업무를 한 화면에서",
    "회원 라운지: 도착한 소개·할 일·멤버십 현황",
    "요청 중복 전송 차단, 버전 기반 충돌 방지, 탭 간 세션 종료 동기화",
    "직원 MFA·비밀번호 재설정·이메일 아웃박스 등 보안·운영 기능",
    "전 과정 자체 개발: 백엔드·DB 92개 마이그레이션·홈페이지·회원 라운지·운영 워크스페이스·모바일 앱"
   ],
   "highlights_en": [
    "Staff workspace for members, meetings, contracts and operations",
    "Member lounge with incoming introductions, to-dos and membership status",
    "Duplicate-submit guards, version-based conflict handling, cross-tab session sync",
    "Staff MFA, password resets, email outbox and other ops/security features",
    "Built end-to-end in-house: backend, 92 DB migrations, website, member lounge, ops workspace, mobile app"
   ],
   "stack": [
    "Rust",
    "Axum",
    "PostgreSQL",
    "React",
    "TypeScript",
    "Vite",
    "Expo"
   ],
   "status": "live",
   "demo_url": "/encore/",
   "shots": [
    {
     "src": "/portfolio-assets/encore/home.webp?g=1792555656",
     "thumb": "/portfolio-assets/encore/home.thumb.webp?g=1792555656",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "앙코르 홈페이지 히어로",
     "alt_en": "ENCORE public site hero",
     "blur": "/portfolio-assets/encore/home.blur.webp?g=1792565999",
     "blur_thumb": "/portfolio-assets/encore/home.blur.thumb.webp?g=1792565999"
    },
    {
     "src": "/portfolio-assets/encore/admin-members.webp?g=1792555657",
     "thumb": "/portfolio-assets/encore/admin-members.thumb.webp?g=1792555657",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "운영 워크스페이스 회원 목록",
     "alt_en": "Staff workspace member list",
     "blur": "/portfolio-assets/encore/admin-members.blur.webp?g=1792565999",
     "blur_thumb": "/portfolio-assets/encore/admin-members.blur.thumb.webp?g=1792566000"
    },
    {
     "src": "/portfolio-assets/encore/member-lounge.webp?g=1792555658",
     "thumb": "/portfolio-assets/encore/member-lounge.thumb.webp?g=1792555658",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "회원 라운지",
     "alt_en": "Member lounge",
     "blur": "/portfolio-assets/encore/member-lounge.blur.webp?g=1792566000",
     "blur_thumb": "/portfolio-assets/encore/member-lounge.blur.thumb.webp?g=1792566000"
    },
    {
     "src": "/portfolio-assets/encore/member-mobile.webp?g=1792555658",
     "thumb": "/portfolio-assets/encore/member-mobile.thumb.webp?g=1792555658",
     "w": 1110,
     "h": 2400,
     "kind": "mobile",
     "alt_ko": "모바일 회원 라운지",
     "alt_en": "Member lounge on mobile",
     "blur": "/portfolio-assets/encore/member-mobile.blur.webp?g=1792566000",
     "blur_thumb": "/portfolio-assets/encore/member-mobile.blur.thumb.webp?g=1792566000"
    }
   ],
   "featured": false,
   "order": 5
  },
  {
   "slug": "believers",
   "title": "believers (빌리버스)",
   "subtitle_ko": "SOOP·치지직형 신앙 라이브 스트리밍 플랫폼",
   "subtitle_en": "SOOP/Chzzk-style faith live-streaming platform",
   "category": "Streaming",
   "summary_ko": "교회·청년부가 예배를 생중계하고 다시보기·클립으로 나누는 신앙 특화 라이브 플랫폼입니다. Rust Axum 헥사고날 워크스페이스(domain/app/infra/api)와 PostgreSQL(sqlx 마이그레이션 42개), React·TypeScript·Vite 프런트엔드로 구성했고, 실시간 채팅(WebSocket)·헌금·교회 인증·스튜디오까지 한 서비스에 담았습니다.",
   "summary_en": "A faith-focused live platform where churches and youth groups stream services and share replays and clips. Built as a hexagonal Rust Axum workspace (domain/app/infra/api) on PostgreSQL with 42 sqlx migrations, plus a React + TypeScript + Vite frontend, covering WebSocket live chat, giving, church verification and a broadcaster studio.",
   "highlights_ko": [
    "WebSocket 실시간 채팅 — 아멘·기도 반응, 슬로우모드, 고정 공지, 투표",
    "다시보기·클립·시리즈·챕터와 설교 노트",
    "교회 채널: 인증, 주보·기도제목·커뮤니티, 예배 일정 ICS",
    "헌금·후원 목표·기부금영수증(PortOne 웹훅) 및 정산 CSV",
    "Cloudflare Stream 어댑터(미설정 시 mock), PWA·웹푸시",
    "전 과정 자체 개발: Rust 헥사고날 백엔드·DB 42개 마이그레이션·실시간 채팅·프런트·결제 연동"
   ],
   "highlights_en": [
    "WebSocket live chat with amen/prayer reactions, slow mode, pinned notices and polls",
    "Replays, clips, series, chapters and sermon notes",
    "Church channels: verification, bulletins, prayer requests, community, ICS schedules",
    "Giving, giving goals and tax receipts (PortOne webhooks) with settlement CSV",
    "Cloudflare Stream adapter (mock fallback), PWA and web push",
    "Built end-to-end in-house: hexagonal Rust backend, 42 DB migrations, realtime chat, frontend, payments"
   ],
   "stack": [
    "Rust",
    "Axum",
    "PostgreSQL",
    "sqlx",
    "React",
    "TypeScript",
    "Vite",
    "Tailwind CSS"
   ],
   "status": "live",
   "demo_url": "/believers/",
   "demo_login": {
    "email": "demo@believers.demo",
    "password": "Believers2026!"
   },
   "shots": [
    {
     "src": "/portfolio-assets/believers/home.webp?g=1792563372",
     "thumb": "/portfolio-assets/believers/home.thumb.webp?g=1792563372",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "홈 — 라이브 예배 히어로와 주목받는 교회",
     "alt_en": "Home — live service hero and trending churches",
     "blur": "/portfolio-assets/believers/home.blur.webp?g=1792565992",
     "blur_thumb": "/portfolio-assets/believers/home.blur.thumb.webp?g=1792565992"
    },
    {
     "src": "/portfolio-assets/believers/watch.webp?g=1792563373",
     "thumb": "/portfolio-assets/believers/watch.thumb.webp?g=1792563373",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "라이브 시청 화면과 실시간 채팅",
     "alt_en": "Live watch page with real-time chat",
     "blur": "/portfolio-assets/believers/watch.blur.webp?g=1792565992",
     "blur_thumb": "/portfolio-assets/believers/watch.blur.thumb.webp?g=1792565992"
    },
    {
     "src": "/portfolio-assets/believers/church.webp?g=1792563373",
     "thumb": "/portfolio-assets/believers/church.thumb.webp?g=1792563374",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "교회 채널 페이지",
     "alt_en": "Church channel page",
     "blur": "/portfolio-assets/believers/church.blur.webp?g=1792565993",
     "blur_thumb": "/portfolio-assets/believers/church.blur.thumb.webp?g=1792565993"
    },
    {
     "src": "/portfolio-assets/believers/replays.webp?g=1792563374",
     "thumb": "/portfolio-assets/believers/replays.thumb.webp?g=1792563374",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "다시보기 목록",
     "alt_en": "Replays list",
     "blur": "/portfolio-assets/believers/replays.blur.webp?g=1792565993",
     "blur_thumb": "/portfolio-assets/believers/replays.blur.thumb.webp?g=1792565993"
    },
    {
     "src": "/portfolio-assets/believers/home-mobile.webp?g=1792563375",
     "thumb": "/portfolio-assets/believers/home-mobile.thumb.webp?g=1792563375",
     "w": 1110,
     "h": 2400,
     "kind": "mobile",
     "alt_ko": "모바일 홈",
     "alt_en": "Mobile home",
     "blur": "/portfolio-assets/believers/home-mobile.blur.webp?g=1792565993",
     "blur_thumb": "/portfolio-assets/believers/home-mobile.blur.thumb.webp?g=1792565994"
    }
   ],
   "featured": false,
   "order": 5.5
  },
  {
   "slug": "anttalk",
   "title": "ANTTALK",
   "subtitle_ko": "암호화폐 커뮤니티·모의투자 플랫폼 웹 프론트엔드",
   "subtitle_en": "Crypto community & demo-trading platform — web frontend",
   "category": "Web App",
   "summary_ko": "Bugscoin 생태계의 암호화폐 커뮤니티·모의 선물거래 플랫폼 ANTTALK의 웹 프론트엔드입니다. Rust Yew로 작성해 WebAssembly로 빌드한 SPA로, 수익 랭킹·커뮤니티 게시판·선물 차트·가이드·마켓 화면과 실시간 채팅 패널, 한/영 다국어를 갖췄습니다. 백엔드 없이 UI만 구동되며 일부 화면은 더미 데이터로 표시됩니다.",
   "summary_en": "Web frontend for ANTTALK, a crypto community and demo futures-trading platform in the Bugscoin ecosystem. A Rust Yew SPA compiled to WebAssembly, with profit rankings, community boards, futures views, guides, a market and a live-chat panel, in Korean and English. It runs as UI only without its backend; some screens show placeholder data.",
   "highlights_ko": [
    "Rust Yew + WebAssembly SPA (Trunk 빌드)",
    "yewdux 상태관리, yew-router 라우팅, stylist CSS-in-Rust",
    "rust-i18n 한/영 다국어, 마크다운 가이드 뷰어",
    "랭킹 시상대·커뮤니티·채팅 패널 대시보드",
    "전 과정 자체 개발: Rust/WASM 프런트엔드·다국어·실시간 채팅 UI"
   ],
   "highlights_en": [
    "Rust Yew + WebAssembly SPA built with Trunk",
    "yewdux state, yew-router routing, stylist CSS-in-Rust",
    "Korean/English i18n via rust-i18n, markdown guide viewer",
    "Dashboard with ranking podium, community feed and chat panel",
    "Built end-to-end in-house: Rust/WASM frontend, i18n, realtime chat UI"
   ],
   "stack": [
    "Rust",
    "Yew",
    "WebAssembly",
    "Trunk"
   ],
   "status": "archived",
   "shots": [
    {
     "src": "/portfolio-assets/anttalk/home.webp?g=1792555924",
     "thumb": "/portfolio-assets/anttalk/home.thumb.webp?g=1792555924",
     "w": 2400,
     "h": 1350,
     "kind": "desktop",
     "alt_ko": "랭킹·커뮤니티·채팅 대시보드",
     "alt_en": "Ranking, community & chat dashboard",
     "blur": "/portfolio-assets/anttalk/home.blur.webp?g=1792565991",
     "blur_thumb": "/portfolio-assets/anttalk/home.blur.thumb.webp?g=1792565991"
    },
    {
     "src": "/portfolio-assets/anttalk/guide.webp?g=1792555925",
     "thumb": "/portfolio-assets/anttalk/guide.thumb.webp?g=1792555925",
     "w": 2400,
     "h": 1350,
     "kind": "desktop",
     "alt_ko": "ANTTALK 가이드 페이지",
     "alt_en": "ANTTALK guide page",
     "blur": "/portfolio-assets/anttalk/guide.blur.webp?g=1792565991",
     "blur_thumb": "/portfolio-assets/anttalk/guide.blur.thumb.webp?g=1792565991"
    }
   ],
   "featured": false,
   "order": 6
  },
  {
   "slug": "nftmarket",
   "title": "Bugs NFT Market",
   "subtitle_ko": "BNB Chain 기반 BGSC 결제 NFT 마켓플레이스",
   "subtitle_en": "BGSC-denominated NFT marketplace on BNB Chain",
   "category": "Blockchain",
   "summary_ko": "BNB Chain 메인넷에 배포된 ERC-721 NFT 마켓플레이스입니다. Solidity 컨트랙트(NFT·마켓·NFT 기반 거버넌스·타임락)와 React/wagmi 프런트를 함께 구현했으며, 거래는 BEP-20 BugsCoin(BGSC)으로 결제되고 수수료는 소각 모델로 연결됩니다. 데모는 지갑 없이도 메인넷 컨트랙트에서 실제 등록 목록을 읽어 표시합니다.",
   "summary_en": "An ERC-721 NFT marketplace deployed on BNB Chain mainnet. Built both the Solidity contracts (NFT, marketplace, NFT-weighted governance + timelock) and the React/wagmi frontend; trades settle in the BEP-20 BugsCoin (BGSC) with platform fees routed to a burn model. The demo reads live listings from the mainnet contracts without a wallet.",
   "highlights_ko": [
    "NFTMarketplace.sol: ReentrancyGuard·Pausable, 커스텀 에러, CEI 패턴, BGSC transferFrom 원자적 결제 + bps 단위 플랫폼 수수료",
    "오프셋/리밋 페이지네이션 view 함수로 대량 목록 조회",
    "ERC721URIStorage 기반 batchMint·maxSupply, IPFS(Pinata) 메타데이터",
    "OpenZeppelin Governor + TimelockController로 NFT 보유량 기반 투표",
    "등급별(Bronze~Diamond) 발행 현황·가격 정렬·검색 UI, 한/영 지원",
    "전 과정 자체 개발: Solidity 컨트랙트 4종·프런트엔드·메인넷 배포"
   ],
   "highlights_en": [
    "NFTMarketplace.sol: ReentrancyGuard + Pausable, custom errors, CEI ordering, atomic BGSC transferFrom settlement with bps platform fee",
    "Offset/limit paginated view functions for large listings",
    "ERC721URIStorage with batchMint and maxSupply; IPFS (Pinata) metadata",
    "OpenZeppelin Governor + TimelockController for NFT-weighted voting",
    "Grade tiers (Bronze–Diamond), price sort, search; KO/EN UI",
    "Built end-to-end in-house: four Solidity contracts, frontend, mainnet deployment"
   ],
   "stack": [
    "Solidity 0.8.17",
    "Hardhat",
    "OpenZeppelin",
    "React",
    "wagmi",
    "viem",
    "ethers",
    "RainbowKit",
    "Tailwind",
    "IPFS"
   ],
   "status": "live",
   "demo_url": "/nftmarket/",
   "shots": [
    {
     "src": "/portfolio-assets/nftmarket/home.webp?g=1792556547",
     "thumb": "/portfolio-assets/nftmarket/home.thumb.webp?g=1792556547",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "메인 히어로",
     "alt_en": "Landing hero",
     "blur": "/portfolio-assets/nftmarket/home.blur.webp?g=1792566005",
     "blur_thumb": "/portfolio-assets/nftmarket/home.blur.thumb.webp?g=1792566005"
    },
    {
     "src": "/portfolio-assets/nftmarket/market.webp?g=1792556548",
     "thumb": "/portfolio-assets/nftmarket/market.thumb.webp?g=1792556548",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "마켓플레이스 등급별 현황 (메인넷 실데이터)",
     "alt_en": "Marketplace overview with live mainnet data",
     "blur": "/portfolio-assets/nftmarket/market.blur.webp?g=1792566006",
     "blur_thumb": "/portfolio-assets/nftmarket/market.blur.thumb.webp?g=1792566006"
    },
    {
     "src": "/portfolio-assets/nftmarket/listings.webp?g=1792556549",
     "thumb": "/portfolio-assets/nftmarket/listings.thumb.webp?g=1792556549",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "판매 중인 NFT 목록",
     "alt_en": "Live NFT listings",
     "blur": "/portfolio-assets/nftmarket/listings.blur.webp?g=1792566006",
     "blur_thumb": "/portfolio-assets/nftmarket/listings.blur.thumb.webp?g=1792566006"
    }
   ],
   "featured": false,
   "order": 7
  },
  {
   "slug": "bgsc-vault",
   "title": "Bugs Vault",
   "subtitle_ko": "BSC 라운드형 BGSC 예치 볼트 dApp",
   "subtitle_en": "Round-based BGSC deposit vault dApp on BSC",
   "category": "DeFi",
   "summary_ko": "BSC 메인넷의 BugsDepositVault 컨트랙트에 연결된 예치 dApp 프런트엔드입니다. 28일 라운드 기반 예치/출금 대기열, 포인트당 가치(pricePerShare), TVL을 멀티콜로 일괄 조회하고, 화이트리스트(머클 증명) 접근 제어와 RainbowKit/wagmi 지갑 연결을 구현했습니다. 데모는 지갑 없이 메인넷 볼트의 실시간 TVL·지표를 읽어 표시합니다.",
   "summary_en": "Frontend for the BugsDepositVault contract on BSC mainnet. Handles 28-day round deposits and queued withdrawals, batches pricePerShare/TVL reads via multicall, and gates access with a Merkle-proof whitelist plus RainbowKit/wagmi wallet connection. The demo shows live mainnet TVL and vault metrics without a wallet.",
   "highlights_ko": [
    "BSC 메인넷 볼트 실시간 조회 (TVL·포인트 가치·라운드)",
    "ethers v6 멀티콜 배치 + 다중 RPC 폴백",
    "28일 라운드 카운트다운, 출금 대기열(queued withdraw) 흐름",
    "머클 증명 화이트리스트, BNB/WBNB 예치 지원",
    "framer-motion 랜딩, 한/영 전환",
    "전 과정 자체 개발: 볼트 dApp 프런트·온체인 연동·화이트리스트 머클 증명"
   ],
   "highlights_en": [
    "Live BSC mainnet vault reads (TVL, price per point, round)",
    "ethers v6 multicall batching with multi-RPC fallback",
    "28-day round countdown and queued-withdrawal flow",
    "Merkle-proof whitelist; BNB/WBNB deposits",
    "framer-motion landing, KO/EN toggle",
    "Built end-to-end in-house: vault dApp frontend, on-chain integration, Merkle whitelist"
   ],
   "stack": [
    "React",
    "wagmi",
    "viem",
    "ethers v6",
    "RainbowKit",
    "framer-motion",
    "styled-components",
    "BSC"
   ],
   "status": "live",
   "demo_url": "/bgsc-vault/",
   "shots": [
    {
     "src": "/portfolio-assets/bgsc-vault/landing.webp?g=1792556546",
     "thumb": "/portfolio-assets/bgsc-vault/landing.thumb.webp?g=1792556546",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "랜딩 히어로",
     "alt_en": "Landing hero",
     "blur": "/portfolio-assets/bgsc-vault/landing.blur.webp?g=1792565994",
     "blur_thumb": "/portfolio-assets/bgsc-vault/landing.blur.thumb.webp?g=1792565994"
    },
    {
     "src": "/portfolio-assets/bgsc-vault/vault.webp?g=1792556546",
     "thumb": "/portfolio-assets/bgsc-vault/vault.thumb.webp?g=1792556547",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "볼트 대시보드 (메인넷 실데이터)",
     "alt_en": "Vault dashboard with live mainnet data",
     "blur": "/portfolio-assets/bgsc-vault/vault.blur.webp?g=1792565994",
     "blur_thumb": "/portfolio-assets/bgsc-vault/vault.blur.thumb.webp?g=1792565994"
    }
   ],
   "featured": false,
   "order": 8
  },
  {
   "slug": "aden",
   "title": "ADEN",
   "subtitle_ko": "오더북 DEX 무기한 선물거래소",
   "subtitle_en": "Order-book DEX perpetual futures exchange",
   "category": "Landing",
   "summary_ko": "Orderly Network 오더북 유동성 위에서 BTC·ETH·주식·원자재 무기한 선물을 거래하는 탈중앙 선물거래소 ADEN입니다. 거래 터미널(차트·호가·주문·포지션)과 마켓 화면, 공식 랜딩까지 서비스 전반을 개발해 실서비스로 운영 중입니다.",
   "summary_en": "ADEN, a decentralized perpetual-futures exchange trading BTC, ETH, equities and commodities on Orderly Network order-book liquidity. Trading terminal (chart, order book, orders, positions), markets view and the official landing — live in production.",
   "highlights_ko": [
    "오더북 기반 무기한 선물 트레이딩 터미널",
    "암호화폐·미국 주식·원자재 등 멀티 마켓",
    "지갑 연결 기반 셀프 커스터디 거래",
    "Astro 랜딩 — 수수료 비교·보안 감사·파트너 소개"
   ],
   "highlights_en": [
    "Order-book perpetual futures trading terminal",
    "Multi-market: crypto, US equities, commodities",
    "Self-custodial trading via wallet connection",
    "Astro landing — fee comparison, audits, partners"
   ],
   "stack": [
    "Astro",
    "Tailwind CSS",
    "TypeScript"
   ],
   "status": "service",
   "shots": [
    {
     "src": "/portfolio-assets/aden/perp-btc.webp?g=1792566181",
     "thumb": "/portfolio-assets/aden/perp-btc.thumb.webp?g=1792566181",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "ADEN BTC 무기한 선물 거래 화면",
     "alt_en": "ADEN BTC perpetual trading",
     "blur": "/portfolio-assets/aden/perp-btc.blur.webp?g=1792566267",
     "blur_thumb": "/portfolio-assets/aden/perp-btc.blur.thumb.webp?g=1792566267"
    },
    {
     "src": "/portfolio-assets/aden/perp-eth.webp?g=1792566181",
     "thumb": "/portfolio-assets/aden/perp-eth.thumb.webp?g=1792566182",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "ADEN ETH 무기한 선물 거래 화면",
     "alt_en": "ADEN ETH perpetual trading",
     "blur": "/portfolio-assets/aden/perp-eth.blur.webp?g=1792566268",
     "blur_thumb": "/portfolio-assets/aden/perp-eth.blur.thumb.webp?g=1792566268"
    },
    {
     "src": "/portfolio-assets/aden/markets.webp?g=1792566182",
     "thumb": "/portfolio-assets/aden/markets.thumb.webp?g=1792566182",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "ADEN 마켓 목록",
     "alt_en": "ADEN markets",
     "blur": "/portfolio-assets/aden/markets.blur.webp?g=1792566268",
     "blur_thumb": "/portfolio-assets/aden/markets.blur.thumb.webp?g=1792566268"
    },
    {
     "src": "/portfolio-assets/aden/perp-mobile.webp?g=1792566183",
     "thumb": "/portfolio-assets/aden/perp-mobile.thumb.webp?g=1792566183",
     "w": 1080,
     "h": 2340,
     "kind": "mobile",
     "alt_ko": "ADEN 모바일 거래 화면",
     "alt_en": "ADEN mobile trading",
     "blur": "/portfolio-assets/aden/perp-mobile.blur.webp?g=1792566268",
     "blur_thumb": "/portfolio-assets/aden/perp-mobile.blur.thumb.webp?g=1792566269"
    }
   ],
   "featured": false,
   "order": 9,
   "live_url": "https://perp.aden.io"
  },
  {
   "slug": "simplewallet",
   "title": "SoftDev Wallet",
   "subtitle_ko": "논커스터디 EVM 지갑 — 안드로이드 앱 + Chrome 확장 전체 개발",
   "subtitle_en": "Non-custodial EVM wallet — Android app + Chrome extension, built end-to-end",
   "category": "Blockchain | Mobile",
   "summary_ko": "시드구문·개인키를 기기 안에서만 암호화해 보관하는 이더리움·EVM 지갑을 모바일 앱과 브라우저 확장까지 전부 직접 개발했습니다. 운영사 서버·분석·광고 없이 React Native(Expo) 앱과 Chrome 확장(MV3)을 하나의 모노레포에서 만들었고, dApp 서명 요청을 해독해 무제한 승인·Permit·피싱을 경고합니다.",
   "summary_en": "An Ethereum/EVM wallet that encrypts seeds and keys on-device only — mobile app and browser extension built end-to-end in-house, from one monorepo (React Native/Expo + Chrome MV3) with no backend, analytics or ads. It decodes dApp signature requests and warns on unlimited approvals, Permits and phishing.",
   "highlights_ko": [
    "Ethereum·BNB·Polygon·Arbitrum·Base 등 멀티체인, 커스텀 EVM 네트워크",
    "WalletConnect·EIP-5792 일괄 승인, Seaport·Blur·UniswapX 서명 요약",
    "토큰 사용 권한 조회·철회, EIP-7702 위임·주소 바꿔치기 경고",
    "LI.FI 스왑, 막힌 거래 가속·취소, 거래내역 CSV 내보내기",
    "확장 설치: zip 다운로드·압축 해제 → chrome://extensions → 개발자 모드 켜기 → '압축해제된 확장 프로그램 로드'에서 폴더 선택",
    "전 과정 자체 개발: 키 암호화·서명 해독·멀티체인·모바일 앱·브라우저 확장"
   ],
   "highlights_en": [
    "Multi-chain: Ethereum, BNB, Polygon, Arbitrum, Base and any custom EVM network",
    "WalletConnect, EIP-5792 batched approvals, Seaport/Blur/UniswapX signature summaries",
    "Token-approval review & revoke; EIP-7702 delegation and look-alike address warnings",
    "LI.FI swaps, speed-up/cancel stuck transactions, activity CSV export",
    "Install the extension: download & unzip → chrome://extensions → enable Developer mode → 'Load unpacked' and pick the folder",
    "Built end-to-end in-house: key encryption, signature decoding, multichain, mobile app, browser extension"
   ],
   "stack": [
    "React Native",
    "Expo",
    "TypeScript",
    "Chrome Extension MV3",
    "viem"
   ],
   "status": "archived",
   "downloads": [
    {
     "label": "Android APK 1.2.2",
     "url": "/portfolio-assets/simplewallet/softdev-wallet-1.2.2-release.apk?g=1792555372",
     "sha256": "b742d06dd21cf1bf0804a10f7b3c611822d986d9a934b1f9a80b77cebd2066f7",
     "size": "72 MB"
    },
    {
     "label": "Chrome 확장 / Extension (zip)",
     "url": "/portfolio-assets/simplewallet/softdev-wallet-extension.zip?g=1792555372",
     "sha256": "da2dd5e46e087c25a0ef1244fe8685ca761555473c9e17e615fec8ded73f366f"
    }
   ],
   "shots": [
    {
     "src": "/portfolio-assets/simplewallet/10-home-assets.webp?g=1792555370",
     "thumb": "/portfolio-assets/simplewallet/10-home-assets.thumb.webp?g=1792555370",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "홈 · 자산",
     "alt_en": "Home · assets",
     "blur": "/portfolio-assets/simplewallet/10-home-assets.blur.webp?g=1792566006",
     "blur_thumb": "/portfolio-assets/simplewallet/10-home-assets.blur.thumb.webp?g=1792566006"
    },
    {
     "src": "/portfolio-assets/simplewallet/11-home-activity.webp?g=1792555370",
     "thumb": "/portfolio-assets/simplewallet/11-home-activity.thumb.webp?g=1792555371",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "홈 · 거래내역(가속/취소)",
     "alt_en": "Home · activity with speed-up/cancel",
     "blur": "/portfolio-assets/simplewallet/11-home-activity.blur.webp?g=1792566007",
     "blur_thumb": "/portfolio-assets/simplewallet/11-home-activity.blur.thumb.webp?g=1792566007"
    },
    {
     "src": "/portfolio-assets/simplewallet/12-send-form.webp?g=1792555371",
     "thumb": "/portfolio-assets/simplewallet/12-send-form.thumb.webp?g=1792555371",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "보내기 입력",
     "alt_en": "Send form",
     "blur": "/portfolio-assets/simplewallet/12-send-form.blur.webp?g=1792566007",
     "blur_thumb": "/portfolio-assets/simplewallet/12-send-form.blur.thumb.webp?g=1792566007"
    },
    {
     "src": "/portfolio-assets/simplewallet/13-send-review.webp?g=1792555371",
     "thumb": "/portfolio-assets/simplewallet/13-send-review.thumb.webp?g=1792555371",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "보내기 확인(수수료·총액)",
     "alt_en": "Send review with fees and total",
     "blur": "/portfolio-assets/simplewallet/13-send-review.blur.webp?g=1792566007",
     "blur_thumb": "/portfolio-assets/simplewallet/13-send-review.blur.thumb.webp?g=1792566007"
    },
    {
     "src": "/portfolio-assets/simplewallet/14-receive.webp?g=1792555371",
     "thumb": "/portfolio-assets/simplewallet/14-receive.thumb.webp?g=1792555371",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "받기 QR",
     "alt_en": "Receive QR",
     "blur": "/portfolio-assets/simplewallet/14-receive.blur.webp?g=1792566007",
     "blur_thumb": "/portfolio-assets/simplewallet/14-receive.blur.thumb.webp?g=1792566007"
    },
    {
     "src": "/portfolio-assets/simplewallet/16-networks.webp?g=1792555371",
     "thumb": "/portfolio-assets/simplewallet/16-networks.thumb.webp?g=1792555371",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "네트워크 관리",
     "alt_en": "Network management",
     "blur": "/portfolio-assets/simplewallet/16-networks.blur.webp?g=1792566008",
     "blur_thumb": "/portfolio-assets/simplewallet/16-networks.blur.thumb.webp?g=1792566008"
    },
    {
     "src": "/portfolio-assets/simplewallet/18-settings.webp?g=1792555372",
     "thumb": "/portfolio-assets/simplewallet/18-settings.thumb.webp?g=1792555372",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "설정",
     "alt_en": "Settings",
     "blur": "/portfolio-assets/simplewallet/18-settings.blur.webp?g=1792566008",
     "blur_thumb": "/portfolio-assets/simplewallet/18-settings.blur.thumb.webp?g=1792566008"
    },
    {
     "src": "/portfolio-assets/simplewallet/33-approve-tx.webp?g=1792555372",
     "thumb": "/portfolio-assets/simplewallet/33-approve-tx.thumb.webp?g=1792555372",
     "w": 720,
     "h": 1200,
     "kind": "mobile",
     "alt_ko": "dApp 거래 승인 · 무제한 권한 경고",
     "alt_en": "dApp transaction approval with unlimited-allowance warning",
     "blur": "/portfolio-assets/simplewallet/33-approve-tx.blur.webp?g=1792566008",
     "blur_thumb": "/portfolio-assets/simplewallet/33-approve-tx.blur.thumb.webp?g=1792566008"
    }
   ],
   "featured": false,
   "order": 10
  },
  {
   "slug": "graynews",
   "title": "GRAY NEWS",
   "subtitle_ko": "국내 언론사 뉴스 플랫폼 — 사이트·기사 CMS 전체 개발",
   "subtitle_en": "Korean news outlet platform — full site & newsroom CMS",
   "category": "Media | Web App",
   "summary_ko": "국내 언론사 그레이뉴스(graynews.co.kr)의 뉴스 사이트와 기사 관리 CMS를 처음부터 전부 직접 개발해 실제 운영 중입니다. 기사 작성·검수 워크플로, 외부 뉴스 자동수집, 영상 채널 연동, 회원·소셜 로그인, 감사 로그까지 편집국 업무 전체를 하나의 시스템으로 묶었습니다.",
   "summary_en": "The news site and newsroom CMS of Korean outlet GRAY NEWS (graynews.co.kr), built from scratch and running in production. Article drafting and review, automated news ingestion, video channels, membership/social login and audit logs live in one system.",
   "highlights_ko": [
    "서버 사이드 렌더링 뉴스 사이트 — 빠른 첫 화면과 검색 노출",
    "외부 기사 자동수집 → 편집국 검수 대기열",
    "기사 에디터·권한·감사 로그·로그인 스로틀링",
    "유튜브·네이버TV 채널 연동, SNS 발행 아웃박스",
    "기획부터 운영까지 전체 직접 개발·운영"
   ],
   "highlights_en": [
    "Server-rendered news site — fast first paint and SEO",
    "Automated external article ingestion into a review queue",
    "Article editor, roles, audit log, login throttling",
    "YouTube / Naver TV channels, social publishing outbox",
    "Designed, built and operated end-to-end in-house"
   ],
   "stack": [
    "TypeScript",
    "SSR",
    "SQL",
    "Object Storage"
   ],
   "status": "service",
   "live_url": "https://graynews.co.kr",
   "shots": [
    {
     "src": "/portfolio-assets/graynews/home@desktop.webp?g=1792555641",
     "thumb": "/portfolio-assets/graynews/home@desktop.thumb.webp?g=1792555641",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "메인 페이지",
     "alt_en": "Front page",
     "blur": "/portfolio-assets/graynews/home@desktop.blur.webp?g=1792566004",
     "blur_thumb": "/portfolio-assets/graynews/home@desktop.blur.thumb.webp?g=1792566004"
    },
    {
     "src": "/portfolio-assets/graynews/article@desktop.webp?g=1792555641",
     "thumb": "/portfolio-assets/graynews/article@desktop.thumb.webp?g=1792555642",
     "w": 2400,
     "h": 1500,
     "kind": "desktop",
     "alt_ko": "기사 페이지",
     "alt_en": "Article page",
     "blur": "/portfolio-assets/graynews/article@desktop.blur.webp?g=1792566004",
     "blur_thumb": "/portfolio-assets/graynews/article@desktop.blur.thumb.webp?g=1792566004"
    },
    {
     "src": "/portfolio-assets/graynews/home@mobile.webp?g=1792555642",
     "thumb": "/portfolio-assets/graynews/home@mobile.thumb.webp?g=1792555642",
     "w": 780,
     "h": 1688,
     "kind": "mobile",
     "alt_ko": "모바일 메인",
     "alt_en": "Mobile front page",
     "blur": "/portfolio-assets/graynews/home@mobile.blur.webp?g=1792566005",
     "blur_thumb": "/portfolio-assets/graynews/home@mobile.blur.thumb.webp?g=1792566005"
    }
   ],
   "featured": false,
   "order": 11
  }
 ]
}