Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/naumanni/naumanni
Naumanni is a Web user interface specially designed for Mastodon.
https://github.com/naumanni/naumanni
mastodon
Last synced: about 1 month ago
JSON representation
Naumanni is a Web user interface specially designed for Mastodon.
- Host: GitHub
- URL: https://github.com/naumanni/naumanni
- Owner: naumanni
- License: agpl-3.0
- Created: 2017-05-01T07:03:57.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-11-21T01:43:51.000Z (about 7 years ago)
- Last Synced: 2024-04-13T15:19:17.857Z (8 months ago)
- Topics: mastodon
- Language: JavaScript
- Homepage: https://naumanni.com
- Size: 3.32 MB
- Stars: 97
- Watchers: 10
- Forks: 13
- Open Issues: 15
-
Metadata Files:
- Readme: README.ja.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mastodon-cn - naumanni\-
- awesome-mastodon - naumanni - Web user interface specially designed for Mastodon. (Clients)
README
# Naumanni
[![CircleCI](https://circleci.com/gh/naumanni/naumanni/tree/master.svg?style=svg)](https://circleci.com/gh/naumanni/naumanni/tree/master)
[![Test Coverage](https://codeclimate.com/github/naumanni/naumanni/badges/coverage.svg)](https://codeclimate.com/github/naumanni/naumanni/coverage)😢Naumanni(ナウマン)は、マストドン専用のWebユーザーインタフェースです。
マストドンと同様にDockerイメージから手軽に起動でき、誰でも設置できる自由なソフトウェアです。
複数インスタンスを横断的に管理でき、より使いやすいSMSライクなダイレクトメッセージ機能を備えているほか、将来的にはAIやエンドツーエンドの暗号化機能を備えることを目標としています。![Screenshot](screenshot.png)
# Version
0.1.1 (αリリース)
現在 Naumanniはα版です。不具合、足りない機能などいろいろあります
バグや機能要望はIssuesに書き込むか、#naumanniのタグをつけてトゥートしてください。# Demo
https://naumanni.com/
# Feature
Naumanniの特徴は以下の通り
* マルチインスタンス対応
* Docker対応
* SMSライクで使いやすいダイレクトメッセージ機能
* エンドツーエンドの暗号化メッセージング機能(6/10実装予定)
* AIを利用した攻撃的なTootの自動CW機能(6/10実装予定/日本語のみ)
* AIを利用したNSFW自動判定機能(今夏実装予定)# Who made this?
Naummanniは(株)UEIと(株)glucoseの共同開発プロジェクトです
* Concept and AI: [[email protected]](https://mstdn.onosendai.jp/@shi3z)
* Code : [[email protected]](https://oppai.tokyo/@shn)# Setup
## Build Dependency
* yarn >= 0.23.4
* node >= v7.5.0
* docker >= 17.03## Docker
```
$ docker pull naumanni/naumanni-standalone
$ docker run -it -p 8080:80 naumanni/naumanni-standalone
```ブラウザから http://localhost:8080/ にアクセスすると使えます
# Setup for Developer
## Development
### Edit and create config files
for Welcome Screen:
```
$ pwd
/path/to/naumanni
$ cp config.es6.in config.es6
$ vi config.es6
```for Plugin:
```
$ cp plugin_entries.ci.es6 plugin_entries.es6
$ touch plugin_entries.css
```### Build project
```
$ pwd
/path/to/naumanni
$ yarn
$ yarn run build
```### Serve project
Example (serve app with nginx)
### Install nginx
```
$ brew install nginx
$ mkdir -p /usr/loca/var/run/nginx/proxy_temp
$ echo '127.0.0.1 naumanniskine.localdev' >> /etc/hosts
```#### project tree
```
.
├── README.md
├── coverage
│ ├── clover.xml
│ ├── coverage-final.json
│ ├── lcov-report
│ └── lcov.info
├── etc
│ └── s3cmd_maintenance.sh
│ ├── deploy.sh
│ ├── deploy_s3_alpha.sh
│ ├── dev
│ │ ├── logs
│ │ │ └── access.log
│ │ ├── nginx
│ │ │ ├── mime.types
│ │ │ ├── nginx.conf
│ │ │ └── uwsgi_params
│ │ ├── nginx.pid
│ │ └── tmp
│ │ └── client_tmp
├── dev.screenrc
├── exclude-files
└── s3cmd_maintenance.sh
├── nginx.conf
├── node_modules
│ ├── ***
├── package.json
├── postcss.config.js
├── raw
│ ├── copy-fonts.sh
│ └── fontello-c1112e15
├── src
│ ├── css
│ └── js
├── static
│ ├── font
│ ├── images
│ ├── main.bundle.js
│ ├── main.bundle.js.map
│ └── main.css
├── webpack.config.babel.js
├── www
│ ├── authorize
│ ├── favicon.ico
│ └── index.html
└── yarn.lock
```etc/dev/nginx/mime.types
```
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/x-javascript js;
application/atom+xml atom;
application/rss+xml rss;text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;image/png png;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
image/svg+xml svg svgz;
image/webp webp;application/java-archive jar war ear;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.ms-excel xls;
application/vnd.ms-powerpoint ppt;
application/vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/zip zip;application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream eot;
application/octet-stream iso img;
application/octet-stream msi msp msm;audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;video/3gpp 3gpp 3gp;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
```etc/dev/nginx/uwsgi_params
```
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
```etc/dev/nginx/nginx.conf
```
worker_processes auto;error_log stderr warn;
pid etc/dev/tmp/nginx.pid;events {
worker_connections 256;
}http {
default_type application/octet-stream;log_format ltsv "time:$time_local"
"\thost:$remote_addr"
"\tforwardedfor:$http_x_forwarded_for"
"\treq:$request"
"\tstatus:$status"
"\tsize:$body_bytes_sent"
"\treferer:$http_referer"
"\tua:$http_user_agent"
"\treqtime:$request_time"
"\tupsttime:$upstream_response_time"
"\tcache:$upstream_http_x_cache"
"\truntime:$upstream_http_x_runtime"
"\tvhost:$host";
access_log etc/dev/logs/access.log ltsv;client_body_temp_path etc/dev/tmp/client_tmp;
sendfile on;
#tcp_nopush on;keepalive_timeout 60;
tcp_nodelay on;gzip on;
# uwsgi
proxy_intercept_errors on; # proxyがエラーを返したときに、nginxのerror_pageを適用する
# 7秒proxyが処理を返さなければ504: GatewayTimeoutにする。
proxy_read_timeout 7;
proxy_connect_timeout 7;
proxy_redirect off;include uwsgi_params;
include mime.types;server {
listen 7654;
charset utf-8;
server_name naumanniskine.localdev;access_log /dev/stdout ltsv;
# 1リクエストの大きさを10Mまで許可する
proxy_max_temp_file_size 0;
client_max_body_size 10M;# error_pages
error_page 404 /static/error/notfound.html;
error_page 503 /static/error/maintenance.html;
error_page 504 /static/error/delay.html;
error_page 403 /static/error/forbidden.html;
error_page 500 501 502 /static/error/error.html;location /static {
alias ./static;
}location / {
root ./www;
try_files $uri /index.html;
default_type text/html;
}
}}
```### Test
```
$ yarn test
```### React Storybook
```
$ yarn run storybook
```# Contribution / 開発に参加するなら
バグや機能要望はIssuesに書き込むか、#naumanniのタグをつけてトゥートしてください。
Pull Requestも歓迎します!ToDo管理は[Pivotal Tracker](https://www.pivotaltracker.com/n/projects/2018707)を使っています。