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.
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 modenpm run build
thennpm start
: runs the app in production mode
- 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
- 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
- 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
- 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
- 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
Alfred @astaiglesia • Annie @annieshinn • Ramtin @Rahmteen • Tolan @taoantaoan • Zach @zbrucker
OS Cards is licensed under the GNU General Public License v3.0, also included in our repository in the COPYING file.