Giter Site home page Giter Site logo

utokyo-pbl / pbl2022-2022-team6 Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 38.74 MB

TranslanGo is an image based translation app that allows anyone with a smart device to learn about their environment. Users can capture an object with their cameras, learn how to say it in the local language and play games around those objects. The FE code is available in branch "frontend" and BE is available in "develop"

HTML 92.81% Makefile 0.12% Go 6.22% Smarty 0.66% JavaScript 0.17% CSS 0.03%

pbl2022-2022-team6's Introduction

Meeting Notes Teammates


Logo

TranslanGo

TranslanGo is an image based translation app that allows anyone with a smart device to learn about their environment. Users can capture an object with their cameras, learn how to say it in the local language and play games around those objects.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Contributors
  3. Getting Started
  4. Roadmap

About The Project

Product Name Screen Shot

As international students and avid travelers, we know that communication is one big concern while going overseas. We started TranslanGo with the mission to help people relax and have fun with new languages instead. TranslanGo is currently available in 7 languages!

Here is what you can do with TranslanGo:

  • Identify objects using your camera / camera roll and translate them into your favourite languages!
  • Learn how to say or write some text in your favourite languages!
  • Keep a map diary of all the things you learnt about with our map feature!
  • Play quizzes and practice your language skills to learn as you go

This repository contains the source code that makes the application possible! Follow along to learn more about TranslanGo.

(back to top)

Built With

TranslanGo is a testament to the advancement of framework and libraries available. It is made with:

React

Google-Cloud-Platform

Amazon-AWS

Go-Dev

Axios-HTTP

(back to top)

Contributors

This project would not be possible without the contribution of the five active team members. Any contributions made are greatly appreciated. The list of teammates with their expertise are listed in alphabetical order.

  • Rodrigo Curiel - Middle End | Project Manager
  • Gaurish Gangwar - Front End | Machine Learning
  • Kunsheng Li - Back End | Database Integration
  • Yu Nakai - Back End | Cloud Developer
  • Megha Sharma - Front End | Project Management

(back to top)

Getting Started

The project code has been divided into three branches, which all refer to the following aspect of the project:

The branch frontend tracks the progress of the frontend code for the app. The initial code for this app was generated by create-react-app using this command:

npx create-react-app translango --template=typescript

To get started with the project front end, follow the steps below

Installation

Install all the plug ins required to run the application using the command below

  1. Clone the repo
    https://github.com/UTokyo-PBL/pbl2022-2022-team6.git
  2. Install NPM packages
    npm install
  3. Go to localhost:3000/ to view the application locally

Please note that you need to run your own Google Maps and Places API to run the application in your local host.

This branch deals with the cloud APIs used for machine learning tasks, such as Google Vision and Google Translate. It is recommended to run this code using your own APIs to prevent unwanted behavior.

The branch develop tracks the progress of the back end code for the app. This deals with the server handling the database and requests from the front end. The usage is highlighted in the subsections below.

Usage

view languages

$ curl https://translango.y-nakai.com/user/signup

register user

$ curl -XPOST \
  -d '{"id":"210e4cee-ba0b-4cb7-848c-2901e3310cee","email":"[email protected]","password":"passw0rd","first_name":"nakai","last_name":"yu","username":"nakai-yu","language":"ja"}' \
  -H "content-type: application/json" \
  https://translango.y-nakai.com/user/signup

login

$ curl -XPOST -s \
  -d '{"email":"[email protected]","password":"passw0rd"}' \
  -H "content-type: application/json" \
  --dump-header - \
  https://translango.y-nakai.com/user/login

login and save cookie

$ SESSION=$(curl -XPOST -s \
  -d '{"email":"[email protected]","password":"passw0rd"}' \
  -H "content-type: application/json" \
  --dump-header - \
  https://translango.y-nakai.com/user/login | \
  grep -E "[s|S]et-[c|C]ookie" | \
  sed -e "s/^.\{12\}//")

logout

$ curl -XPOST \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/user/logout

profile

$ curl \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/user/profile

edit profile

$ curl -XPOST \
  -d '{"id":"210e4cee-ba0b-4cb7-848c-2901e3310cee","email":"[email protected]","password":"passw0rd","first_name":"nakai","last_name":"yu","username":"nakai-yu","language":"ja"}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/user/profile

dashboard/top

$ curl \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/dashboard/top

edit dashboard/top

$ curl -XPOST \
  -d '{"languages": ["ja"]}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/dashboard/top

