diff --git a/.editorconfig b/.editorconfig
new file mode 100755
index 0000000..7e3649a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,16 @@
+# http://editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[Makefile]
+indent_style = tab
diff --git a/.fatherrc.ts b/.fatherrc.ts
new file mode 100644
index 0000000..cc3a27b
--- /dev/null
+++ b/.fatherrc.ts
@@ -0,0 +1,4 @@
+export default {
+ esm: 'rollup',
+ cjs: 'rollup',
+};
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..131f5f2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/npm-debug.log*
+/yarn-error.log
+/yarn.lock
+/package-lock.json
+
+# production
+/dist
+/docs-dist
+
+# misc
+.DS_Store
+
+# umi
+.umi
+.umi-production
+.umi-test
+.env.local
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..ecb24d3
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,7 @@
+**/*.svg
+**/*.ejs
+**/*.html
+package.json
+.umi
+.umi-production
+.umi-test
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..94beb14
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,11 @@
+{
+ "singleQuote": true,
+ "trailingComma": "all",
+ "printWidth": 80,
+ "overrides": [
+ {
+ "files": ".prettierrc",
+ "options": { "parser": "json" }
+ }
+ ]
+}
diff --git a/.umirc.ts b/.umirc.ts
new file mode 100644
index 0000000..ad8fb13
--- /dev/null
+++ b/.umirc.ts
@@ -0,0 +1,11 @@
+import { defineConfig } from 'dumi';
+
+export default defineConfig({
+ title: 'bici-design',
+ favicon:
+ 'https://user-images.githubusercontent.com/9554297/83762004-a0761b00-a6a9-11ea-83b4-9c8ff721d4b8.png',
+ logo:
+ 'https://user-images.githubusercontent.com/9554297/83762004-a0761b00-a6a9-11ea-83b4-9c8ff721d4b8.png',
+ outputPath: 'docs-dist',
+ // more config: https://d.umijs.org/config
+});
diff --git a/README.md b/README.md
index 987694b..4e7ceef 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,27 @@
-# bici-design
\ No newline at end of file
+# bici-design
+
+## Getting Started
+
+Install dependencies,
+
+```bash
+$ npm i
+```
+
+Start the dev server,
+
+```bash
+$ npm start
+```
+
+Build documentation,
+
+```bash
+$ npm run docs:build
+```
+
+Build library via `father-build`,
+
+```bash
+$ npm run build
+```
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..7972cdc
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1 @@
+## Hello bici-design!
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..49162f0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,43 @@
+{
+ "private": true,
+ "name": "bici-design",
+ "version": "1.0.0",
+ "scripts": {
+ "start": "dumi dev",
+ "docs:build": "dumi build",
+ "docs:deploy": "gh-pages -d docs-dist",
+ "build": "father-build",
+ "deploy": "npm run docs:build && npm run docs:deploy",
+ "release": "npm run build && npm publish",
+ "prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\"",
+ "test": "umi-test",
+ "test:coverage": "umi-test --coverage"
+ },
+ "main": "dist/index.js",
+ "module": "dist/index.esm.js",
+ "typings": "dist/index.d.ts",
+ "gitHooks": {
+ "pre-commit": "lint-staged"
+ },
+ "lint-staged": {
+ "*.{js,jsx,less,md,json}": [
+ "prettier --write"
+ ],
+ "*.ts?(x)": [
+ "prettier --parser=typescript --write"
+ ]
+ },
+ "dependencies": {
+ "react": "^16.12.0"
+ },
+ "devDependencies": {
+ "@umijs/preset-react": "1.x",
+ "@umijs/test": "^3.0.5",
+ "dumi": "^1.0.8",
+ "father-build": "^1.17.2",
+ "gh-pages": "^3.0.0",
+ "lint-staged": "^10.0.7",
+ "prettier": "^1.19.1",
+ "yorkie": "^2.0.0"
+ }
+}
diff --git a/src/Foo/index.md b/src/Foo/index.md
new file mode 100644
index 0000000..bf3353c
--- /dev/null
+++ b/src/Foo/index.md
@@ -0,0 +1,12 @@
+## Foo
+
+Demo:
+
+```tsx
+import React from 'react';
+import { Foo } from 'bici-design';
+
+export default () =>