강의

멘토링

로드맵

Inflearn brand logo image
NEW
개발 · 프로그래밍

/

웹 개발

Vanilla JavaScript로 직접 구현하는 Notion

이 강의는 Vanilla JavaScript로 Notion을 처음부터 끝까지 직접 구현하며, 단순한 UI 클론을 넘어서 내부 동작 원리를 깊이 이해하는 데 초점을 맞춘 풀스택 수준의 프런트엔드 프로젝트 과정입니다. 사이드바 트리, 중첩 문서 생성, 자동 저장, 라우팅, 휴지통, 즐겨찾기, 검색 모달, 설정 모달, 테마 전환, Export/Import, 키보드 단축키, 반응형 레이아웃, 드래그 리사이즈 등 실제 노트 앱의 핵심 기능을 모두 바닐라 JS로 직접 구현합니다. React, Vue 같은 프레임워크 이전에 반드시 알아야 할 브라우저 표준 동작(이벤트 버블링, DOM 트리, 로컬 스토리지, Blob, FileReader, 해시 라우팅 등)을 탄탄하게 학습해, “왜 이렇게 동작하는가”를 완전히 이해하고 디버깅할 수 있는 내공을 쌓는 것이 목표입니다.

9명 이 수강하고 있어요.

  • nhcodingstudio
실습 중심
토이프로젝트
프론트엔드
클론코딩
웹개발
JavaScriptReact웹앱DOMfrontend

이런 걸 배울 수 있어요

  • Vanilla JS 기반 대규모 앱 아키텍처 설계

  • 단방향 데이터 흐름과 화면 동기화

  • 해시 라우팅과 주소 동기화

  • 사이드바 트리 & 중첩 문서 모델링

  • 중첩 문서 생성 UX(생성→가시성→편집)

  • 에디터 입력·서식·툴바 연결

  • 자동 저장과 디바운스 전략(부하·안전·즉시성의 균형)

  • 로컬 스토리지 스냅샷·스키마 가드

  • 휴지통(소프트 삭제)·복원·영구 삭제

  • 즐겨찾기와 파생 목록 렌더링

  • 이모지 선택기·바깥 클릭 닫힘·위치 계산

  • 검색 모달: 실시간 필터 & 키보드 내비게이션

  • 설정 모달과 테마 전환: <html data-theme> + CSS 변수

  • 사이드바 폭 제어·애니메이션·반응형 대응

  • Export/Import·단축키·에러 핸들링

📒 Vanilla JS로 Notion 앱 만들기

이 강의는 Vanilla JavaScript만으로 Notion 스타일의 문서 관리 앱을 처음부터 끝까지 직접 구현하는 과정입니다. React, Vue 같은 프레임워크를 쓰지 않고 순수 JS, HTML, CSS로만 완성하기 때문에, 프론트엔드의 근본 원리를 제대로 이해할 수 있습니다.

요즘 클론 코딩 강의들은 프레임워크로 UI를 흉내 내는 경우가 많습니다. 물론 도움이 되지만, 결국 React나 Vue도 내부에서는 DOM 조작과 상태 관리, 이벤트 시스템Vanilla JS로 처리합니다.
따라서 프레임워크를 제대로 이해하고 디버깅까지 잘하려면,
근본적인 JS 동작 원리와 브라우저 렌더링 구조를 알아야 합니다. 이 강의는 바로 그 기초를, 실무에서 쓸 수 있는 완성 프로젝트를 만들면서 자연스럽게 익히도록 설계되었습니다.

🚀 왜 Vanilla JS로 Notion인가?

우리가 매일같이 쓰는 Notion, 그 내부는 어떤 원리로 돌아갈까요?
ReactVue 같은 프레임워크로 클론하는 강의는 많지만, 결국 그 밑바닥에는 Vanilla JS와 DOM이 있습니다. 이 강의에서는 프레임워크 없이, HTML·CSS·JavaScript만으로 실제 Notion 스타일 앱을 처음부터 끝까지 구현하면서 그 원리를 제대로 배우게 됩니다.

