Git Product home page Git Product logo

oscards's Introduction

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.

oscards's People

Contributors

annieshinn avatar rahmteen avatar taoantaoan avatar astaiglesia avatar zbrucker avatar

Stargazers

Roman avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.