get objects

$ curl \
  -H "Cookie: ${SESSION}" \
  https://translango.y-nakai.com/dashboard/histories

detect object

$ curl -XPOST \
  -d '{"id":"8d5eeaff-654d-4cde-a075-07d2a04c26be","image_url":"https://dime.jp/genre/files/2020/11/44817f7cc02f549d516a94cc2710c53f.png","original":{"id":"5c81a2c7-7075-4e61-9e22-897792d62510", "language":"en"}, "target": [{"id":"58cb8ec4-ab50-4cdc-a553-dcefb68aad2b", "language": "ja"}]}' \
  -H "content-type: application/json" \
  "https://translango.y-nakai.com/dashboard/histories?type=object"
$ curl -XPOST \
  -d '{"id":"8d5eeaff-654d-4cde-a075-07d2a04c26be","image_url":"https://car-mo.jp/mag/wp-content/uploads/2020/12/4201119-n-one_101H.jpg","original":{"id":"5c81a2c7-7075-4e61-9e22-897792d62510", "language":"en"}, "target": [{"id":"58cb8ec4-ab50-4cdc-a553-dcefb68aad2b", "language": "hi"}]}' \
  -H "content-type: application/json" \
  "https://translango.y-nakai.com/dashboard/histories?type=object"
$ curl -XPOST \
  -d '{"id":"8d5eeaff-654d-4cde-a075-07d2a04c26be","image_url":"https://dime.jp/genre/files/2020/11/44817f7cc02f549d516a94cc2710c53f.png","original":{"id":"5c81a2c7-7075-4e61-9e22-897792d62510", "language":"en"}, "target": [{"id":"58cb8ec4-ab50-4cdc-a553-dcefb68aad2b", "language": "ja"}]}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories?type=object"

translate

$ curl -XPOST \
  -d '{"id":"ee520bd2-ca07-48ff-9838-5549811cdb6d","original":{"id":"15fcfaa7-5fc1-4a3b-b86a-074f8dac6856","language":"en","text":"cat"}, "target": [{"id":"b2f65661-aabc-4b36-b3d4-d2823c6b9e1a", "language": "ja"}]}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories?type=text"
$ curl -XPOST \
  -d '{"id":"ee520bd2-ca07-48ff-9838-5549811cdb6d","original":{"id":"15fcfaa7-5fc1-4a3b-b86a-074f8dac6856","language":"en","text":"Tall Taller Tallest"}, "target": [{"id":"b2f65661-aabc-4b36-b3d4-d2823c6b9e1a", "language": "ja"}]}' \
  -H "content-type: application/json" \
  "https://translango.y-nakai.com/dashboard/histories?type=text"

get object

$ curl \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be"

delete object

$ curl -XDELETE \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be"

like

$ curl -XPOST \
  -d '{"liked":true}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be/liked"

caption

$ curl -XPOST \
  -d '{"caption":"nice to meet you"}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be/caption"

increment num failures

$ curl -XPOST \
  -d '{"num_failures": 1}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be/num_failures"

update translation

$ curl -XPOST \
  -d '{"original":{"id":"5c81a2c7-7075-4e61-9e22-897792d62510","text":"猫","language":"zh"}}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/histories/8d5eeaff-654d-4cde-a075-07d2a04c26be/original"

list

$ curl \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists"

create custom list

$ curl -XPOST \
  -d '{"id":"8e23947f-5fc0-41a5-b24b-7adc1d4b8bf9","icon-name":"US","name":"english","objects":[{"id":"8d5eeaff-654d-4cde-a075-07d2a04c26be"}]}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists"

get custom list

$ curl \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists/8e23947f-5fc0-41a5-b24b-7adc1d4b8bf9?num_questions=2"

get all list

$ curl \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists/210e4cee-ba0b-4cb7-848c-2901e3310cee?num_questions=2"

update custom list

$ curl -XPUT \
  -d '{"id":"8e23947f-5fc0-41a5-b24b-7adc1d4b8bf9","icon-name":"US","name":"english","objects":[{"id":"8d5eeaff-654d-4cde-a075-07d2a04c26be"}]}' \
  -H "content-type: application/json" \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists/8e23947f-5fc0-41a5-b24b-7adc1d4b8bf9"

delete custom list

$ curl -XDELETE \
  -H "Cookie: ${SESSION}" \
  "https://translango.y-nakai.com/dashboard/lists/8e23947f-5fc0-41a5-b24b-7adc1d4b8bf9"