단순히 UI를 흉내 내는 것이 아니라, 문서 데이터 계층, UI 렌더링, 이벤트·라우팅 상호작용이라는 세 축으로 아키텍처를 설계하고, 실제로 동작하는 앱을 완성합니다.

강의 소개

앱은 크게 세 가지 층위에서 동작합니다.

첫째는 데이터 계층으로, 문서 목록, 즐겨찾기, 휴지통, 현재 활성 문서, 사이드바 상태 등을 하나의 state 객체에서 관리합니다. 이 데이터는 localStorage와 연결되어, 새로고침 후에도 동일한 상태를 그대로 복원합니다.

둘째는 렌더링 계층입니다. 사이드바 트리, 본문 영역, 휴지통 목록, 즐겨찾기 모달 등은 모두 상태를 기반으로 DOM을 다시 그려내는 구조로 되어 있습니다. 원칙은 언제나 “상태 → 화면”이며, 이 단방향 흐름 덕분에 복잡한 부분 업데이트 없이도 데이터와 화면이 일관되게 유지됩니다.

셋째는 상호작용 계층입니다. 클릭, 입력, 단축키, 라우팅, 모달 열림/닫힘, 사이드바 드래그 같은 동작이 모두 이벤트 리스너를 통해 발생합니다. 이벤트는 상태를 바꾸고, 다시 렌더링 계층이 반응하는 순환 구조 속에서 앱이 안정적으로 동작합니다.

이 강의의 핵심은 단순히 “버튼이 동작한다”가 아니라, 그 동작이 어떤 원리로 가능해지는지를 코드 단위로 이해하는 데 있습니다.

  • 사이드바 폭 조절은 mousedown → mousemove → mouseup 흐름과 CSS 커스텀 속성이 어떻게 맞물리는지,

  • 검색 모달은 입력 이벤트와 키보드 내비게이션, ESC·배경 클릭 처리까지 UX 전체가 어떻게 완성되는지,

  • 테마 전환은 체크박스 하나와 data-theme 속성, localStorage 저장이 어떻게 결합하는지,

이 모든 과정을 눈으로 확인하며 따라가게 됩니다.

🔑 구현 기능

이 강의에서 직접 구현해보는 기능들은 모두 실무 앱의 뼈대를 이루는 요소들입니다.

📂 문서 트리 구조 & 중첩 문서 생성: 부모-자식 관계를 가진 계층적 사이드바 구현


인라인 이름 바꾸기: 더블클릭/F2로 제목을 즉시 수정

🗑 휴지통 관리: 문서 삭제 → 휴지통 이동 → 복원/영구삭제 전체 흐름 구현

즐겨찾기 모달: 중요 문서를 빠르게 고정하고 접근


🔍 검색 모달: 입력 즉시 필터링, 키보드 화살표/엔터 탐색 지원

설정 모달: 라이트·다크 테마 전환, localStorage 영구 저장

키보드 단축키: Ctrl/Command+K 검색, Ctrl/Command+Shift+N 새 문서,
F2 이름 바꾸기

📏 사이드바 폭 제어: 버튼 접기/펼치기, 드래그 리사이즈, 모바일 자동 접힘


🔄 라우팅 & 상태 복원: 해시 기반 내비게이션, 새로고침 시 동일 상태 유지

💾 데이터 저장 & 불러오기: localStorage 자동 저장, Export/Import 지원

🧭 라우팅 초기화: 앱 첫 진입 시 “Welcome” 문서로 이동 또는 해시 동기화


📅 메타 정보 표시: “마지막 편집 날짜” 자동 업데이트


🛠 Confirm 모달: 영구 삭제 등 되돌릴 수 없는 작업 확인 절차

🎨 에디터 영역 연동: 제목·본문 입력 즉시 state와 동기화

🔗 상태-렌더링-이벤트 순환 구조: 앱 아키텍처의 핵심 원리 직접 체득

🔑 구현 기능

