최근들어 공부하고 블로그 쓰고, 공부하고 블로그 쓰는 코드를 잘 안 쓰는 나날들이 계속되다 보니깐 손가락이 굳어가는 느낌과 살짝 지루하다는 생각이 들어서 공부한걸 써보면서 실습해보는 기회로 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을 작업할지 말지 결정하자!