/Four-Eyes-Translation

A website, that instantly calculates the price of the language service of your choice with an option to upload your documents and pay for the service.

Primary LanguagePython

Four Eyes Translation

Four Eyes Translation is a web application that helps customers place orders for three different types of language services. It was inspired by a necessity for such a service.

Link to live site: https://four-eyes-translation.herokuapp.com/

Link to GitHub repo: https://github.com/victoriatarane/Four-Eyes-Translation

Summary of what the project is and what it does:

The Four Eyes Translation web application consists of three order form types with a possibility to upload source documents. Four Eyes Translation gives a customer an instant quote for the order of choice based on the word count in a source document or a desired word count range. The customer can place an order, view all orders of all types, edit orders and delete them.

Instructions on how to build/run the project (installation instructions)

In order to Run this web application locally you will need to create a .env file with Database variables for your local machine. When that is done you will need to create a database, upgrade it and seed it. In order to enable the possibility to upload files you will need to add a secret key for your AWS bucket. After that is done you will need two terminals: backend and front end. In backend terminal you will need to activate the virtual environment with the pipenv shell command. After that has been done you can start backend with flask run command. In order to start frontend terminal you will need to cd into the react repo and npm install. After npm installation is finished you can npm start. Navigate to your localhost:3000 to see app in work.

React Components list (if you used React) *Auth *Order *Profile *About *DemoUser *Home *NavBar

Database Schema: https://dbdiagram.io/d/60ff118b28da596eb54e279b

Flask React Project

This is the starter for the Flask React project.

Getting started

  1. Clone this repository (only this branch)

    git clone https://github.com/appacademy-starters/python-project-starter.git
  2. Install dependencies

    pipenv install --dev -r dev-requirements.txt && pipenv install -r requirements.txt
  3. Create a .env file based on the example with proper settings for your development environment

  4. Setup your PostgreSQL user, password and database and make sure it matches your .env file

  5. Get into your pipenv, migrate your database, seed your database, and run your flask app

    pipenv shell
    flask db upgrade
    flask seed all
    flask run
  6. To run the React App in development, checkout the README inside the react-app directory.


IMPORTANT! If you add any python dependencies to your pipfiles, you'll need to regenerate your requirements.txt before deployment. You can do this by running:

pipenv lock -r > requirements.txt

ALSO IMPORTANT! psycopg2-binary MUST remain a dev dependency because you can't install it on apline-linux. There is a layer in the Dockerfile that will install psycopg2 (not binary) for us.


Deploy to Heroku

  1. Before you deploy, don't forget to run the following command in order to ensure that your production environment has all of your up-to-date dependencies. You only have to run this command when you have installed new Python packages since your last deployment, but if you aren't sure, it won't hurt to run it again.

    pipenv lock -r > requirements.txt
  2. Create a new project on Heroku

  3. Under Resources click "Find more add-ons" and add the add on called "Heroku Postgres"

  4. Install the Heroku CLI

  5. Run

    heroku login
  6. Login to the heroku container registry

    heroku container:login
  7. Update the REACT_APP_BASE_URL variable in the Dockerfile. This should be the full URL of your Heroku app: i.e. "https://flask-react-aa.herokuapp.com"

  8. Push your docker container to heroku from the root directory of your project. (If you are using an M1 mac, follow these steps below instead, then continue on to step 9.) This will build the Dockerfile and push the image to your heroku container registry.

    heroku container:push web -a {NAME_OF_HEROKU_APP}
  9. Release your docker container to heroku

    heroku container:release web -a {NAME_OF_HEROKU_APP}
  10. set up your database

    heroku run -a {NAME_OF_HEROKU_APP} flask db upgrade
    heroku run -a {NAME_OF_HEROKU_APP} flask seed all
  11. Under Settings find "Config Vars" and add any additional/secret .env variables.

  12. profit

For M1 Mac users

(Replaces Step 8)

  1. Build image with linux platform for heroku servers. Replace {NAME_OF_HEROKU_APP} with your own tag:

    docker buildx build --platform linux/amd64 -t {NAME_OF_HEROKU_APP} .
    
  2. Tag your app with the url for your apps registry. Make sure to use the name of your Heroku app in the url and tag name:

    docker tag {NAME_OF_HEROKU_APP} registry.heroku.com/{NAME_OF_HEROKU_APP}/web
    
  3. Use docker to push the image to the Heroku container registry:

    docker push registry.heroku.com/{NAME_OF_HEROKU_APP}/web