이 강의에서 직접 구현해보는 기능들은 모두 실무 앱의 뼈대를 이루는 핵심 요소들입니다.

  • 📂 문서 트리 구조 & 중첩 문서 생성: 부모-자식 관계를 가진 계층적 사이드바 구현

  • 인라인 이름 바꾸기: 더블클릭/F2로 제목을 즉시 수정

  • 🗑 휴지통 관리: 문서 삭제 → 휴지통 이동 → 복원/영구삭제

  • 즐겨찾기 모달: 중요 문서를 빠르게 고정하고 접근

  • 🔍 검색 모달: 입력 즉시 필터링, 키보드 화살표/엔터로 탐색

  • 설정 모달: 라이트·다크 테마 전환, localStorage 영구 저장

  • 키보드 단축키: Ctrl/Command+K 검색, Ctrl/Command+Shift+N 새 문서, F2 이름 바꾸기

  • 📏 사이드바 폭 제어: 버튼 접기/펼치기, 드래그 리사이즈, 모바일 자동 접힘

  • 🔄 라우팅 & 상태 복원: 해시 기반 내비게이션, 새로고침 시 동일 상태 유지

  • 💾 데이터 저장 & 불러오기: localStorage 기반 자동 저장과 export/import

  • 🧭 라우팅 초기화: 앱 첫 진입 시 “Welcome” 문서로 이동하거나 해시 동기화

  • 📅 메타 정보 표시: “마지막 편집 날짜” 자동 업데이트

  • 🛠 Confirm 모달: 영구 삭제 등 되돌릴 수 없는 작업에 사용자 확인 절차 추가

  • 🎨 에디터 영역 연동: 제목과 본문 입력이 즉시 state와 동기화

  • 🔗 상태-렌더링-이벤트 순환 구조: 전반적인 앱 아키텍처 학습

🎯 이 강의를 통해 배우는 것들

  1. 중첩 문서 트리 구조를 직접 설계하고 렌더링하기

  2. 라우팅 원리와 URL 해시를 통한 페이지 전환 이해

  3. 상태 관리와 영속화: localStorage를 이용해 앱 데이터 저장·복원

  4. 모달 패턴: 오버레이, ESC 닫기, 배경 클릭 처리, 접근성 고려

  5. 검색 기능: 입력 즉시 필터링, 키보드 내비게이션 로직 구현

  6. 테마 시스템: 라이트·다크 테마 전환과 전역 CSS 변수 관리

  7. 단축키 로직: 키보드 이벤트와 플랫폼별 ctrl/metaKey 처리

  8. 파일 API: Blob과 FileReader를 활용해 JSON 데이터 내보내기/불러오기

  9. 휴지통 복원/삭제 흐름: 데이터 무결성을 지키는 안전 패턴

  10. Confirm 모달: 되돌릴 수 없는 작업 전에 확인 받는 UX 패턴

  11. 사이드바 드래그 리사이즈: 실무에서 자주 쓰이는 레이아웃 제어 기법

  12. 상태 기반 렌더링: "상태 → 화면" 단방향 흐름으로 예측 가능한 UI 보장

  13. 초기화 로직 설계: init() 함수로 앱 실행 전 과정 자동화

  14. 디버깅 방법론: 상태 → 렌더링 흐름을 따라가며 버그 원인 빠르게 찾기

  15. 프레임워크 이해도 상승: React/Vue의 Virtual DOM과 상태 관리가 왜 필요한지 체감

📈 이 강의로 얻을 수 있는 것

  • 상태, DOM, 이벤트를 하나의 시스템으로 연결하는 감각

  • 브라우저 저장소(localStorage)와 상태 동기화 원리 이해

  • 사이드바/모달/검색창 같은 UI 패턴을 처음부터 끝까지 구현하는 경험

  • 이벤트 버블링, stopPropagation, preventDefault를 적재적소에 활용하는 능력

  • CSS 변수와 커스텀 속성을 통해 레이아웃과 테마를 제어하는 방법

  • 반응형 UI와 미디어쿼리를 JS와 결합해 제어하는 기법

  • 실제 Notion 앱에서 볼 수 있는 UX 흐름을 Vanilla JS로 복원하는 경험

  • 프레임워크의 추상화 뒤에 있는 “원래 동작”을 눈으로 확인하는 힘

  • 문제 상황에서 DOM과 이벤트 흐름을 추적하고 디버깅하는 방법

  • 작은 기능 단위에서 전체 앱 아키텍처로 확장해 가는 설계 경험

  • 단축키, 팝오버, 오버레이 같은 실무 인터랙션 구현 능력

  • 새 문서 생성부터 삭제까지 이어지는 전체 문서 수명주기 관리 감각

  • 단순 코드 따라하기가 아니라 “왜 이렇게 동작하는지”를 설명할 수 있는 힘

