{"id":13546545,"url":"https://github.com/naumanni/naumanni","last_synced_at":"2025-04-02T18:31:12.175Z","repository":{"id":98370402,"uuid":"89904539","full_name":"naumanni/naumanni","owner":"naumanni","description":"Naumanni is a Web user interface specially designed for Mastodon.","archived":false,"fork":false,"pushed_at":"2017-11-21T01:43:51.000Z","size":3478,"stargazers_count":97,"open_issues_count":15,"forks_count":13,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-04-13T15:19:17.857Z","etag":null,"topics":["mastodon"],"latest_commit_sha":null,"homepage":"https://naumanni.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naumanni.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-05-01T07:03:57.000Z","updated_at":"2023-12-15T06:20:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"d1d36738-f4a8-4e2f-b43d-3aa6c44ea1c6","html_url":"https://github.com/naumanni/naumanni","commit_stats":{"total_commits":402,"total_committers":8,"mean_commits":50.25,"dds":0.3383084577114428,"last_synced_commit":"385afbb2363454e87e929fae3a2958590c3ba5e8"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naumanni%2Fnaumanni","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naumanni%2Fnaumanni/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naumanni%2Fnaumanni/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naumanni%2Fnaumanni/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naumanni","download_url":"https://codeload.github.com/naumanni/naumanni/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222661096,"owners_count":17018950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mastodon"],"created_at":"2024-08-01T12:00:39.936Z","updated_at":"2024-11-03T14:31:49.172Z","avatar_url":"https://github.com/naumanni.png","language":"JavaScript","funding_links":[],"categories":["Clients","JavaScript","客户端"],"sub_categories":[],"readme":"﻿# Naumanni\n[![CircleCI](https://circleci.com/gh/naumanni/naumanni/tree/master.svg?style=svg)](https://circleci.com/gh/naumanni/naumanni/tree/master)\n[![Test Coverage](https://codeclimate.com/github/naumanni/naumanni/badges/coverage.svg)](https://codeclimate.com/github/naumanni/naumanni/coverage)😢\n\nNaumanni(ナウマン)は、マストドン専用のWebユーザーインタフェースです。\nマストドンと同様にDockerイメージから手軽に起動でき、誰でも設置できる自由なソフトウェアです。\n複数インスタンスを横断的に管理でき、より使いやすいSMSライクなダイレクトメッセージ機能を備えているほか、将来的にはAIやエンドツーエンドの暗号化機能を備えることを目標としています。\n\n![Screenshot](screenshot.png)\n\n\n# Version\n\n0.1.1 (αリリース)\n\n現在 Naumanniはα版です。不具合、足りない機能などいろいろあります\nバグや機能要望はIssuesに書き込むか、#naumanniのタグをつけてトゥートしてください。\n\n# Demo\n\nhttps://naumanni.com/\n\n# Feature\n\nNaumanniの特徴は以下の通り\n\n* マルチインスタンス対応\n* Docker対応\n* SMSライクで使いやすいダイレクトメッセージ機能\n* エンドツーエンドの暗号化メッセージング機能(6/10実装予定)\n* AIを利用した攻撃的なTootの自動CW機能(6/10実装予定/日本語のみ)\n* AIを利用したNSFW自動判定機能(今夏実装予定)\n\n# Who made this?\n\nNaummanniは(株)UEIと(株)glucoseの共同開発プロジェクトです\n\n* Concept and AI: [shi3z@mstdn.onosendai.jp](https://mstdn.onosendai.jp/@shi3z)\n* Code : [shn@oppai.tokyo](https://oppai.tokyo/@shn)\n\n# Setup\n\n## Build Dependency\n\n* yarn \u003e= 0.23.4\n* node \u003e= v7.5.0\n* docker \u003e= 17.03\n\n## Docker\n\n```\n$ docker pull naumanni/naumanni-standalone\n$ docker run -it -p 8080:80 naumanni/naumanni-standalone\n```\n\nブラウザから http://localhost:8080/ にアクセスすると使えます\n\n\n# Setup for Developer\n\n## Development\n\n### Edit and create config files\n\nfor Welcome Screen:\n```\n$ pwd\n/path/to/naumanni\n$ cp config.es6.in config.es6\n$ vi config.es6\n```\n\nfor Plugin:\n```\n$ cp plugin_entries.ci.es6 plugin_entries.es6\n$ touch plugin_entries.css\n```\n\n### Build project\n\n```\n$ pwd\n/path/to/naumanni\n$ yarn\n$ yarn run build\n```\n\n### Serve project\n\n\u003cdetails\u003e\n\u003csummary\u003e Example (serve app with nginx) \u003c/summary\u003e\n\n### Install nginx\n\n```\n$ brew install nginx\n$ mkdir -p /usr/loca/var/run/nginx/proxy_temp\n$ echo '127.0.0.1 naumanniskine.localdev' \u003e\u003e /etc/hosts\n```\n\n#### project tree\n\n```\n.\n├── README.md\n├── coverage\n│   ├── clover.xml\n│   ├── coverage-final.json\n│   ├── lcov-report\n│   └── lcov.info\n├── etc\n│   └── s3cmd_maintenance.sh\n│   ├── deploy.sh\n│   ├── deploy_s3_alpha.sh\n│   ├── dev\n│   │   ├── logs\n│   │   │   └── access.log\n│   │   ├── nginx\n│   │   │   ├── mime.types\n│   │   │   ├── nginx.conf\n│   │   │   └── uwsgi_params\n│   │   ├── nginx.pid\n│   │   └── tmp\n│   │       └── client_tmp\n├── dev.screenrc\n├── exclude-files\n└── s3cmd_maintenance.sh\n├── nginx.conf\n├── node_modules\n│   ├── ***\n├── package.json\n├── postcss.config.js\n├── raw\n│   ├── copy-fonts.sh\n│   └── fontello-c1112e15\n├── src\n│   ├── css\n│   └── js\n├── static\n│   ├── font\n│   ├── images\n│   ├── main.bundle.js\n│   ├── main.bundle.js.map\n│   └── main.css\n├── webpack.config.babel.js\n├── www\n│   ├── authorize\n│   ├── favicon.ico\n│   └── index.html\n└── yarn.lock\n```\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003e etc/dev/nginx/mime.types \u003c/summary\u003e\n\n```\n\ntypes {\n    text/html                             html htm shtml;\n    text/css                              css;\n    text/xml                              xml;\n    image/gif                             gif;\n    image/jpeg                            jpeg jpg;\n    application/x-javascript              js;\n    application/atom+xml                  atom;\n    application/rss+xml                   rss;\n\n    text/mathml                           mml;\n    text/plain                            txt;\n    text/vnd.sun.j2me.app-descriptor      jad;\n    text/vnd.wap.wml                      wml;\n    text/x-component                      htc;\n\n    image/png                             png;\n    image/tiff                            tif tiff;\n    image/vnd.wap.wbmp                    wbmp;\n    image/x-icon                          ico;\n    image/x-jng                           jng;\n    image/x-ms-bmp                        bmp;\n    image/svg+xml                         svg svgz;\n    image/webp                            webp;\n\n    application/java-archive              jar war ear;\n    application/mac-binhex40              hqx;\n    application/msword                    doc;\n    application/pdf                       pdf;\n    application/postscript                ps eps ai;\n    application/rtf                       rtf;\n    application/vnd.ms-excel              xls;\n    application/vnd.ms-powerpoint         ppt;\n    application/vnd.wap.wmlc              wmlc;\n    application/vnd.google-earth.kml+xml  kml;\n    application/vnd.google-earth.kmz      kmz;\n    application/x-7z-compressed           7z;\n    application/x-cocoa                   cco;\n    application/x-java-archive-diff       jardiff;\n    application/x-java-jnlp-file          jnlp;\n    application/x-makeself                run;\n    application/x-perl                    pl pm;\n    application/x-pilot                   prc pdb;\n    application/x-rar-compressed          rar;\n    application/x-redhat-package-manager  rpm;\n    application/x-sea                     sea;\n    application/x-shockwave-flash         swf;\n    application/x-stuffit                 sit;\n    application/x-tcl                     tcl tk;\n    application/x-x509-ca-cert            der pem crt;\n    application/x-xpinstall               xpi;\n    application/xhtml+xml                 xhtml;\n    application/zip                       zip;\n\n    application/octet-stream              bin exe dll;\n    application/octet-stream              deb;\n    application/octet-stream              dmg;\n    application/octet-stream              eot;\n    application/octet-stream              iso img;\n    application/octet-stream              msi msp msm;\n\n    audio/midi                            mid midi kar;\n    audio/mpeg                            mp3;\n    audio/ogg                             ogg;\n    audio/x-m4a                           m4a;\n    audio/x-realaudio                     ra;\n\n    video/3gpp                            3gpp 3gp;\n    video/mp4                             mp4;\n    video/mpeg                            mpeg mpg;\n    video/quicktime                       mov;\n    video/webm                            webm;\n    video/x-flv                           flv;\n    video/x-m4v                           m4v;\n    video/x-mng                           mng;\n    video/x-ms-asf                        asx asf;\n    video/x-ms-wmv                        wmv;\n    video/x-msvideo                       avi;\n}\n```\n\n\u003c/details\u003e\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003e etc/dev/nginx/uwsgi_params \u003c/summary\u003e\n\n```\n\nuwsgi_param  QUERY_STRING       $query_string;\nuwsgi_param  REQUEST_METHOD     $request_method;\nuwsgi_param  CONTENT_TYPE       $content_type;\nuwsgi_param  CONTENT_LENGTH     $content_length;\n\nuwsgi_param  REQUEST_URI        $request_uri;\nuwsgi_param  PATH_INFO          $document_uri;\nuwsgi_param  DOCUMENT_ROOT      $document_root;\nuwsgi_param  SERVER_PROTOCOL    $server_protocol;\n\nuwsgi_param  REMOTE_ADDR        $remote_addr;\nuwsgi_param  REMOTE_PORT        $remote_port;\nuwsgi_param  SERVER_PORT        $server_port;\nuwsgi_param  SERVER_NAME        $server_name;\n```\n\n\u003c/details\u003e\n\n\u003cp\u003e\n\u003cdetails\u003e\n\u003csummary\u003e etc/dev/nginx/nginx.conf \u003c/summary\u003e\n\n```\nworker_processes    auto;\n\nerror_log    stderr warn;\npid          etc/dev/tmp/nginx.pid;\n\nevents {\n    worker_connections 256;\n}\n\nhttp {\n    default_type    application/octet-stream;\n\n    log_format ltsv \"time:$time_local\"\n                    \"\\thost:$remote_addr\"\n                    \"\\tforwardedfor:$http_x_forwarded_for\"\n                    \"\\treq:$request\"\n                    \"\\tstatus:$status\"\n                    \"\\tsize:$body_bytes_sent\"\n                    \"\\treferer:$http_referer\"\n                    \"\\tua:$http_user_agent\"\n                    \"\\treqtime:$request_time\"\n                    \"\\tupsttime:$upstream_response_time\"\n                    \"\\tcache:$upstream_http_x_cache\"\n                    \"\\truntime:$upstream_http_x_runtime\"\n                    \"\\tvhost:$host\";\n    access_log  etc/dev/logs/access.log ltsv;\n\n    client_body_temp_path etc/dev/tmp/client_tmp;\n\n    sendfile    on;\n    #tcp_nopush on;\n\n    keepalive_timeout   60;\n    tcp_nodelay      on;\n\n    gzip            on;\n\n    # uwsgi\n    proxy_intercept_errors on;  # proxyがエラーを返したときに、nginxのerror_pageを適用する\n    # 7秒proxyが処理を返さなければ504: GatewayTimeoutにする。\n    proxy_read_timeout 7;\n    proxy_connect_timeout 7;\n    proxy_redirect off;\n\n    include uwsgi_params;\n    include mime.types;\n\n    server {\n        listen     7654;\n        charset    utf-8;\n        server_name naumanniskine.localdev;\n\n        access_log  /dev/stdout ltsv;\n\n        # 1リクエストの大きさを10Mまで許可する\n        proxy_max_temp_file_size    0;\n        client_max_body_size        10M;\n\n        # error_pages\n        error_page 404 /static/error/notfound.html;\n        error_page 503 /static/error/maintenance.html;\n        error_page 504 /static/error/delay.html;\n        error_page 403 /static/error/forbidden.html;\n        error_page 500 501 502 /static/error/error.html;\n\n        location /static {\n            alias ./static;\n        }\n\n        location / {\n            root ./www;\n            try_files $uri /index.html;\n            default_type text/html;\n        }\n    }\n\n}\n```\n\n\u003c/details\u003e\n\n\n### Test\n\n```\n$ yarn test\n```\n\n### React Storybook\n\n```\n$ yarn run storybook\n```\n\n\u003c/details\u003e\n\n# Contribution / 開発に参加するなら\n\nバグや機能要望はIssuesに書き込むか、#naumanniのタグをつけてトゥートしてください。\nPull Requestも歓迎します!\n\nToDo管理は[Pivotal Tracker](https://www.pivotaltracker.com/n/projects/2018707)を使っています。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaumanni%2Fnaumanni","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaumanni%2Fnaumanni","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaumanni%2Fnaumanni/lists"}