accent 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
accent 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
accent 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD-3-Clause License
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 大数据数据查询
地区 不详
投 递 者 首席测试
适用人群 未知
收录时间 2021-11-23


The first developer-oriented translation tool
True asynchronous flow between translators and your team.


Actions Status Coverage Status Join the chat at Docker Docker Registry

Accent provides a powerful abstraction around the process maintaining translations in a web/native app.

  • History. Full history control and actions rollback. Who did what, when.
  • UI. Simple yet powerful UI to enable translator and developer to be productive.
  • CLI. Command line tool to easily add Accent to your developer flow.
  • Collaboration. Centralize your discussions around translations.
  • GraphQL. The API that powers the UI is open and documented. It’s easy to build a plugin/cli/library around Accent.


Section Description
🚀 Getting started Quickly setup a working app
🚧 Requirements Dependencies required to run Accent’ stack
🎛 Mix commands How to execute mix task with the Twelve-Factor pattern
🏎 Quickstart Steps to run the project, from API to webapp, with or without Docker
🌳 Environment variables Required and optional env var used
Tests How to run the extensive tests suite
🚀 Heroku Easy deployment setup with Heroku
🌎 Contribute How to contribute to this repo

🚀 Getting started

Easiest way to run an instance of Accent is by using the offical docker image:

  1. The only external dependancy is a PostgreSQL database.
  2. Create a .env file. Example:
  1. Run the image
$ docker run --env-file .env -p 4000:4000 mirego/accent

This will start the webserver on port 4000, migrate the database to have an up and running Accent instance!

🚧 Requirements

  • erlang ~> 23.1
  • elixir ~> 1.11
  • postgres >= 9.4
  • node.js >= 10.16.0
  • libyaml >= 0.1.7
  • gleam ~> 0.11

🎛 Executing mix commands

The app is modeled with the Twelve-Factor App architecture, all configurations are stored in the environment.

When executing mix commands, you should always make sure that the required environment variables are present. You can source, use nv or a custom l33t bash script.

Every following steps assume you have this kind of system.

But Accent can be run with default environment variables if you have a PostgreSQL user named postgres listening on port 5432 on localhost.


With nv you inject the environment keys in the context with:

$ nv .env mix <mix command>

🏎 Quickstart

This is the full development setup. To simply run the app, see the Getting started instructions

  1. If you don’t already have it, install nodejs with brew install nodejs
  2. If you don’t already have it, install elixir with brew install elixir
  3. If you don’t already have it, install libyaml with brew install libyaml
  4. If you don’t already have it, install postgres with brew install postgres or the Docker setup as described below.
  5. Install dependencies with make dependencies
  6. Create and migrate your database with mix ecto.setup
  7. Start Phoenix endpoint with mix phx.server

That’s it! You should now be able to open the app at http://localhost:4000


The Makefile should be the main entry for common tasks such as tests, linting, Docker, etc. This simplifies the development process since you don’t have to search for which service provides which command. mix, npm, prettier, docker, stylelint, etc are all used in the Makefile.


For the production setup, we use Docker to build an OTP release of the app. With docker-compose, you can run the image locally. Here are the steps to have a working app running locally with Docker:

When running the production env, you need to provide a valid GOOGLE_API_CLIENT_ID in the docker-compose.yml file.

  1. Run make build to build the OTP release with Docker
  2. Run make dev-start-postgresql to start an instance of Postgresql. The instance will run on port 5432 with the postgres user. You can change those values in the docker-compose.yml file.
  3. Run make dev-start-application to start the app! The release hook of the release will execute migrations and seeds before starting the webserver on port 4000 (again you can change the settings in docker-compose.yml)

That’s it! You now have a working Accent instance without installing Elixir or Node!

🌳 Environment variables

Accent provides a default value for every required environment variable. This means that with the right PostgreSQL setup, you can just run mix phx.server.

Variable Default Description
DATABASE_URL postgres://localhost/accent_development A valid database URL
PORT 4000 A port to run the app on

Production setup

Variable Default Description
RESTRICTED_PROJECT_CREATOR_EMAIL_DOMAIN none If specified, only authenticated users from this domain name will be able to create new projects.
FORCE_SSL false If the app should always be served by https (and wss for websocket)
SENTRY_DSN none The secret Sentry DSN used to collect API runtime errors
WEBAPP_SENTRY_DSN none The public Sentry DSN used to collect Webapp runtime errors
CANONICAL_URL none The URL of the app. Used in sent emails and to redirect from external services to the app in the authentication flow.
WEBAPP_SKIP_SUBRESOURCE_INTEGRITY none Remove integrity attributes on link and script tag. Useful when using a proxy that compress resources before serving them.
DATABASE_SSL false If SSL should be used to connect to the database
DATABASE_POOL_SIZE 10 The size of the pool used by the database connection module

Authentication setup

Various login providers are included in Accent using Ueberauth to abstract services.

Variable Default Description
DUMMY_LOGIN_ENABLED none If specified, the password-less authentication (with only the email) will be available.

