--- const projects = [ { name: 'EPC : Finale Broadcast Manager & Developer', url: 'https://www.youtube.com/playlist?list=PLZeYZotn5_IPFvDUWdEUu9xOBwOkdZ0F0', desc: 'ADOFAI is web-scale', detail: '달성이 주관하고 ADOFAI.gg가 공동 주최하는 Effect Playing Contest : Finale의 방송 화면 및 ARG를 담당하였습니다.', tags: ['React', 'ElysiaJS'], }, { name: 'EPC 2025 Broadcast Manager', url: 'https://www.youtube.com/playlist?list=PLZeYZotn5_IOJDek6e35NKzUtJm09yxZD', desc: 'ADOFAI is web-scale', detail: '달성이 주관하고 ADOFAI.gg가 공동 주최하는 Effect Playing Contest 2025 방송 화면의 대부분의 기능을 개발하였습니다.', tags: ['React', 'ElysiaJS'], }, { name: 'newsletter', url: 'https://github.com/imnyang/newsletter', desc: 'For Memos', detail: '그저 이메일이 오면 Discord 웹훅으로 포워딩합니다.', tags: ['Rust', 'IMAP'] }, { name: 'memos-rss', url: 'https://github.com/imnyang/memos-rss', desc: 'For Memos', detail: 'Discord 포럼 채널에 RSS 피드에 올라온 내용을 포워딩합니다.', tags: ['Rust', 'Discord Bot', 'RSS'] }, { name: 'today.isangjeong', url: 'https://instagram.com/today.isangjeong', desc: 'Instagram Bot', detail: '매일 학교의 급식 메뉴를 자동으로 업로드하는 인스타그램 봇입니다.', tags: ['TypeScript', 'Instagram', '@napi-rs/canvas'] } ]; --- {projects.map((project, idx) => ( = 3 ? 'hidden' : ''}`}> {project.url ? ( {project.name} ) : ( {project.name} )} {project.desc} {project.detail} {project.tags.map((tag) => ( {tag} ))} ))} {projects.length > 3 && ( 더 불러오기 )}
{project.detail}