diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/docs/CNAME b/docs/CNAME
new file mode 100644
index 0000000..708febc
--- /dev/null
+++ b/docs/CNAME
@@ -0,0 +1 @@
+aplayer.js.org
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..70fa2ee
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,398 @@
+---
+search: english
+---
+
+# APlayer
+
+🍭 Wow, such a beautiful HTML5 music player
+
+## Special Sponsors
+
+
+
+
+
+
+
+
+## Installation
+
+Using npm:
+
+```
+npm install aplayer --save
+```
+
+Using Yarn:
+
+```
+yarn add aplayer
+```
+
+## Quick Start
+
+
+
+
+
+```html
+
+
+
+```
+
+```js
+const ap = new APlayer({
+ container: document.getElementById('aplayer'),
+ audio: [{
+ name: 'name',
+ artist: 'artist',
+ url: 'url.mp3',
+ cover: 'cover.jpg',
+ }]
+});
+```
+
+Work with module bundler:
+
+```js
+import 'APlayer/dist/APlayer.min.css';
+import APlayer from 'APlayer';
+
+const ap = new APlayer(options);
+```
+
+## Options
+
+Name | Default | Description
+----|-------|----
+container | document.querySelector('.aplayer') | player container
+mini | false | enable mini mode, [see more details](https://aplayer.js.org/#/home?id=mini-mode)
+autoplay | false | audio autoplay
+theme | '#b7daff' | main color
+loop | 'all' | player loop play, values: 'all', 'one', 'none'
+order | 'list' | player play order, values: 'list', 'random'
+preload | 'auto' | values: 'none', 'metadata', 'auto'
+volume | 0.7 | default volume, notice that player will remember user setting, default volume will not work after user set volume themselves
+audio | - | audio info, should be an object or object array
+audio.name | - | audio name
+audio.artist | - | audio artist
+audio.url | - | audio url
+audio.cover | - | audio cover
+audio.lrc | - | [see more details](https://aplayer.js.org/#/home?id=lrc)
+mutex | true | prevent to play multiple player at the same time, pause other players when this player start play
+lrc | false | [see more details](https://aplayer.js.org/#/home?id=lrc)
+listFolded | false | indicate whether list should folded at first
+listMaxHeight | - | list max height
+
+For example:
+
+
+
+
+
+```js
+const ap = new APlayer({
+ container: document.getElementById('player'),
+ mini: false,
+ autoplay: false,
+ theme: '#FADFA3',
+ loop: 'all',
+ order: 'random',
+ preload: 'auto',
+ volume: 0.7,
+ mutex: true,
+ listFolded: false,
+ listMaxHeight: '90px',
+ lrc: 3,
+ audio: [
+ {
+ name: 'name1',
+ artist: 'artist1',
+ url: 'url1.mp3',
+ cover: 'cover1.jpg',
+ lrc: 'lrc1.lrc'
+ },
+ {
+ name: 'name2',
+ artist: 'artist2',
+ url: 'url2.mp3',
+ cover: 'cover2.jpg',
+ lrc: 'lrc2.lrc'
+ }
+ ]
+});
+```
+
+## API
+
++ `ap.play()`: play audio
+
++ `ap.pause()`: pause audio
+
++ `ap.seek(time: number)`: seek to specified time
+
+ ```js
+ ap.seek(100);
+ ```
+
++ `ap.toggle()`: toggle between play and pause
+
++ `ap.on(event: string, handler: function)`: bind audio and player events, [see more details](https://aplayer.js.org/#/home?id=event-binding)
+
++ `ap.switchAudio(index: number)`: switch audio list
+
+ ```js
+ ap.switchAudio(1);
+ ```
+
++ `ap.addAudio(audio)`: add new audios to the list
+
+ ```js
+ ap.addAudio([
+ {
+ name: 'name',
+ artist: 'artist',
+ url: 'url.mp3',
+ cover: 'cover.jpg',
+ lrc: 'lrc.lrc'
+ }
+ ]);
+ ```
+
++ `ap.removeAudio(index: number)`: remove audio from the list
+
+ ```js
+ ap.removeAudio(1);
+ ```
+
++ `ap.volume(percentage: number, nostorage: boolean)`: set audio volume
+
+ ```js
+ ap.volume(0.1, true);
+ ```
+
++ `ap.destroy()`: destroy player
+
++ `ap.audio`: native audio
+
+ + `ap.audio.currentTime`: returns the current playback position
+
+ + `ap.audio.duration`: returns audio total time
+
+ + `ap.audio.paused`: returns whether the audio paused
+
+ + most [native api](http://www.w3schools.com/tags/ref_av_dom.asp) are supported
+
+## Event binding
+
+`ap.on(event, handler)`
+
+```js
+ap.on('ended', function () {
+ console.log('player ended');
+});
+```
+
+Video events
+
+- abort
+- canplay
+- canplaythrough
+- durationchange
+- emptied
+- ended
+- error
+- loadeddata
+- loadedmetadata
+- loadstart
+- mozaudioavailable
+- pause
+- play
+- playing
+- progress
+- ratechange
+- seeked
+- seeking
+- stalled
+- suspend
+- timeupdate
+- volumechange
+- waiting
+
+Player events
+
+- switchaudio
+- addaudio
+- removeaudio
+- destroy
+
+## LRC
+
+We have three ways to pass LRC to APlayer, indicate the way to pass LRC by option `lrc`, then put lrc to option `audio.lrc` or HTML.
+
+
+
+
+
+### LRC file
+
+The first way, put LRC to a LRC file, LRC file will be loaded when this audio start to play.
+
+```js
+const ap = new APlayer({
+ container: document.getElementById('aplayer'),
+ lrc: 3,
+ audio: {
+ name: 'name',
+ artist: 'artist',
+ url: 'demo.mp3',
+ cover: 'demo.jpg',
+ lrc: 'lrc.lrc'
+ }
+});
+```
+
+### LRC string in JS
+
+The second way, put LRC to a JS string.
+
+```js
+const ap = new APlayer({
+ container: document.getElementById('aplayer'),
+ lrc: 1,
+ audio: {
+ name: 'name',
+ artist: 'artist',
+ url: 'demo.mp3',
+ cover: 'demo.jpg',
+ lrc: '[00:00.00]APlayer\n[00:04.01]is\n[00:08.02]amazing'
+ }
+});
+```
+
+### LRC in HTML
+
+The third way, put LRC to HTML.
+
+```html
+
+
+
+
\ No newline at end of file
diff --git a/docs/support.md b/docs/support.md
new file mode 100644
index 0000000..982e79e
--- /dev/null
+++ b/docs/support.md
@@ -0,0 +1,50 @@
+---
+search: english
+---
+
+# Sponsor APlayer Development
+
+APlayer is an MIT licensed open source project and completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing.
+
+If you run a business and are using APlayer in a revenue-generating product, it makes business sense to sponsor APlayer development: it ensures the project that your product relies on stays healthy and actively maintained.
+
+If you are an individual user and have enjoyed the productivity of using APlayer, consider donating as a sign of appreciation - like buying me coffee once in a while :)
+
+You can support APlayer development via the following methods:
+
+## One-time Donations
+
+We accept donations through these channels:
+
+- [Paypal](https://www.paypal.me/DIYgod)
+- [WeChat Pay](https://i.imgur.com/aq6PtWa.png)
+- [Alipay](https://i.imgur.com/wv1Pj2k.png)
+- Bitcoin: 13CwQLHzPYm2tewNMSJBeArbbRM5NSmCD1
+
+## Recurring Pledges
+
+Recurring pledges come with exclusive perks, e.g. having your name or your company logo listed in the APlayer GitHub repository and this website.
+
+- Become a backer or sponsor via [OpenCollective](https://opencollective.com/aplayer)
+- E-mail us: i#html.love
+
+## Current Premium Sponsors
+
+### Special Sponsors
+
+
+
+
+
+
+
+
+### OpenCollective backers
+
+
+
+## APlayer contributors
+
+This project exists thanks to all the people who contribute.
+
+
\ No newline at end of file
diff --git a/docs/zh-Hans/README.md b/docs/zh-Hans/README.md
new file mode 100644
index 0000000..3426852
--- /dev/null
+++ b/docs/zh-Hans/README.md
@@ -0,0 +1,399 @@
+---
+nav: zh-Hans
+search: zh-Hans
+---
+
+# APlayer
+
+🍭 Wow, such a beautiful HTML5 music player
+
+## 特别赞助商
+
+
+
+
+
+
+
+
+## 安装
+
+使用 npm:
+
+```
+npm install aplayer --save
+```
+
+使用 Yarn:
+
+```
+yarn add aplayer
+```
+
+## 入门
+
+