Email setup

If you want to send emails, you’ll have to configure the following environment variables:

Variable Default Description
MAILER_FROM none The email address used to send emails.
SENDGRID_API_KEY none Use SendGrid to send emails
MANDRILL_API_KEY none Use Mandrill to send emails
MAILGUN_API_KEY none Use Mailgun to send emails
SMTP_ADDRESS none Use an SMTP server to send your emails.
SMTP_API_HEADER none An optional API header that will be added to sent emails.
SMTP_PORT none The port ex: (25, 465, 587).
SMTP_PASSWORD none The password for authentification.
SMTP_USERNAME none The username for authentification.

Kubernetes helm chart setup

You can setup the project with a helm chart like this one. This project uses a fork by andreymaznyak and not this canonical repository. The specs and values may need to be updated if you use this repo.



Accent provides a default value for every required environment variable. This means that with the right PostgreSQL setup (and a few setup commands), you can just run mix test.

$ npm --prefix webapp run build
$ mix run ./priv/repo/seeds.exs
$ mix test

The full check that runs in the CI environment can be executed with ./priv/scripts/

🚀 Deploy on Heroku

An Heroku-compatible app.json makes it easy to deploy the application on Heroku.

Deploy on Heroku

Using Heroku CLI

Based on this guide

$> heroku create
Creating app... done, ⬢ peaceful-badlands-85887 |

$> heroku addons:create heroku-postgresql:hobby-dev --app peaceful-badlands-85887
Creating heroku-postgresql:hobby-dev on ⬢ peaceful-badlands-85887... free
Database has been created and is available

$> heroku config:set FORCE_SSL=true DUMMY_LOGIN_ENABLED=true --app peaceful-badlands-85887
Setting FORCE_SSL, DUMMY_LOGIN_ENABLED and restarting ⬢ peaceful-badlands-85887... done

$> heroku container:push web --app peaceful-badlands-85887
=== Building web
Your image has been successfully pushed. You can now release it with the 'container:release' command.

$> heroku container:release web --app peaceful-badlands-85887
Releasing images web to peaceful-badlands-85887... done

🌎 Contribute

Before opening a pull request, please open an issue first.

Once you’ve made your additions and the test suite passes, go ahead and open a PR!

Don’t forget to run the ./priv/scripts/ script to make sure that the CI build will pass :)


Accent is © 2015-2019 Mirego and may be freely distributed under the New BSD license. See the file.

About Mirego

Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We’re a team of talented people who imagine and build beautiful Web and mobile applications. We come together to share ideas and change the world.

We also love open-source software and we try to give back to the community as much as we can.




{{o.pubDate | formatDate}}


{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
{{o.pubDate | formatDate}}


{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
handlebars 存在拒绝服务漏洞
handlebars 是 Mustache 模板语言的扩展。此软件包的受影响版本容易受到原型污染。
2022-08-08 19:08
uglify-js 存在ReDoS漏洞
uglify-js 是一个 JavaScript 解析器、压缩器、压缩器和美化工具包。此软件包的受影响版本容易通过 string_template 和 decode_template 函数受到正则表达式拒绝服务 (ReDoS) 的攻击。
2022-08-08 19:08
kind-of是一款JavaScript类型检查软件包。 kind-of v6.0.2版本中的index.js文件的‘ctorName’函数存在注入漏洞,攻击者可利用该漏洞覆盖内部属性,操纵类型检查的结果。
CVE-2019-20149 MPS-2019-17164
2022-08-08 19:08
minimist 输入验证错误漏洞
minimist是一款命令行参数解析工具。 minimist 1.2.2之前版本存在输入验证错误漏洞。攻击者可借助‘constructor’和‘__proto__’ payload利用该漏洞添加或修改Object.prototype的属性。
CVE-2020-7598 MPS-2020-3516
2022-08-08 19:08
handlebars 安全漏洞
handlebars是一款语义化的Web模板系统。 handlebars 4.7.7版本之前存在安全漏洞,该漏洞源于在选择某些编译选项来编译来自不受信任的源的模板时,handlebars容易受到远程代码执行(Remote Code Execution, RCE)的攻击。
CVE-2021-23369 MPS-2021-4548
2022-08-08 19:08
handlebars 安全漏洞
handlebars是一款语义化的Web模板系统。 handlebars 4.7.7之前版本存在安全漏洞,该漏洞源于当选择某些编译选项来编译来自不可信源的模板时,容易受到原型污染的影响。
CVE-2021-23383 MPS-2021-6180
2022-08-08 19:08
nodejs 资源管理错误漏洞
nodejs是是一个基于ChromeV8引擎的JavaScript运行环境通过对Chromev8引擎进行了封装以及使用事件驱动和非阻塞IO的应用让Javascript开发高性能的后台应用成为了可能。 nodejs-glob-parent 存在安全漏洞,该漏洞源于正则表达式拒绝服务。
CVE-2020-28469 MPS-2021-7827
2022-08-08 19:08
0 评论
0 收藏