/OSCardsv2

Primary LanguageJavaScript

OS Cards

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. Learning Styles



Installation



  • Fork from this orginizational repository (should you be interested in contributing to this project)
  • Clone the repository to your local terminal and access the project from within your preferred IDE or code editor (e.g. VS Code, Atom, Sublime)
  • Use the following commands to have node package manager install application dependencies and initialize the development server :
npm install 
npm run dev

Contributing to OS Cards



  • Create your feature branch local to your terminal
git checkout -b feature/<name your feature>
  • Commit your changes
git commit -m 'feature branch description'
  • Push to your Github repository
git push origin feature/fooBar
  • Create a new Pull Request

Notes to Prospective Contributors



Front End Notes

Front End Stretch Features



Back-End Features

  • Predominant backend packages: Express and Mongoose.
    [https://expressjs.com/], [https://mongoosejs.com/docs/]
  • All persistent data is stored in a Mongo DB Atlas server.
    [https://docs.mongodb.com/manual/introduction/]
  • 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:
    [https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow]
  • 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.

https://github.com/OSLearning/OSCards