(back to top)

Roadmap

See the open issues for a full list of proposed features (and known issues).

(back to top)

pbl2022-2022-team6's People

Contributors

nnaakkaaii avatar ms3744 avatar gaurishg avatar

Stargazers

 avatar  avatar

Watchers

Katsushi Kobayashi avatar Y. Aoki avatar

Forkers

gaurishg

pbl2022-2022-team6's Issues

Meeting Notes - 16/12/2022

Meeting Notes - Sprint Review and Retrospection

Date: 16/12/2022

Time: 1 PM (13:00)

Attending: @likunsheng @ccurielrodrigo @ms3744 @nnaakkaaii

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • Connection of end points for object detection and location information between Python and the BE
  • Discussion of end-point for anonymous user

Tasks

FE:

  • @ms3744 - Finish map screen to get what geocoding data we need
  • @ms3744 - Remove / Update Image resizer (compression)
  • @ms3744 @gaurishg - Object Detection Page | Text Detection Page | Text Translation Page | Home Map

Middle-End:

BE:

Presentation:

Sprint Goals

Next Meeting: 23/12/2022 1 PM (13:00)

Meeting Notes - 11/11/2022

Meeting Notes - Sprint Planning

Date: 11/11/2022

Time: 2 PM (14:00)

Attending: @ms3744 @gaurishg @likunsheng @nnaakkaaii @ccurielrodrigo

Agenda

  1. Sprint Half-way Review
  2. Define Deliverables for the week

Discussion Points

  • Object Detection and Text Detection will be separate API calls but the image will get uploaded on the server only once
  • Audio and Translations can be cached in the server after the first request
  • Object ID + Translate Language + Translation + Voice URL can be stored in the server for Object Detection
  • Adding a filter on the list of flash cards for the number of cards per game
  • Currently, not working on lists for now

Tasks

-[ ] @likunsheng @nnaakkaaii - Check what going on with @nnaakkaaii with sprint 2 cards (green)

Sprint Goals

Next Meeting: 18/11/2022 1 PM (13:00)

Meeting Notes - 25/11/2022

Meeting Notes - Sprint Planning

Date: 25/11/2022

Time: 1 PM (13:00)

Attending: @gaurishg @likunsheng @ccurielrodrigo @ms3744 @nnaakkaaii

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • The AWS is not working as expected with professor - Resolved
  • Discussion of end-point document for back-end
  • (Optional Requirement) - Newsletter Enrolment
  • (Optional Requirement) - 2-step Authentication Log-in

Tasks

Sprint Goals

Next Meeting: 2/12/2022 1 PM (13:00)

Meeting Notes - 23/12/2022

Meeting Notes - Half way Sprint Review and Retrospection

Date: 16/12/2022

Time: 1 PM (13:00)

Attending: @likunsheng @gaurishg @ms3744 @nnaakkaaii

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • Screen Issues fixing
  • Connection of end points for object detection and location information between Python and the BE
  • Discussion of end-point for anonymous user

Tasks

  • @gaurishg @ms3744 - Translations for the text across all screens
  • @ms3744 @gaurishg - Linking the flow of the screens
  • @ms3744 - Cleaned the sign up pages
  • @ms3744 - Add languages to the translate (depends on Get Language end point)
  • @ms3744 - Correct Sign in page
  • @gaurishg - Component for the user
  • @ms3744 - Finish home map screen (clean up and design conflicts)
  • @ms3744 @gaurishg - Add buttons to navigate to previous pages
  • @ms3744 - Game screens
  • @ms3744 @gaurishg - Object Detection Page | Text Detection Page | Text Translation Page | Home Map

Middle-End:

BE:

Presentation:

ML:

Sprint Goals

Next Meeting: 6/1/2023 1 PM (13:00)

Meeting Notes - 18/11/2022

Meeting Notes - Sprint Planning

Date: 18/11/2022

Time: 1 PM (13:00)

Attending: @gaurishg @likunsheng @ccurielrodrigo

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • Showcase of the finished prototype
  • Issues with Megha's and Gaurish's versions of the front end template
  • Nakai and Kungsheng are nearly finishing the BE templates
  • Information flow of the translation from object to text
  • Text to speech is an independent API to consider
  • Starting of the development of actual Backend and Frontend
  • Unifying development styles of both front and back ends

Tasks

Sprint Goals

Next Meeting: 25/11/2022 1 PM (13:00)

