About this project

ECK (Ethereum Collective Korea) is a nonprofit team building public goods for the Korean Ethereum ecosystem; this repository serves as its official website and hub for research, news, and events. "The Ticker is ETH" is a Telegram channel initiative run by the team. Tech stack: React 19 + TypeScript + Vite, Tailwind CSS 3 + Framer Motion, Three.js / React Three Fiber (3D), React Router DOM 7, react-i18next (Korean/English toggle). Authentication uses Privy (wallet, Google, and Twitter login plus embedded wallet); on-chain features use thirdweb (ERC-1155 badges, Base·Ethereum multi-chain). Testing with Vitest + Testing Library, input sanitization with DOMPurify (XSS prevention), notifications via Sonner toasts; theme supports dark/light mode through CSS variables and Tailwind dark: classes. Key pages and features include: Hero section with member avatar animations; Core Team and Contributors profiles (social links, contribution heatmaps, statistics banners); Research blog with read/write capability (passphrase authentication, Telegram categories, dynamic loading with Load More pagination, author filtering, debounced search); RSS-based News page (Ethereum weekly research reports); Events page; Profile page; 404 page and ErrorBoundary. Desktop includes an Ethereum diamond custom cursor with trail effects, on-chain contributor badge claim/mint flow with success/failure toast feedback, and social share buttons on Research/News detail pages. Accessibility features mention i18n skip navigation, focus traps, label associations, and aria-live. Code splitting by route (React.lazy + Suspense) is employed. Data sync: GitHub Actions cron collects Telegram channel data and preprocesses it daily at 09:00 KST, generating individual article .md files, then fetches the RSS news feed and commits. Manual execution is available from the Actions tab; requires TELEGRAM_API_ID, TELEGRAM_API_HASH, and TELEGRAM_SESSION secrets. Contribution analysis is based on Telegram channel messages. Development: npm install, copy .env.example to .env.local, set VITE_PRIVY_APP_ID, run npm run dev. Scripts provided: dev, build, preview, test, test:run, test:coverage, lint, analyze (bundle size analysis), fetch:telegram, preprocess:telegram, fetch:news. Auto-deploys via Vercel on main branch push. Environment variables: Privy app ID, thirdweb client ID, and ERC-1155 badge contract addresses for Base and Ethereum respectively. Remaining TODOs: image design for 4 badge types (Core Contributor, Translator, Event Attendee, Research Author), ERC-1155 contract deployment on Ethereum Mainnet, separation of badge contract address into environment variables, Vercel environment variable sync. License: MIT. CONTRIBUTING.md and bug report / feature request issue templates are provided.