
최근들어 공부하고 블로그 쓰고, 공부하고 블로그 쓰는 코드를 잘 안 쓰는 나날들이 계속되다 보니깐 손가락이 굳어가는 느낌과 살짝 지루하다는 생각이 들어서 공부한걸 써보면서 실습해보는 기회로 Nuxt 기반의 Bootstrap4를 사용한 Dashboard를 만들어보려고 합니다.
왜 Dashboard를 만드나?
일반 사이트가 아닌 Dashboard를 선택한 이유는 일반 사이트를 개발하는 것보다 Javascript를 통해 개발해야할 기술적 요소들이 더 많다고 생각했기 때문이다. 일반 페이지의 경우에는 디자인 + CSS 이 더 집중되어 있다면, 대시보드의 경우에는 기능 + Javascript 에 더 집중되어 있고 여기에 디자인 을 MSG로 첨가할 수도 있기 때문이다. 물론 일반 페이지도 기능을 끼워넣으면 되긴 하지만… 대시보드는 이미 기능이 거기서 거기이기 때문에 기능설계에 대한 힘을 덜 수 있다.
Dashboard 구상
Dashboard는 음… 이전에 외주나 개인 프로젝트에서도 만들어봤었지만 큰 차이는 없었다.
Dashboard를 만들기 위한 Resource
Dashboard 템플릿을 만드는 것은 아니니 일단 무엇을 관리하고 어떤 Resource를 관리할지에 대한 시나리오가 있어야 한다. 상상해본것들을 대략 정리해보자면 Resource는 아래와 같다.
- User
- Event
- Admin
- Traffic
- Account
- Transaction
Dashboard 페이지 구상
위에서 정리한 Resource를 기반으로 아래와 같이 구상해봤다.
- Overview
- Traffic & Engagement
- User List
- Event Management
- Profile
- Sign-in
페이지 상세 정의
일단 페이지 구상이 끝났으니 페이지의 컨텐츠를 채워보자.
Overview
- Total Visitor- 상단
- 3
- Index
- 전월대비 지수 (%)
 
- New Visitors & Users- 상단
- 3
- Index
- 전월대비 지수 (%)
 
- Traffic Share - 상단
- 3
- Index
- Share Type: Desktop, Mobile
- Unit (%)
 
- Views Per Minute- 상단
- 3
- Pie Chart
- 전주대비 지수 (%)
 
- Channels- 중단
- 3
- Donut Chart
- Channel Type: Organic Search, Direct, Social, Paid
 
- Visit by Notification- 중단
- 9
- Push
- Direct
 
- Sales Value- 하단
- 6
- Linear Graph
- 전월대비 지수 (%)
- Data: 2 Weaks
 
- Event Rank- 하단
- 6
- Table
- Top 10
- Column: Name, Views, Sales, Bounce rate
 
Traffic & Engagement
- Traffic Share- 6
- 전월대비 지수 (%)
- Donut Chart
- Organic Search
- Direct
- Social
- Paid
- Push
 
- Traffic Volumes by Source- 6
- 일주일치 데이터
- Line Graph
- Organic Search
- Direct
- Social
- Paid
- Push
 
- Traffic Source Table- 12
- Table
- Column: Traffic Source, Source Type, Share, Changes(from the previous week)
 
User List
- Search- Simple Search
- Detail Search
 
- Sorting- ASC / DESC
- Condition
 
- Table- 12
- Column: Action CheckBox, Name, Date Created, Paid, Notification, Recent, Action
 
- Pagination- Buttons: Prev,(numbers),Next
 
- Buttons: 
Event Management
- Search- 6
- Simple Search
- Detail Search
 
- Sorting- 6
- ASC / DESC,
- Condition
 
- Table- 12
- Column: Index, Title, Date Created, Open Date, Close Date, Margin, Status, Action
 
- Pagination- Buttons: Prev,(numbers),Next
 
- Buttons: 
Profile
- General information- 12
- Form
- Field: First Name, Last Name, Birthday, Email, Department
 
Sign-in
- Form- 4
- Form
- Field: Email, Password
 
- Password Reset Require- 12
- Button
 
- Login- Button
 
- Error Message- Text
 
개발
기본적으로 Nuxt, Bootstrap & Bootstrap-vue를 기반으로 개발할 것입니다.
개발 환경
- Nuxt (SSR)
- Express (API)
- Heroku
- Git & Github
- Bootstrap & Bootstrap-vue
- Chart.js (Client)
- Axios
개발 순서
- 프로젝트 생성 및 Github Repository 환경구성
- Heroku 배포 환경구성
- Nuxt & Express API 환경구성
- Axios
- Bootstrap & Bootstrap-vue 환경구성
- Page & UI 개발- Chart.js
 
Reference
- Benchmark Site 
- Nuxt Module 
- Nuxt & Express 
- Nuxt & Bootstrap-vue 
- Nuxt & Chart.js 
- Chart.js 
- ETC 
정리
이번 프로젝트의 최대 목표는 ASAP 이다.
- 가능한 빠르게! 만드는 것이 목표!
- 중간중간 배우고 사용한걸 정리하자!
- 개발이 완료되고 스케줄을 고려해서 transition을 작업할지 말지 결정하자!