CCC-2022 T4A2 - Full Stack Application - Karl Alberto
N.B. Updated from original project here due to shift in tech stack.
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
.
- 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)
- More Middle Earth language options:
- English-to-Quenya
- English-to-Orcish
- Output text in Tengwar (Elvish) script
- 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.
- HTML5
- CSS (Pico.css)
- Python 3
- Flask
- Github
- AWS Identity and Access Manager
- AWS EC2
- Amazon DynamoDB
- AWS Parameter Store
Dataflow Diagram still reflects current dataflow, per Part A of assignment:
PDF version available here.
Updated Application Architecture Diagram to reflect changes to tech stack and deployment method:
PDF version available here
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
Tackling page layout:
Trello highlights between 1-6 March can be found in the original project repo.
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:
Readme updates; created Table
in Amazon DynamoDB:
Flask app running on EC2:
Set up DynamoDB connection + caching:
AWS Parameter Store work + Python unittest
:
Adding final touches, deploying to EC2:
API Gateway; and Lambda API endpoint testing:
Testing API Error Message on page:
Working "Tengwar" message output. Added 'About' page, with site credits:
Live Site Tests:
Chrome
Firefox
Tablet (iPad Air)
iPhone (12 Pro)
Android (Samsung Galaxy S20 Ultra)
Added error handling for empty strings (to prevent API calls):
Testing DynamoDB connection:
Using Flask
app.logger
to check connections via terminal:
Successful DynamoDB tests:
Unittest using boto3
+ moto
(moto repo) package to mock DynamoDB connection:
Manual testing new messages + app.logger
for triggering API calls, then cache results:
Karl Alberto | 2022