Giter Site home page Giter Site logo

mat-flashcards-api's Introduction

Mat Flashcards&Sentences app

tl;dr

  • Ruby on Rails backend (hosted on Fly.io) and React frontend (hosted on netlify.com)
  • Backend:
    • https://mat-flashcards.fly.dev
    • Gitgub repo: mat_flashcards_api
    • RoR: api, CanCanCan, Devise, jwt, Warden (custom strategy), has_secure_token, enum, service objects, query objects, httparty, Nokogiri, web scraping, xpath, custom validation, PostgreSQL, polymorphic associations, self joins, Rspec
  • Frontend:
    • https://mat-flashcards.netlify.app
    • Gitgub repo: mat-flashcards-front
    • React: class and function components, useState, useEffect, conditional render, axios, runtimeEnv, bootstrap, react-bootstrap, custom css, react-toastify, localStorage, backend authorisation with request headers

About

Mat Flashcards&Sentences is a prototype educational app creatively based on cram.com and quizlet.com services, as well as Sentence Master Android App, which I used to utilize in my work as an English teacher. My intention was to combine the most valuable features of each of them while adding a few new ideas.

I strongly believe that using flashcards is one of the best ways of memorizing various types of information and a crucial tool when learning languages. Learning the vocabulary usage seems to be an obvious further step, that's why I decided to include a functionality to study complete sentences.

The main goal of developing the project has been to practise building a functional web app, however I really appreciated the notion of creating a potentially useful educative tool.

Details

The app consists of RoR backend and React frontend working separately, communicating via http requests.

RoR backend main features:

  • Basic user interface (registration, login, modifying personal data) - user account enables creating their own flashcard/sentence sets, modifying existing ones (with “shared” flag) and displaying basic statistics.
  • Unlogged users can study “shared” flashcard/sentence sets, logged users can open their own flashcard/sentence sets as well.
  • User roles (student, teacher, admin) distinguish possible actions in the app. Admin role users can manage all the resources in the app except for statistics. Users with a teacher role can share specific flashcard/sentence sets with their students (“class” sets) and see their learning statistics. A teacher can be associated with the user during registration thanks to a token pointing to a specific teacher. A teacher can generate multiple unique and one-off tokens and distribute them to their students.
  • A user can add a new flashcard/sentence set or modify an existing one. A single flashcard/sentence can be added or modified as well. Users can have two types of flashcard/sentence sets: “personal” (seen only by the owners) and “shared” (seen by all logged and unlogged users). A teacher can add “class” flashcard/sentence sets which can be seen by their students.
  • Apart from creating their own sentences, sentences can be scrapped from several leading online dictionaries. When accessed for the first time (database query return empty array) the whole dictionary entries are loaded using httparty and parsed with Nokogiri. Then the sentences are saved in the database and can be fetched with the minimal waiting time.

mat-flashcards-api's People

Contributors

mat-jar avatar

Watchers

Justyna Wojtczak 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.