Meeting Notes - 02/12/2022

Meeting Notes - Sprint Planning

Date: 02/12/2022

Time: 1 PM (13:00)

Attending: @gaurishg @likunsheng @ccurielrodrigo @ms3744 @nnaakkaaii

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • The AWS is not working as expected with professor - Resolved
  • Discussion of end-point document for back-end
  • (Optional Requirement) - Newsletter Enrolment
  • (Optional Requirement) - 2-step Authentication Log-in

Tasks

FE:

  • @ms3744 - compressing image
  • @gaurishg - Encrypt the password
  • @ms3744 @gaurishg - Object Detection Page | Text Detection Page | Text Translation Page | Home Map
  • @ms3744 - Check out react text to speech

Middle-End:

BE:

ML:

  • @gaurishg - Python code for object detection (object + bounding box)

Sprint Goals

Next Meeting: 9/12/2022 1 PM (13:00)

Meeting Notes 28/10/2022

Meeting Notes - Half-Way Sprint Review

Date: 28/10/2022

Time: 1 PM (13:00)

Attending: @ms3744 @gaurishg @likunsheng @nnaakkaaii @ccurielrodrigo

Duration: 1 h 20 m

Agenda

  1. Discuss Project Progress
  2. Tasks Delegation: FE | BE | DB | ML
  3. Define Deliverables for the week

Tasks

Next Meeting: 04/11/2022 1 PM (13:00)

Meeting Notes 04/11/2022

Meeting Notes - Sprint Planning

Date: 04/11/2022

Time: 1 PM (13:00)

Attending: @ms3744 @gaurishg @likunsheng @nnaakkaaii @ccurielrodrigo

Agenda

  1. Sprint Review and Retrospect
  2. Sprint Planning
  3. Tasks Delegation: FE | BE | DB | ML
  4. Define Deliverables for the week

Discussion Points

  • Translated text history will be changed to an optional requirement
  • Categorization of the images as an optional requirement
  • Translations do not need the log in feature anymore
  • Check UI color scheme
  • For geolocation in the usability testing - Ensure that the details will be deleted / not taken and ensure that this information is available in the documentation accompanying the test
  • The password will be encrypted in the back end
  • Alternative texts can be stored in an array
  • Google translate API for OCR + Translate

Tasks

Sprint Goals

Next Meeting: 11/11/2022 1 PM (13:00)

Meeting Notes - 09/12/2022

Meeting Notes - Sprint Planning

Date: 02/12/2022

Time: 1 PM (13:00)

Attending: @gaurishg @likunsheng @ccurielrodrigo @ms3744 @nnaakkaaii

Agenda

  1. Sprint Review
  2. Define Deliverables for the sprint and week

Discussion Points

  • The end points for object detection and location information
  • Discussion of end-point document for back-end
  • (Change in UI/UX) - Not displaying flag
  • Testing the test AXIOS function
  • Testing the Log in / Sign Up from FE to BE via Axios

Tasks

FE:

Middle-End:

BE:

ML:

  • @gaurishg - Python code for object detection (object + bounding box)

Sprint Goals

Next Meeting: 11/12/2022 6 PM (18:00)

Meeting Notes 23/10/2022

Meeting Notes - Sprint Planning

Date: 23/10/2022

Time: 10 AM (10:00)

Attending: @ms3744 @gaurishg @likunsheng @nnaakkaaii Rodrigo Curiel

Agenda

  1. Project Set Up
  2. Tasks Delegation: FE | BE | DB | ML
  3. Define Deliverables for the week

Tasks

  • ALL - Learn UML Use Case Models and Templates Product Documents
  • ALL - Learn Plant UML
  • ALL - Learn Terraform
  • Rodrigo & @ms3744 - Learning Figma
  • Rodrigo - Add tasks to Trello
  • @ms3744 - Add learning resources

Sprint Goals

Next Meeting: 28/10/2022 1 PM (13:00)

Meeting Notes - 06/01/2023

Meeting Notes - Final Sprint Review and Retrospection

Date: 06/01/2023

Time: 3 PM (15:00)

Attending: @likunsheng @gaurishg @ms3744 @nnaakkaaii @ccurielrodrigo

Agenda

  1. Sprint Review
  2. Final project submission notes
  3. Testing completion of functionalities

Discussion Points

  • Screen Issues fixing
  • We are sending random location on the map with the data (show our features + protect the users)
  • Discussing the flow of the presentation

Tasks

FE:

Presentation:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.