Giter VIP home page Giter VIP logo

memcode's Introduction

Memcode

Flashcards for coders and scientists. Open-source, free for all.

Memcode Screenshot

Links

Website: memcode.com
Patreon: patreon.com/memcode
Email: [email protected]
Twitter: twitter.com/memcodeapp
Alternative.to: alternativeto.net/software/memcode/about

Contributing

First of all - you are very welcome to contribute, Memcode is a joint effort.
Feel free to ask questions/propose features in github issues, or join our developer Slack (please write to [email protected] to request access).

Create a database postgres user with a password.

  1. Install PostgreSQL.
  2. Go to postgres console: psql postgres.
  3. Create a postgres user with password: CREATE ROLE postgres WITH LOGIN PASSWORD 'postgres';.
  4. Give the user a permission to create dbs, own all extensions, etc.: ALTER ROLE postgres with superuser;.

Copypaste environment variables.

  1. Copy the example environment file with cp env.example.js env.js
  2. Insert the necessary values - all those marked with "Required for local development"

Install the needed libraries.

  1. Install npm.
  2. Run npm install

Set up the database.

  1. Create a new development database 'memcode': make db-reset. This will create the raw database for you - schema, a few necessary database rows, and nothing else. If you would like a bigger database to have something to work with, please write to [email protected], and I will create a development dump for you.

Start code compilers and server.

  1. Run make all in your terminal. This will start:
  • make backend-webpack (compiles the backend code on every change)
  • make frontend-webpack (compiles the frontend code on every change)
  • make start (starts the node server) for you.
    You can also run these separately if you wish to see the individual output.
  1. Go to http://localhost:3000, and enjoy the development!

Memcode Logo

memcode's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

memcode's Issues

Sound recordings

From the email:

Understood, so there could be
(on creation of the flashcard) a little microphone icon that would let you record something, and
(on review of the flashcard) some audio icon that would let you listen to that recording.

Interesting idea, but how useful can it be? Maybe the api call to google dictionary may be more handy (in particular for language learners).

Open link in new tab

In the footer section, clicking "Blog", "Contact" or "Github" should make the page to be opened in a new tab.

image

/courses: create section '4 best courses of the week'

On /courses page, there should be a link to 'Home' on top of the CourseCategories navigation:

image

On that page, we will have:

  • 4 manually selected best courses of the week (for this we will need to create the course.if_course_of_the_week field in the database).
  • 4 most recently created courses

Profile pages

Per-user profile pages, where users can:

  • update their emails/avatars
  • courses user is an author of are listed
  • courses user is learning
  • activity log (see #19)
  • ability to follow the user

Request ability to add personal tags to cards you are learning and filter cards in learning/reviewing sessions by tags

Anki lets you add tags to cards when you create them and then you can study just portions of a "course" by only reviewing cards in a certain course that have a particular tags or set of tags.

The benefit of using personal tags in addition to courses to organize cards, is that tags can be quickly added and removed, they are temporary and a card can have multiple tags, letting it belong to multiple subsets of "learning groups".

Having tags would allow you to quickly focus on learning just certain cards in a course, without having to permentally move those cards to a whole new course.

Some of the users' avatars don't exist anymore.

Users sign up via github/google, and something the url to their avatars changes, which means we get this look:

  • As soon as user signs up - let's upload their avatar to our AWS S3, and store that link instead.
    We already have amazon credentials for AWS S3 storage, let's use those.
  • We should also create a script that refetches stale user images from their Google and Github accounts.

MIT License

Related to #4. I'm not seeing the source license. I would like to share and modify, but don't see permission to do so. Thank you so much for an awesome project!

Alternate missing words

I have an idea for the flashcards. It would be cool if you can have alternate flashcards for one card or question. How I'm going about this as of now is writing out a separate flashcard for the same sentence but different the fill in the blank answer. Also alternate answers would be a good addition.

[From gmail]

Import/export

Thank you for making this project. I haven't used it much, but the little I've used, it's worked very well.

I think it would be a nice feature to be able to import/export flashcards/courses. That would make it easier to upload courses from memrise or anki decks.

Rating for each flashcard

Rating is now available on a course as a whole.
Rating on each flashcard can provide feedback on how well it was "understood" by the user.
This can be done during "learning" mode or "review" mode.

This could potentially be distracting during a review session. Enabling the rating can be disabled or enabled at the beginning of a review session.

New FlashCard creation pane can be located at the top

This appears now at the bottom of all the existing cards.
So to add a new card, the user has to scroll all the way to the end of all cards.

Several times I have wished that this addition dialog could be available at the very top.

New Feature: Introduce a Chatbot

Evgenia,

One of our student developers(Mr. Deepak Chakravarthy) has come up with an idea of introducing chatbots in the site. This chatbot can be helpful to communicate with the users of the platform, report issues etc., We would like to know the feasibility/use case of the feature from your point. We can have a brainstorming session, if needed.

Ref Chatbot Link: https://www.tawk.to/ - We can use this framework to develop the chatbot. Deepak has some expertise on this.

Set up emails

Google: 'node, how to send emails', and research this topic.
Choose the library to implement this with.
Implement it :-)

