AlexBaldman / Memorization-Station

A Metaphorical Mansion for Your Memory

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Memorization Station

A Metaphorical Mansion of Memory Material.


Overview

_Memorization Station is a web application designed to spark interest in learning about the mind, memory, and how various systems that have been developed and used throughout history can be used to improve one's ability to absorb and recall information.

Its basic functionality at MVP will be to store charts/tables of "memory objects" and generally aid in the building of memorization systems. Users will have the ability to build and store charts of data listing mental associations with numbers, people, places, etc. as they build out different aspects of a personalized memory system, used to encode and recall various types of information.

  • Goals:
    • To spark people's interest in learning about memory, and give users a basic understanding of memory systems and the ability to build some basic charts of associations.

    • Challenges: 

      • I believe I have a good understanding of how the different technologies are working together, but implementing all the necessary steps on my own on an invividual basis is definitely going to require me to cement my understanding of many of the details I haven't had much practice with yet.

MVP

Memorization Station in its MVP version should serve as a bit of an introduction to memory systems, and have the basic functionality of allowing a user to log in and create/store/edit basic "memory objects" to be held in charts/tables of various types, making up memory palaces, journeys, etc.


Goals

  • Build a Ruby on Rails API to serve as a back-end server for application data.
  • Seed server with personal data / charts.
  • Build an elegant front end client in ReactJS using create-react-app.
  • Allow for the storage of data and creation of useful new materials for use as references/associations when learning and building out systems for memorization of information.
  • Increase ability to retain and recall information, helping to speed up learning overall.
  • Add innovative, creative, and quirky new ways of building out these systems, gamifying the process in different areas and make process that can be tedious a lot more fun.

Libraries and Dependencies

Library Description
React Javascript library, used here via the Create-React-App package, used to build the application's front end. React's focus is on building speedy and responsive web applications by only updating the site's DOM when necessary, and having the various pieces of an application separated into components that are re-useable and lend themselves to efficient scaling and performance.
React Router Used within the React to navigate between various screens/views and components making up the overall application.
Axios Used to pull data into the for rendering on the page, Axios is responsible for efficient interaction between the front end and the RESTful API being served on the back end
Ruby on Rails Used to build the back end of the application, where various API endpoints will be exposed to allow the front end to interact with the server and to manage the database.
Rails Router Recognizes browser URLs on the application's back end and dispatches them to the controller actions requested.
Postgres Architecture and management of the PSQL database._

Client (Front End)

Wireframes

Basic intended views for various screens:

Desktop

  • Desktop

Tablet

  • Tablet

Mobile Main

  • Mobile

Wireframes - Screens / Views:

Wireflow

  • Wireflow / Siteframe

Component Tree

Component Tree

Component Hierarchy


src
|__ assets/
      |__ fonts
      |__ icons
      |__ images
        |__ people
        |__ places
        |__ things
        |__ symbols
      |__ mockups
|__ components/
      |__ Main.jsx
      |__ Header.jsx
      |__ Nav.jsx
      |__ Footer.jsx
      |__ Login.jsx
      |__ CreateAccount.jsx
      |__ CreateObjects.jsx
      |__ DisplayCharts.jsx
|__ screens/
      |__ Main.jsx
      |__ About.jsx
      |__ LoginSignup.jsx
      |__ CreateObjects.jsx
      |__ UpdateObjects.jsx
      |__ ShowCharts.jsx
|__ services/
    |__ utilities.js
    |__ apiConfig.js

Component Breakdown

Component Type state props Description
Main functional n n The main component will serve as the container for the body of the application.
Header functional n n The header will contain the navigation and logo.
Footer class n n The footer will hold some general information about the site (and perhaps the nav if layout were to change).
Navigation functional n n The nav component will contain links used to navigate to different views within the application.
Create Objects functional n y The user will enter data to create an object.
Show Charts functional y y The user will enter data to create an object.

Time Estimates

Use this section to estimate the time necessary to build out each of the components you've described above.

Task Priority Estimated Time Time Invested Actual Time
Setup Rails Server Basics H 3 hrs __ hrs __ hrs
Setup User Authentication H 3 hrs TBD TBD
Models / Controllers H 2 hrs TBD TBD
Seed Data M 2 hrs TBD TBD
Testing & Troubleshooting M 4 hrs TBD TBD
Create React App, Cleanup junk, etc. H 2 hrs TBD TBD
API Config in Client M 3 hrs TBD TBD
Build out screens/views M 3 hrs TBD TBD
Basic layout & styling M 3 hrs TBD TBD
Figuring things out and learning by doing... Priceless Priceless Priceless Priceless
TOTAL 25 hrs TBD TBD

Server (Back End)

ERD Model

A model of the data structuring for the API on the back-end:

ERD Model



Post-MVP

Post-MVP ideas for the project are plentiful.

Since both memory and the mind in general are topics I am extremely interested in, I see the MVP of "Memorization Station" as something to continue to build upon and use as a sandbox as I learn new technologies and technique, think of new tools to build, and try to imagine creative new ways to interact with or further build out the database. For example:

  • Searching for celebrities photos to use as images for the people associations.

  • Being able to build out more specific types of collections of memory objects, such as "memory palaces" containing items, "memory journeys" consisting of locations in a specific order, etc. Journeys could perhaps use a Map API to map out actual locations.

  • Perhaps allowing some interactions between multiple users/sharing of select charts or data, ability to export data sets to other software, etc.

  • Building various exercises & games, i.e. allowing the user to practice remembering the associations they build using flash cards, setting up a trivia game to used spaced repetition to help cement memorization, integrating playing cards, etc. Many possibilities.

  • As mentioned in the project prompt:

    • Ideas for the future.
    • Ideas for whenever..
    • Ideas for probably never...

Code Showcase

This section will include brief code snippets and notes highlighting functionality I found interesting or am proud of, along with a brief descriptions of the code:

Code Issues & Resolutions

Any major issues will be cataloged here along with resolution (for future referral, to act as a cautionary tale to others, and to accelerate learning by analyzing mistakes).

About

A Metaphorical Mansion for Your Memory


Languages

Language:Ruby 56.9%Language:JavaScript 35.4%Language:SCSS 5.9%Language:HTML 1.7%