Skip to content

Kei-Eff/sindarin-translator-online

Repository files navigation

CCC-2022 T4A2 - Full Stack Application - Karl Alberto


N.B. Updated from original project here due to shift in tech stack.

Sindarin Translator Online title

Demo website here.

Description

Sindarin Translator Online is a web interface for the terminal application I created in Term 2 (2021) for the CCC course (T2A3). You can find more details about that project here.

Documentation and Development updates are available via Trello here, along with screenshots below.

Website is hosted on Amazon EC2; built with Python using the Flask web framework. Frontend is HTML5 with Pico.css framework. Amazon DynamoDB is used as a cache for translations, with a 24-hour Time-To-Live (TTL) setting. AWS IAM and AWS Parameter Store are used for account management and secret key storage, respectively. Version control is handled by Github.


Main Functionality/Features

  • English-to-Sindarin (Tolkien Elvish) translations
  • Easy to use, responsive website
  • Minimal design: text in, text out
  • Cache for recently requested translations (to limit API calls)

Future Improvements/Additional Features

  • More Middle Earth language options:
    • English-to-Quenya
    • English-to-Orcish
  • Output text in Tengwar (Elvish) script

Target Audience

  • Fans of J.R.R. Tolkien's written works, and the 'Middle Earth'/'Lord of the Rings' universe.
  • Fans of the 'Lord of the Rings' and 'The Hobbit' movie franchises.
  • Fans who are interested in the upcoming 'Rings of Power' Amazon Prime Video series.
  • Fans of Conlangs (Constructed Languages) who want a phonetic representation of the Elvish Sindarin language.
  • Linguists and linguistics students who want to study how Tolkien created his own languages.
  • Fans of video games set in Middle Earth.

Tech Stack

  • HTML5
  • CSS (Pico.css)
  • Python 3
  • Flask
  • Github
  • AWS Identity and Access Manager
  • AWS EC2
  • Amazon DynamoDB
  • AWS Parameter Store

Dataflow Diagram

Dataflow Diagram still reflects current dataflow, per Part A of assignment:

STO Dataflow Diagram

PDF version available here.


Application Architecture Diagram

Updated Application Architecture Diagram to reflect changes to tech stack and deployment method:

STO Application Architecture Diagram; current as at 11.03.2022

PDF version available here


Progress Updates: Trello

N.B. Updates from February 2022 can now be found here.

Priority labels as follow:

* Low Priority
* Priority (default)
* High Priority
* Urgent
* Ongoing
* Nice to Have
* CRITICAL
* Postponed

1 March 2022

Tackling page layout:

Trello Board at 1 March 2022 - Coding start

Trello highlights between 1-6 March can be found in the original project repo.

7 March 2022

Updated tech stack and app direction; Trello tasks updated with dates, new list and labels (for "Postponed" tasks). No longer serverless due to time constraints. Moving back to Flask on EC2 deployment:

Trello Board at 7 March 2022 - Task updates

8 March 2022

Readme updates; created Table in Amazon DynamoDB: Trello Board at 8 March 2022 - Task updates

9 March 2022

Flask app running on EC2:

Trello Board at 9 March 2022 - Task updates

10 March 2022

Set up DynamoDB connection + caching:

Trello Board at 10 March 2022 - Task updates

11 March 2022

AWS Parameter Store work + Python unittest:

Trello Board at 11 March 2022 - Task updates

Adding final touches, deploying to EC2:

Trello Board at 11 March 2022 - Task updates


Milestones and Testing

4 March 2022

API Gateway; and Lambda API endpoint testing:

Testing API Gateway - 4 March 2022

Testing API Gateway - 4 March 2022

Testing API Gateway - 4 March 2022

8 March 2022

Testing API Error Message on page:

Testing API error messages - 8 March 2022

9 March 2022

Working "Tengwar" message output. Added 'About' page, with site credits:

Tengwar Output and About Page - 9 March 2022

Tengwar Output - 9 March 2022

Live Site Tests:

Chrome

Live on Chrome Browser - 9 March 2022

Live on Chrome Browser - 9 March 2022

Live About Page on Chrome Browser - 9 March 2022

Firefox

Live on Firefox Browser - 9 March 2022

Live on Firefox Browser - 9 March 2022

Tablet (iPad Air)

iPad screen size - 9 March 2022

iPhone (12 Pro)

iPhone screen size - 9 March 2022

Android (Samsung Galaxy S20 Ultra)

Android screen size - 9 March 2022

10 March 2022

Added error handling for empty strings (to prevent API calls):

Empty message error handling - 10 March 2022

Testing DynamoDB connection:

DynamoDB connection test

DynamoDB connection test

Using Flask app.logger to check connections via terminal:

Flask app logger

Successful DynamoDB tests:

DynamoDB test

DynamoDB test

DynamoDB test

11 March 2022

Unittest using boto3 + moto (moto repo) package to mock DynamoDB connection:

Testing cache connection

Manual testing new messages + app.logger for triggering API calls, then cache results:

Testing API and cache calls


Karl Alberto | 2022

About

T4A2-Part B - Full Stack Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published