👩‍💻 이런 분께 추천합니다

  • 단순 기능 따라하기가 아니라 앱의 구조를 깊이 이해하고 싶은 분

  • 프레임워크 이전에 Vanilla JS의 기초 체력을 다지고 싶은 분

  • React/Vue를 배우기 전에 “왜 그렇게 동작하는지” 원리를 알고 싶은 분

  • 클론 코딩을 넘어 자신의 포트폴리오 앱을 직접 만들고 싶은 분

  • 웹 브라우저의 DOM, 이벤트, 저장소 동작을 실무적으로 이해하고 싶은 분

  • 사이드바, 모달, 검색창 등 실무 UI 패턴 구현법을 배우고 싶은 분

  • 작은 프로젝트를 직접 완성하며 프론트엔드 자신감을 얻고 싶은 분

  • 서비스 운영 환경에서 발생하는 UI 문제를 디버깅하고 설명할 수 있는 능력을 기르고 싶은 분

  • Vanilla JS를 기반으로 추후 TypeScript, React, Vue로 자연스럽게 확장하고 싶은 분

  • “코드가 왜 이렇게 돌아가는지” 명확히 설명할 수 있는 개발자가 되고 싶은 분

📌 수강 전 참고 사항

  • HTML/CSS 기본 구조와 자바스크립트 기초 문법을 알고 계시면 원활하게 따라오실 수 있습니다.

  • 특히 addEventListener, if/else, forEach, 객체 접근 방식 정도는 알고 있는 것이 좋습니다.

  • Mac/Windows 환경 모두 수강 가능하며, 별도의 설치 없이 최신 크롬 브라우저만 있으면 바로 실습할 수 있습니다.

마무리

이 강의는 단순한 클론 코딩을 넘어, 프론트엔드 아키텍처의 원리와 실무 패턴을 동시에 익히도록 설계되었습니다. 49강을 모두 마치고 나면, Notion 스타일 앱이 손 안에 완성될 뿐 아니라, React/Vue 같은 프레임워크의 내부 동작을 더 깊게 이해하고 디버깅할 수 있는 눈이 생깁니다.

이제 여러분이 직접 Vanilla JS로 Notion을 만드는 경험을 통해, 프론트엔드 개발자로서 한 단계 성장할 차례입니다. 강의에서 뵙겠습니다. 🚀

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 프레임워크에 앞서 웹의 기본 동작 원리를 제대로 이해하고 싶은 분

  • React나 Vue로 개발해 봤지만 디버깅할 때 막히는 경우가 많은 분

  • 실무에 자주 쓰이는 기능들을 처음부터 끝까지 구현해 보고 싶은 분

  • 인터넷 연결 없이도 동작하는 로컬 우선 앱 구조에 관심 있는 분

  • 취업이나 포트폴리오 준비 중이고 구현 과정을 설명할 수 있는 프로젝트가 필요한 분

  • 백엔드나 풀스택 개발자로서 프론트엔드 구조 이해가 필요한 분

  • 팀에서 공통으로 쓸 수 있는 UI/UX 패턴을 정립하고 싶은 분

  • 브라우저가 가진 한계와 가능성을 이해하고 싶은 디자이너나 기획자

  • 기존에 jQuery나 오래된 코드베이스를 현대적인 JS로 개선해야 하는 분

  • QA나 테스트 업무를 하면서 SPA의 상태 변화를 이해하고 싶은 분

  • React, Vue 같은 프레임워크를 단순히 쓰는 데서 벗어나 내부 원리를 이해하고 싶은 분

  • 접근성과 키보드 중심의 UX에 관심 있는 분

  • 안정적인 사용자 경험을 주고 싶은 분

  • 교육용 데모나 사내 스터디에서 기초부터 프레임워크까지 연결해 설명하고 싶은 멘토

  • 프론트엔드 면접을 준비하면서 시스템 설계와 트레이드오프를 설명할 언어가 필요한 분

