The first developer oriented translation tool. Accent’s engine coupled with the asynchronous flow between the translator and the developer is what makes Accent the most awesome tool of all.
The Accent API provides a powerful abstraction around the process of translating and maintaing the translations of an app.
- Collaboration. Centralize your discussions around translations.
- History. Full history control and actions rollback. Who did what, when.
- UI. Simple yet powerful UI to enable translator and developer to be productive.
- GraphQL. The API that powers the UI is open and documented. It’s easy to build a plugin/cli/library around Accent.
erlang ~> 20.1
elixir ~> 1.6.0
postgres >= 9.4
node.js >= 8.5.0
libyaml >= 0.1.7
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>
- If you don’t already have it, install
nodejs
withbrew install nodejs
- If you don’t already have it, install
elixir
withbrew install elixir
- If you don’t already have it, install
libyaml
withbrew install libyaml
- If you don’t already have it, install
postgres
withbrew install postgres
or the macOS app - Install dependencies with
mix deps.get
andnpm --prefix webapp install
. - Create and migrate your database with
mix ecto.setup
- Start Phoenix endpoint with
mix phx.server
- Start Ember server with
npm --prefix webapp run start
- That’s it!
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 |
---|---|---|
MIX_ENV |
dev |
The application environment (dev , prod , or test ) |
DATABASE_URL |
postgres://localhost/accent_development |
A valid database URL |
PORT |
4000 |
A PORT to run the API on |
WEBAPP_PORT |
4200 |
A PORT to run the Webapp on (only used in dev environment) |
API_HOST |
http://localhost:4000 |
The API host |
API_WS_HOST |
ws://localhost:4000 |
The API Websocket host |
WEBAPP_EMAIL_HOST |
none | The Web client’s hostname. Used in the sent emails to link to the right URL. There is no default value, please provide a value if you want to send emails. |
MAILER_FROM |
none | The email address used to send emails. There is no default value, please provide a value if you want to send emails. |
Variable | Default | Description |
---|---|---|
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 |
GOOGLE_API_CLIENT_ID |
none | When deploying in a prod environment, the Google login is the only way to authenticate user. In dev environment, a fake login provider is used so you don’t have to setup a Google app. |
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
An Heroku-compatible app.json
makes it easy to deploy the application on Heroku.
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/ci-check.sh
script to make sure that the CI build will pass :)
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.