parrot

module
v0.0.0-...-90b39c7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2018 License: MIT

README

Parrot

Codacy Badge Docs MIT License

Self-hosted Localization Management Platform built with Go and Angular 2.

Documentation
Website
Gitter Chat Room

Check out the Roadmap for v1.0, it's open for discussion. Everyone is welcome to contribute.

NOTICE: the project is still in heavy development and it is NOT recommended for use in production until a version 1.0 is reached.

Features

  • Built-in UI (web app) ready to deploy.
  • REST API to easily extend or integrate Parrot into your pipeline.
  • Export to various formats: keyvaluejson, po, strings, properties, xmlproperties, android, php, xlsx, yaml and csv.
  • Easily rename project strings, Parrot takes care of keeping locales in sync.
  • Manage your project's team, assign collaborators and their roles.
  • Control API Client access for your projects.

Building from source and try it out

Start out by cloning this repo into your GOPATH:

$ mkdir -p $GOPATH/src/github.com/parrot-translate/parrot
$ cd $GOPATH/src/github.com/parrot-translate/parrot
$ git clone https://github.com/parrot-translate/parrot.git .

Make sure you have Postgres running, by default Parrot's API server will look for it on postgres://localhost:5432 and will try to connect to a database named parrot. You can configure this using the AppConfig, see the configuration section below for more info.

To start a pre-configured Postgres instance on docker, simply run:

$ dev-tools/start-postgres.sh

Now apply the database migrations. Using Alembic it's really simple:

$ cd migrations
$ alembic upgrade head

Once again, if you wish to configure the DB parameters, you need to override the default values. For Alembic you just need to go to the migrations/alembic.ini file and modify the sqlalchemy.url accordingly.

Finally you can build Parrot from source:

# From the root dir 'parrot'
$ ./build/build-all.sh

Now we simply need start the API and serve the web app files.

$ dist/parrot_api

Navigate to http://localhost:9990/api/v1/ping and you should be able to see if the API is up.

And on a separate terminal session, let's start a convinient Python HTTP server to serve the static web app files locally:

$ dev-tools/serve-web-app.sh

And to view the web app simply navigate to http://localhost:8080, it should open the login page of the web app.

Configuration

API

At the moment, configuring the API app is only possible via environment variables. Here's the available options with their default values:

PARROT_API_PORT, default value: "9990"
PARROT_DB_NAME, default value: "postgres"
PARROT_DB_CONN, default value: "postgres://postgres@localhost:5432/parrot?sslmode=disable"
PARROT_AUTH_ISSUER, default value: "parrot@localhost"
PARROT_AUTH_SIGNING_KEY, default value: "secret"
Web App

You can also configure the Web App's backend endpoint by editing the file parrot/web-app/src/environments/environment.prod.ts accordingly before building the Web app. Available options:

apiEndpoint, default value: "http://localhost:9990/api/v1"

License

This project is licensed under the MIT license.

Issues

The recommended medium to report and track issues is by opening one on Github.

Contributing

Want to hack on the project? Any kind of contribution is welcome! Simply follow the next steps:

  • Fork the project.
  • Create a new branch.
  • Make your changes and write tests when practical.
  • Commit your changes to the new branch.
  • Send a pull request, it will be reviewed shortly.

In case you want to add a feature, please create a new issue and briefly explain what the feature would consist of. For bugs or requests, before creating an issue please check if one has already been created for it.

Directories

Path Synopsis
api
Package api handles the creation and configuration of all API resource routes.
Package api handles the creation and configuration of all API resource routes.
auth
Package auth handles the creation of an Auth Provider and its routes.
Package auth handles the creation of an Auth Provider and its routes.
datastore
Package datastore specifies and implements the datastore required by the API.
Package datastore specifies and implements the datastore required by the API.
datastore/errors
Package errors holds the datastore related errors.
Package errors holds the datastore related errors.
datastore/postgres
Package postgres holds an implementation of the datastore.Store.
Package postgres holds an implementation of the datastore.Store.
errors
Package errors holds the HTTP errors that the API returns.
Package errors holds the HTTP errors that the API returns.
export
Package export handles the exporting of API data to common formats.
Package export handles the exporting of API data to common formats.
logger
Package logger implements middleware loggeing.
Package logger implements middleware loggeing.
model
Package model holds the various types and interfaces for Parrot.
Package model holds the various types and interfaces for Parrot.
render
Package render handles the rending of common API results.
Package render handles the rending of common API results.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL