Skip to content

OS Cards is a flashcard based, open-source, learning aid application intended to provide options for targeting an individual's preferred learning style - e.g. visual, auditory, kinesthetic.

License

Notifications You must be signed in to change notification settings

annieshinn/OSCards

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OS Cards YetiCrab logo - half yeti, half crab

Overview

OS Cards is a flashcard based, open-source, learning aid application intended to provide options for targeting an individual's preferred learning style - i.e. visual, auditory, kinesthetic, etc.

An infographic by "Integrated Learning Strategies" displaying learning styles -- Visual, Aural, Verbal, Physical, Logical, Social, and Solitary -- along with their descriptions


Getting Started

As this project is still in its beta stages, there is no production-ready installation. Please follow the following instructions to install:

  • Fork from the OSLearning repository
  • Clone the repository to your local machine and access the project from within your preferred IDE or code editor (e.g. VS Code, Atom, Sublime)
  • Scripts to know:
    • npm install: node package manager installs application dependencies
      • this must be done once upon first cloning the project, then every subsequent time that dependencies change
    • npm run dev: runs the app in development mode
    • npm run build then npm start: runs the app in production mode

Contribution Guidelines

  • Follow the steps above to get a clone of the repo onto your machine
  • Create your feature branch local to your machine: git checkout -b <branch name>
  • Commit your changes: git commit -m '<description>'
  • Push to the relevant branch of your Github repository: git push origin <branch name>
  • Open a new Pull Request
  • Request review from one or more of the OSLearning members

Notes to Prospective Contributors

Front-End Notes

  • Component have their own independent sheets to implement styling
  • Each component also is routed to their associated index.js file
  • We have implemented Bootstrap 5 into our styling
  • All requests to our backend/database are through Axios
  • To route between our pages, we used React Routers
  • For reference to our use of 'this.props.location.state' refer to the React Router docs

Front-End Stretch Features

  • Provide flashcard text-to-speech functionality: (refer to Google text-to-speech API)
  • Provide gifs/images in addition to text (here's one solution: giphy-API)
  • Provide haptic touch response for mobile user interaction (Here and here are some good readings on the topic)
  • Provide accelerometer response for mobile user interaction
  • Provide a more robust UX implementing additional styling and/or motion design features
  • Provide delete and update functionality to the DECK component
  • Provide a "quiz" style component rendering individual flashcards showing only term or definition; tap/click to flip; swipe to deal new card
  • Create a social network of users to share saved decks

Back-End Notes

  • Predominant backend packages: Express and Mongoose
  • All persistent data is stored in a Mongo DB Atlas server
  • Web page is connected to Mongo DB Atlas via a 'mongoURI'. The existing 'mongoURI' is private and a new database cluster must be established in any future iterations of osCards.*
  • In the current iteration of OSCards, all data is stored in a single 'cards' collection; individual card documents are structured per the 'cardSchema'
  • The server is comprised of a main server.js file that directs requests to the proper router; the router in turn directs these requests to the appropriate controller file
  • The server is setup to handle:
    • POST requests to create a new document in the MongoDB database
    • GET requests to retrieve data from MongoDB

Back-End Stretch Features

  • Provide OAuth functionality
  • Enable users to 'copy' other users' existing decks
  • Modify 'cardSchema' to allow non-text data to be stored in 'card' documents
  • Handle PUT requests to modify the contents of an existing 'card' document
  • Handle DELETE requests to delete a 'card' document from the 'cards' collection
  • Handle DELETE and PUT requests to delete or modify a deck
  • Restructure database to accommodate multiple users
  • Serve deck data to the frontend as a doubly-linked-list to enable "quiz" mode. Doubly-linked-list data structure will enable forward and backward progression through a queue of cards
  • Randomize the order of cards in "quiz" mode

Contributors

Alfred @astaiglesia • Annie @annieshinn • Ramtin @Rahmteen • Tolan @taoantaoan • Zach @zbrucker

License

OS Cards is licensed under the GNU General Public License v3.0, also included in our repository in the COPYING file.

About

OS Cards is a flashcard based, open-source, learning aid application intended to provide options for targeting an individual's preferred learning style - e.g. visual, auditory, kinesthetic.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 84.8%
  • CSS 10.3%
  • HTML 4.9%