Right now we do not send emails at all, - users don't get the email when they sign up, users don't get the email when someone joins their course, users don't get reminders for when to repeat their flashcards. All of this could be highly beneficial to users (one user wrote me she literally forgot the url and couldn't find memcode again!).

License for memcode

Hi! Thanks a lot for this project. It's lightweight, but very well-rounded.

I was wondering under which license you want to release this code; a LICENSE file is missing. I want to self-host this for a (non-public) limited amount of users and courses, but I need to modify some things to allow single signon. Anywhere from BSD, MIT to (A)GPL would be fine for that.

Thanks again!

Quill editor: fix Korean character merging bug

From the email:

Hi, I wanted to let you know about an error I caught, I still haven't had time to do a dev environment yet and may look into it myself, but I often study Korean, and when I try to input characters, they get separated and don't form the character (see screenshot, for example those three characters should form one unit, and not be spaced out separately. I don't know what is causing it but it really slows down input of info into the boxes. It may be the same for other languages and characters too.

Is there a similar issue with the indian alphabet?
The way to tackle this issue is basically to google something along the lines of 'Quill' + 'korean', and then see if any solutions work for us. Bonus points if you find how to test the solution.

Moving multiple cards

Right now, I am able to select one card and move that one alone.
It would be nice to move multiple cards at the same time.

Multiple authors for a course

Can a course have multiple authors, allowing for collaboration.
I am encouraging students to collaborate and produce flashcards as a team of 4-10.

The new page: /search?string="algorithms"

image

Right now there are many great courses, but it's quite hard to find them.
It should be possible to press ENTER in the search bar in the header, - and that should redirect us to the /search page.

There you should be able to see all the courses found real-time as you type in the bigger-size search bar (bonus points for joining your efforts with the designer!).

Right now we are only searching in the course title and description. On this page, - let's search in flashcards content too.

We need a blog

I considered the use of some existing blog engines, but I'm inclined to create it ourselves - this way it will be properly integrated into Memcode's designs, and we'd be able to use any js/css we'd like for every blog post.

I suggest we add the blog post table:
slug: 'comparison-between-SR-sites',
authorId: userId, (this will let us use the useraname, avatar, etc. of the existing Memcode user),

When user goes to memcode.com/blog/comparison-between-SR-sites url, - React router routes them to the memcode.com/blog/:slug page, which is located in the /frontend/pages/blog_slug folder. There, manually, based on the slug, - we will render a particular article, that we write in vanilla html.

Related emails: https://mail.google.com/mail/u/1/#inbox/WhctKJVzZKtTnLzKHjnkStclGtsMbQsTCGSfNqblfkWGvzZrZMwwbTscGwLZSMfxXxNFNDL.

We shouldn't refresh notifications on every page + fix localStorage

  1. Notifications should be renewed without setting { status: 'request' } on subsequent api calls.

  2. There shouldn't be a residual '1 notification is unread' when we:

  • have one notification
  • mark it as read
  • switch to another page, and see one notification as unread for a few seconds.

This happens because we don't update value in our localStorage whenever amount of unread notifications changes.

Design: how could the /users/:id page look?

The profile page needs to be more engaging.

image

Some suggestions:

  • Courses of other people this user is learning
  • Courses this user gave the rating to (and what rating)
  • What users he's associated with (friends/followers)
  • His stats: learned this many flashcards, this many users are learning his courses, created this many courses.
  • Notifications of this user (same as in the notification dropdown)

image

Design: add features section to the welcome page

https://www.memcode.com/articles/welcome is our landing page.

There needs to be a section with our features. Example of the features are:

  • one of the only sites with the gifs allowed!
  • accessible, navigate by shortcuts and tabs
  • beautiful
  • fast course creation
  • formatting for free, for all, - formulas, code highlighting
  • good for studying at nighttime (look at our colors!)
  • SM2 algorithm
  • open source

This section should be interesting to read, - consider adding some icons.

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.