Why?
I chose to work on this project because I would personally like a series of fun tools to help me study and stay engaged while studying Japanese. I know that other people would benefit from tools like this too, so I am running on lots of hopes & dreams!
 
  Relevant contributions
- Architectural choices
- Frontend development
- Backend development
- QA development
- Devops
Major tools
Frontend:
- Vanilla JS
- HTML
- SVG
- CSS
Backend:
- NodeJS
- Express
- Passport
- MongoDB
- Neo4j
- Socket.io
- MailGun API
- MailTrap API
- MailJet API
Testing:
- Jest
- Cypress
Devops:
- Heroku
- Snyk
Big decisions
- 
        A web application
        - Easiest access on most types of devices for project onset.
 
- 
        NodeJS
        - I am a JS simp, so my bias 100% guided me with this. That is really it. If I could, I would live in a 100% typeless Javascript world.
 
- 
        MongoDB
        - Quick and easy access to small data sets.
 
- 
        Neo4j
        - Great tool for gathering and creating metrics about learning associations.
 
- 
        Websockets
        - The meat and potatoes of this application is a multiplayer web game, and sockets are the quintessential technology for allowing quick client interactions over the web. This is a no-brainer.
 
- 
        Vanilla JS frontend
        - "Travelling light" was an ideal for memory, bundling, & time.
 
 
     
  Hurdles
- 
    Back-and-forth trouble determining if I needed a graph database (DB) or not.
    - Initially determined no.
- Later found out that yes, but for reasons I did not anticipate.
- Implementation was a long process with lots of refactoring.
 
- 
    Did not implement accessibility (A11Y) initially.
    - This created a slower process of finding need-zones, documenting them, & implementing fixes after first iterations of features were made.
 
What did I learn?
- The whole implementation of websockets on the frontend and backend for game rooms!
- Usage of SVG animation tags!
- How to add highly-customizeable faux images & image components.
- Setting up user tests & documenting finds for product improvement.
- Cypress, and A11Y testing with it.
What would I improve if I did it again?
- If its a learning platform, graph databases are your friend.
- Implement A11Y immediately as a facet of each feature, not as an extension or secondary feature.
- Generate images on canvas instead of focusing heavily on SVG.
 
   
   
 
   
  