gitextract_xfkpu7cw/ ├── .coveralls.yml ├── .credo.exs ├── .formatter.exs ├── .github/ │ └── workflows/ │ └── elixir.yml ├── .gitignore ├── .iex.exs ├── .travis.yml ├── LICENSE ├── Makefile ├── Procfile ├── README.ZH.md ├── README.md ├── assets/ │ ├── .eslintrc.json │ ├── .yarnrc │ ├── css/ │ │ ├── admin.scss │ │ ├── app/ │ │ │ └── components/ │ │ │ ├── _footer.scss │ │ │ ├── _notification.scss │ │ │ ├── base.scss │ │ │ ├── page.scss │ │ │ └── user.scss │ │ ├── app.scss │ │ └── common/ │ │ ├── components/ │ │ │ └── _header.scss │ │ └── variables/ │ │ └── mipha.scss │ ├── js/ │ │ ├── admin.js │ │ ├── app/ │ │ │ └── components/ │ │ │ ├── editor.js │ │ │ ├── session.js │ │ │ ├── times.js │ │ │ └── topic.js │ │ ├── app.js │ │ ├── common/ │ │ │ └── components/ │ │ │ └── utils.js │ │ └── socket.js │ ├── package.json │ ├── static/ │ │ └── robots.txt │ └── webpack.config.js ├── compile ├── config/ │ ├── config.exs │ ├── dev.exs │ ├── prod.exs │ └── test.exs ├── docker/ │ └── docker-compose.yml ├── elixir_buildpack.config ├── lib/ │ ├── mipha/ │ │ ├── accounts/ │ │ │ ├── accounts.ex │ │ │ ├── company.ex │ │ │ ├── location.ex │ │ │ ├── queries.ex │ │ │ ├── team.ex │ │ │ ├── user.ex │ │ │ └── user_team.ex │ │ ├── application.ex │ │ ├── collections/ │ │ │ ├── collection.ex │ │ │ ├── collections.ex │ │ │ └── queries.ex │ │ ├── factory.ex │ │ ├── follows/ │ │ │ ├── follow.ex │ │ │ ├── follows.ex │ │ │ └── queries.ex │ │ ├── mailer.ex │ │ ├── markdown/ │ │ │ ├── auto_linker.ex │ │ │ ├── embed_video_replacer.ex │ │ │ ├── emoji_replacer.ex │ │ │ ├── html_renderer.ex │ │ │ ├── markdown_guides.md │ │ │ └── mention_replacer.ex │ │ ├── markdown.ex │ │ ├── notifications/ │ │ │ ├── notification.ex │ │ │ ├── notifications.ex │ │ │ ├── queries.ex │ │ │ └── user_notification.ex │ │ ├── qiniu.ex │ │ ├── regexp.ex │ │ ├── replies/ │ │ │ ├── queries.ex │ │ │ ├── replies.ex │ │ │ └── reply.ex │ │ ├── repo.ex │ │ ├── stars/ │ │ │ ├── star.ex │ │ │ └── stars.ex │ │ ├── token.ex │ │ ├── topics/ │ │ │ ├── node.ex │ │ │ ├── queries.ex │ │ │ ├── topic.ex │ │ │ └── topics.ex │ │ └── utils/ │ │ └── store.ex │ ├── mipha.ex │ ├── mipha_web/ │ │ ├── channels/ │ │ │ ├── presence.ex │ │ │ ├── room_channel.ex │ │ │ ├── topic_channel.ex │ │ │ └── user_socket.ex │ │ ├── controllers/ │ │ │ ├── admin/ │ │ │ │ ├── company_controller.ex │ │ │ │ ├── node_controller.ex │ │ │ │ ├── notification_controller.ex │ │ │ │ ├── page_controller.ex │ │ │ │ ├── reply_controller.ex │ │ │ │ ├── team_controller.ex │ │ │ │ ├── topic_controller.ex │ │ │ │ └── user_controller.ex │ │ │ ├── auth_controller.ex │ │ │ ├── callback_controller.ex │ │ │ ├── company_controller.ex │ │ │ ├── location_controller.ex │ │ │ ├── notification_controller.ex │ │ │ ├── page_controller.ex │ │ │ ├── reply_controller.ex │ │ │ ├── search_controller.ex │ │ │ ├── session_controller.ex │ │ │ ├── setting_controller.ex │ │ │ ├── team_controller.ex │ │ │ ├── topic_controller.ex │ │ │ └── user_controller.ex │ │ ├── email.ex │ │ ├── endpoint.ex │ │ ├── gettext.ex │ │ ├── plugs/ │ │ │ ├── attack.ex │ │ │ ├── current_user.ex │ │ │ ├── locale.ex │ │ │ ├── require_admin.ex │ │ │ └── require_user.ex │ │ ├── router.ex │ │ ├── session.ex │ │ ├── templates/ │ │ │ ├── admin/ │ │ │ │ ├── company/ │ │ │ │ │ └── index.html.eex │ │ │ │ ├── node/ │ │ │ │ │ ├── edit.html.eex │ │ │ │ │ ├── form.html.eex │ │ │ │ │ ├── index.html.eex │ │ │ │ │ ├── new.html.eex │ │ │ │ │ └── show.html.eex │ │ │ │ ├── notification/ │ │ │ │ │ ├── index.html.eex │ │ │ │ │ └── show.html.eex │ │ │ │ ├── page/ │ │ │ │ │ └── index.html.eex │ │ │ │ ├── reply/ │ │ │ │ │ ├── index.html.eex │ │ │ │ │ └── show.html.eex │ │ │ │ ├── team/ │ │ │ │ │ ├── edit.html.eex │ │ │ │ │ ├── form.html.eex │ │ │ │ │ ├── index.html.eex │ │ │ │ │ ├── new.html.eex │ │ │ │ │ └── show.html.eex │ │ │ │ ├── topic/ │ │ │ │ │ └── index.html.eex │ │ │ │ └── user/ │ │ │ │ └── index.html.eex │ │ │ ├── auth/ │ │ │ │ └── login.html.eex │ │ │ ├── company/ │ │ │ │ ├── index.html.eex │ │ │ │ └── show.html.eex │ │ │ ├── email/ │ │ │ │ ├── forgot_password.html.eex │ │ │ │ ├── verify_email.html.eex │ │ │ │ └── welcome.html.eex │ │ │ ├── layout/ │ │ │ │ ├── _flash.html.eex │ │ │ │ ├── _footer.html.eex │ │ │ │ ├── _header.html.eex │ │ │ │ ├── _navbar.html.eex │ │ │ │ ├── _sub_header.html.eex │ │ │ │ ├── admin.html.eex │ │ │ │ ├── app.html.eex │ │ │ │ └── email.html.eex │ │ │ ├── location/ │ │ │ │ ├── index.html.eex │ │ │ │ └── show.html.eex │ │ │ ├── notification/ │ │ │ │ ├── _followed.html.eex │ │ │ │ ├── _reply_comment_added.html.eex │ │ │ │ ├── _reply_mentioned.html.eex │ │ │ │ ├── _reply_starred.html.eex │ │ │ │ ├── _topic_added.html.eex │ │ │ │ ├── _topic_mentioned.html.eex │ │ │ │ ├── _topic_reply_added.html.eex │ │ │ │ ├── _topic_starred.html.eex │ │ │ │ └── index.html.eex │ │ │ ├── page/ │ │ │ │ ├── _locations.html.eex │ │ │ │ ├── index.html.eex │ │ │ │ └── markdown.html.eex │ │ │ ├── reply/ │ │ │ │ └── edit.html.eex │ │ │ ├── search/ │ │ │ │ └── index.html.eex │ │ │ ├── session/ │ │ │ │ └── new.html.eex │ │ │ ├── setting/ │ │ │ │ ├── _sidebar.html.eex │ │ │ │ ├── account.html.eex │ │ │ │ ├── password.html.eex │ │ │ │ ├── profile.html.eex │ │ │ │ ├── reward.html.eex │ │ │ │ └── show.html.eex │ │ │ ├── shared/ │ │ │ │ └── _pagination.html.eex │ │ │ ├── team/ │ │ │ │ ├── _nav.html.eex │ │ │ │ ├── index.html.eex │ │ │ │ ├── people.html.eex │ │ │ │ └── show.html.eex │ │ │ ├── topic/ │ │ │ │ ├── _editor_toolbar.html.eex │ │ │ │ ├── _form.html.eex │ │ │ │ ├── _handle_reply.html.eex │ │ │ │ ├── _need_register_or_login.html.eex │ │ │ │ ├── _node_selector.html.eex │ │ │ │ ├── _nodes.html.eex │ │ │ │ ├── _operate_toolbar.html.eex │ │ │ │ ├── _relation_topic.html.eex │ │ │ │ ├── _replies.html.eex │ │ │ │ ├── _right.html.eex │ │ │ │ ├── _right_sidebar.html.eex │ │ │ │ ├── _topic.html.eex │ │ │ │ ├── _topics.html.eex │ │ │ │ ├── edit.html.eex │ │ │ │ ├── educational.html.eex │ │ │ │ ├── featured.html.eex │ │ │ │ ├── index.html.eex │ │ │ │ ├── jobs.html.eex │ │ │ │ ├── new.html.eex │ │ │ │ ├── no_reply.html.eex │ │ │ │ ├── popular.html.eex │ │ │ │ └── show.html.eex │ │ │ └── user/ │ │ │ ├── _left.html.eex │ │ │ ├── _menu.html.eex │ │ │ ├── _repos.html.eex │ │ │ ├── _reward.html.eex │ │ │ ├── _teams.html.eex │ │ │ ├── collections.html.eex │ │ │ ├── followers.html.eex │ │ │ ├── following.html.eex │ │ │ ├── forgot_password.html.eex │ │ │ ├── index.html.eex │ │ │ ├── invalid_token.html.eex │ │ │ ├── replies.html.eex │ │ │ ├── reset_password.html.eex │ │ │ ├── show.html.eex │ │ │ ├── topics.html.eex │ │ │ └── verified.html.eex │ │ └── views/ │ │ ├── admin/ │ │ │ ├── company_view.ex │ │ │ ├── node_view.ex │ │ │ ├── notification_view.ex │ │ │ ├── page_view.ex │ │ │ ├── reply_view.ex │ │ │ ├── team_view.ex │ │ │ ├── topic_view.ex │ │ │ └── user_view.ex │ │ ├── auth_view.ex │ │ ├── company_view.ex │ │ ├── email_view.ex │ │ ├── error_helpers.ex │ │ ├── error_view.ex │ │ ├── layout_view.ex │ │ ├── location_view.ex │ │ ├── notification_view.ex │ │ ├── page_view.ex │ │ ├── reply_view.ex │ │ ├── search_view.ex │ │ ├── session_view.ex │ │ ├── setting_view.ex │ │ ├── shared_view.ex │ │ ├── tag_helpers.ex │ │ ├── team_view.ex │ │ ├── topic_view.ex │ │ ├── user_view.ex │ │ └── view_helpers.ex │ └── mipha_web.ex ├── mix.exs ├── phoenix_static_buildpack.config ├── priv/ │ ├── gettext/ │ │ ├── default.pot │ │ ├── en/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── default.po │ │ │ └── errors.po │ │ ├── errors.pot │ │ └── zh/ │ │ └── LC_MESSAGES/ │ │ ├── default.po │ │ └── errors.po │ └── repo/ │ ├── migrations/ │ │ ├── 20180629095811_create_users.exs │ │ ├── 20180702075249_create_topics.exs │ │ ├── 20180702081217_create_replies.exs │ │ ├── 20180702081845_create_nodes.exs │ │ ├── 20180703094024_create_locations.exs │ │ ├── 20180704024042_create_collections.exs │ │ ├── 20180704024600_create_follows.exs │ │ ├── 20180704025308_create_stars.exs │ │ ├── 20180704032212_create_companies.exs │ │ ├── 20180704053120_create_teams.exs │ │ ├── 20180704053159_create_users_teams.exs │ │ ├── 20180712015550_create_notifications.exs │ │ └── 20180712015614_create_users_notifications.exs │ └── seeds.exs ├── script/ │ ├── credo │ ├── iex │ ├── serve │ └── setup └── test/ ├── mipha/ │ ├── accounts/ │ │ ├── accounts_test.exs │ │ ├── company_test.exs │ │ ├── location_test.exs │ │ ├── queries_test.exs │ │ └── user_test.exs │ ├── collections/ │ │ ├── collection_test.exs │ │ ├── collections_test.exs │ │ └── queries_test.exs │ ├── follows/ │ │ ├── follow_test.exs │ │ ├── follows_test.exs │ │ └── queries_test.exs │ ├── notifications/ │ │ ├── notification_test.exs │ │ ├── notifications_test.exs │ │ ├── queries_test.exs │ │ └── user_notification_test.exs │ ├── replies/ │ │ ├── queries_test.exs │ │ ├── replies_test.exs │ │ └── reply_test.exs │ ├── stars/ │ │ ├── star_test.exs │ │ └── stars_test.exs │ └── topics/ │ ├── node_test.exs │ ├── queries_test.exs │ ├── topic_test.exs │ └── topics_test.exs ├── mipha_web/ │ ├── channels/ │ │ ├── room_channel_test.exs │ │ └── topic_channel_test.exs │ ├── controllers/ │ │ ├── admin/ │ │ │ ├── company_controller_test.exs │ │ │ ├── node_controller_test.exs │ │ │ ├── page_controller_test.exs │ │ │ ├── reply_controller_test.exs │ │ │ ├── team_controller_test.exs │ │ │ ├── topic_controller_test.exs │ │ │ └── user_controller_test.exs │ │ ├── auth_controller_test.exs │ │ ├── location_controller_test.exs │ │ ├── notification_controller_test.exs │ │ ├── page_controller_test.exs │ │ ├── reply_controller_test.exs │ │ ├── session_controller_test.exs │ │ ├── setting_controller_test.exs │ │ ├── topic_controller_test.exs │ │ └── user_controller_test.exs │ └── views/ │ ├── error_view_test.exs │ ├── layout_view_test.exs │ └── page_view_test.exs ├── support/ │ ├── channel_case.ex │ ├── conn_case.ex │ └── data_case.ex └── test_helper.exs