Home
Softono

OSCards

Open source JavaScript
11
Stars
5
Forks
0
Issues
0
Watchers
4 years
Last Commit

 About OSCards

OSCards deals with implementing a handful of different learning styles, including kinesthetic, auratory, and visual, into a modern day flashcard application.

Platforms

Web Self-hosted

Languages

JavaScript

Links

Need Help Installing OSCards?

We provide expert installation service for this software. Our team will install, configure, and secure OSCards on your server. plans start at just $30.

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

  • 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, please see this link for reference:
    [https://getbootstrap.com/docs/5.0/getting-started/introduction/]
  • All requests to our backend/database are through Axios:
    [https://github.com/axios/axios]
  • To route between our pages, we used React Routers, for reference to docs, look here:
    [https://reactrouter.com/web/guides/quick-start]
  • For reference to our use of 'this.props.location.state' refer to:
    [https://reactrouter.com/web/api/location]

Front End Stretch Features

  • Provide flashcard text-to-speech functionality: (look at the Google text-to-speech API for reference:
    [https://any-api.com/googleapis_com/speech/docs/API_Description])
  • Provide gifs/images in addition to text:
    [giphy-API:https://developers.giphy.com/docs/api#endpoint]
  • Provide haptic touch response for mobile user interaction:
    [https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/haptics/],
    [https://medium.com/better-programming/adding-haptics-to-your-app-57439c358e8e]
  • Provide accelerometer response for mobile user interaction:
    [https://developer.android.com/guide/topics/sensors/sensors_overview]
  • 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 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