The first developer-oriented translation tool. True asynchronous flow between translators and your team.
Go to file
Łukasz Jan Niemier 22b70541c0 Use inner joins instead of left joins
Inner join is default join for Ecto for valid reasons, it helps DB
optimizer to reduce amount of tuples fetched from storage.
2018-05-11 07:32:46 -04:00
config Add tests for hook consumers 2018-04-11 06:02:16 -04:00
lib Use inner joins instead of left joins 2018-05-11 07:32:46 -04:00
priv Fix tests 2018-04-30 15:38:11 -04:00
test Write tests for new functionalities 2018-05-11 07:32:25 -04:00
webapp Fix tests 2018-04-30 15:38:11 -04:00
.credo.exs Remove undefined checksfrom .credo.exs 2018-04-06 05:22:38 -04:00
.formatter.exs Initial commit 💥 2018-04-05 16:47:36 -04:00
.gitignore Ignore webapp/tmp from git 2018-04-18 06:39:03 -04:00
.hanzo.yml Initial commit 💥 2018-04-05 16:47:36 -04:00
.travis.yml Remove blank lines from Travis.yml 2018-04-06 05:23:03 -04:00
app.json Bump Postgres version in app.json 2018-04-16 06:01:31 -04:00
Aptfile Initial commit 💥 2018-04-05 16:47:36 -04:00
CODE_OF_CONDUCT.md Initial commit 💥 2018-04-05 16:47:36 -04:00
compile Initial commit 💥 2018-04-05 16:47:36 -04:00
elixir_buildpack.config Initial commit 💥 2018-04-05 16:47:36 -04:00
Gemfile Initial commit 💥 2018-04-05 16:47:36 -04:00
Gemfile.lock Initial commit 💥 2018-04-05 16:47:36 -04:00
LICENSE.md Rename LICENSE to LICENSE.md 2018-05-05 14:11:28 -04:00
logo.svg Initial commit 💥 2018-04-05 16:47:36 -04:00
mix.exs Initial commit 💥 2018-04-05 16:47:36 -04:00
mix.lock Update to ecto 2.2.10 2018-04-11 06:02:03 -04:00
phoenix_static_buildpack.config Initial commit 💥 2018-04-05 16:47:36 -04:00
Procfile Initial commit 💥 2018-04-05 16:47:36 -04:00
README.md Add missing License section in README.md 2018-04-29 11:07:33 -04:00

Accent Logo

WebsiteGraphiQL

Build Status Coverage Status

The first developer-oriented translation tool. Accents 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 maintaining 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. Its easy to build a plugin/cli/library around Accent.

Contents

Requirements

  • erlang ~> 20.1
  • elixir ~> 1.6.0
  • postgres >= 9.4
  • node.js >= 8.5.0
  • libyaml >= 0.1.7

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.

Example

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

$ nv .env mix <mix command>

Quickstart

  1. If you dont already have it, install nodejs with brew install nodejs
  2. If you dont already have it, install elixir with brew install elixir
  3. If you dont already have it, install libyaml with brew install libyaml
  4. If you dont already have it, install postgres with brew install postgres or the macOS app
  5. Install dependencies with mix deps.get and npm --prefix webapp install
  6. Create and migrate your database with mix ecto.setup
  7. Start Phoenix endpoint with mix phx.server
  8. Start Ember server with npm --prefix webapp run start
  9. Thats it!

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
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 clients 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.

Production setup

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 dont have to setup a Google app.
RESTRICTED_DOMAIN none If specified, only authenticated users from this domain name will be able to create new projects.

Tests

API

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

Deploy on Heroku

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

Deploy on Heroku

Contribute

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

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

Dont forget to run the ./priv/scripts/ci-check.sh script to make sure that the CI build will pass :)

Contributors

License

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

About Mirego

Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. Were 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.