선수 지식,
필요할까요?

  • HTML & CSS

  • JavaScript

안녕하세요
입니다.

172

수강생

6

수강평

4.3

강의 평점

10

강의

안녕하세요, 우리동네코딩 스튜디오에 오신 것을 환영합니다!

우리동네코딩 스튜디오는 카네기 멜론, 워싱턴, 토론토, 워터루 등 북미의 주요 대학에서 컴퓨터공학을 전공하고, Google, Microsoft, Meta 등 글로벌 IT 기업에서 실무 경험을 쌓은 개발자들이 함께 만든 교육 그룹입니다.

처음에는 미국과 캐나다의 컴퓨터공학 전공자들끼리 함께 공부하며 성장하고자 만든 스터디 모임에서 시작되었습니다. 각기 다른 대학, 다른 시간대에 있었지만 함께 문제를 해결하고 서로에게 배운 그 시간은 매우 특별했고, 자연스럽게 이런 생각이 들었습니다.

“우리가 공부하던 이 방식, 그대로 다른 사람에게도 전하면 어떨까?”

그 물음이 바로 우리동네코딩 스튜디오의 출발점이었습니다.

현재는 약 30명의 현직 개발자와 컴퓨터공학 전공 대학생들이 각자의 전문 분야를 맡아, 입문부터 실전까지 아우르는 커리큘럼을 직접 설계하고 강의합니다. 단순한 지식 전달을 넘어, 진짜 개발자의 시선으로 배우고 함께 성장할 수 있는 환경을 제공합니다.

“진짜 개발자는, 진짜 개발자에게 배워야 합니다.”

저희는 웹 개발의 전 과정을 처음부터 끝까지 체계적으로 다루되, 이론에 머무르지 않고 실습과 실전 중심의 피드백을 통해 실력을 키워드립니다.
수강생 한 사람, 한 사람의 성장을 함께 고민하고 이끌어가는 것이 우리의 철학입니다.

🎯 우리의 철학은 분명합니다.
"진정한 배움은 실천에서 오고, 성장은 함께할 때 완성된다."

개발을 처음 시작하는 입문자부터, 실무 능력을 키우고 싶은 취업 준비생, 진로를 탐색 중인 청소년까지.
우리동네코딩 스튜디오는 모두의 출발점이자, 함께 걷는 든든한 동반자가 되고자 합니다.

이제, 혼자 고민하지 마세요.
우리동네코딩 스튜디오가 여러분의 성장을 함께하겠습니다.


Welcome to Neighborhood Coding Studio!

Neighborhood Coding Studio was founded by a team of developers who studied computer science at top North American universities such as Carnegie Mellon, the University of Washington, the University of Toronto, and the University of Waterloo, and went on to gain hands-on experience at global tech companies like Google, Microsoft, and Meta.

It all began as a study group formed by computer science students across the U.S. and Canada, created to grow together by sharing knowledge, solving problems, and learning from one another.
Though we were attending different schools in different time zones, the experience was so meaningful that it led us to one simple thought:

“What if we shared this way of learning with others?”

That thought became the foundation of Neighborhood Coding Studio.

Today, we are a team of around 30 active developers and computer science students, each taking responsibility for their area of expertise—designing and delivering a curriculum that spans from foundational knowledge to real-world development.
We’re not just here to teach—we’re here to help you see through the lens of real developers and grow together.

“To become a real developer, you must learn from real developers.”

Our courses take you through the entire web development journey—from start to finish—focused on hands-on practice, real-world projects, and practical feedback.
We care deeply about each learner’s growth and are committed to supporting your path every step of the way.

🎯 Our philosophy is simple but powerful:
"True learning comes from doing, and true growth happens together."

Whether you're just getting started, preparing for your first job, or exploring your future in tech,
Neighborhood Coding Studio is here to be your launchpad—and your trusted companion on the journey.

You don’t have to do it alone.
Let Neighborhood Coding Studio walk with you toward your future in development.

커리큘럼

전체

51개 ∙ (4시간 49분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

얼리버드 할인 중

₩2,836

39%

₩39,600

nhcodingstudio님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!