Code Monkey home page Code Monkey logo

learn-anything's Introduction

AVA

Learn Anything Slack Twitter travis badge Support

Learn Anything is an Open Source Website built by community to Learn Anything with Interactive Maps

Contents

What is Learn Anything?

Learn Anything is an Open Source Website built by community to Learn Anything with Interactive Maps.

If you want to know more about what we're trying to solve, our plans for the future, how to improve the maps, and more you can check the wiki.

Contributing

You can contribute to the website in many ways. The most easiest thing you can do to help is to simply use the website and learn things with it. And if you found a resource you like, just add it so everyone can find it too.

Since this website is fully open source, you can also help and work on new and awesome features to add to the website. Read Developing the website section for more information on how to get started with this. And if you never programmed before and this is your first Open Source project, don't be afraid to join in. There are many people that can help you both get started and make your first contribution.

We have a Slack channel we use for all our communication. Feel free to join in and learn and make this awesome thing together. ๐Ÿฆ„

Developing the website

Getting Started

These instructions will allow you to set up your own instance of Learn Anything to develop with.

Dependencies

DynamoDB is a database needed for managing and storing maps. On linux you can download and run it with the following commands.

wget https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.zip
unzip -a dynamodb_local_latest.zip   
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Elasticsearch is needed for fetching maps and suggestions on the website. On Linux you can download and run it with the following commands.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
tar -zxf elasticsearch-5.5.2.tar.gz
./elasticsearch-5.5.2/bin/elasticsearch

Running

Once you have Elasticsearch and DyamoDB up and running you can start your local instance of Learn Anything with the commands below.

git clone https://github.com/learn-anything/learn-anything
cd learn-anything
git checkout dev
npm run setup
npm start

And then connect to localhost:3000.

The first time it may take a while, since all maps will be added to elasticsearch. After that only npm start will be needed.

Testing

To run automated tests you can use either npm test or npm run test:watch. For now the tests are covering only reducers, action creators, and components.

API

Our API is still work in progress, as there will be more endpoints coming in the future, but for now here's a list of all endpoints.

Note: the full url for any endpoint is [url]/api/[endpoint], for instance if you're developing locally to get a random map you'd use http://localhost:3000/api/maps.

Endpoint Method Parameters Description
/maps GET q get suggestions or a random map
/maps/[id] GET - get map by ID
/maps/path/to/map GET - get map by path

GET /maps

Return a list of suggestions to complete the string in the q parameter. Each suggestion is in the form of:

{
  "key": "markup languages",
  "id": "1507",
  "nodesCount": 3
}

key is the search tag for the map, id is the ID to retrieve it, and nodesCount is the number of nodes present on that map.

If q is not specified a list with one random suggestion will be returned, otherwise a maximum of 10 relevant suggestions are returned.

GET /maps/[id]

Get a specific map by ID. Maps have the following format:

{
  "title": "learn anything - programming - markup languages",
  "tag": "",
  "nodes": [],
  "connections": [],
  "key": "markup languages"
}
  • title is the path to a map
  • tag is a custom tag for searching the map
  • key is the same as tag if tag is specified, otherwise it's the last topic on title
  • nodes a list of the nodes contained on the map
  • connections a list of the connections between the nodes

GET /maps/path/to/map

Get a specific map from its path. The format is the same as the one above.

Explore our Curated Lists

With our goal of providing the most efficient paths for Learning Anything, we also manage curation of various GitHub lists.

Feel free to explore and improve them if you wish.

Keep this project going ๐Ÿ’œ

This project is built by the community, for the community and in our goals to make the most efficient paths and the best user experience possible in exploring the maps and finding the resources you need, we can only rely on donations made by our users to sustain this project.

There are no advertisements and no sponsored content in this website as that would defeat our vision of making the best and most optimal learning tracks for learning any topic in the world.

We have created a Patreon page where you can support our work. Any donation that you make to this project is incredibly valuable to keep this project going. We also have some awesome rewards that come with your support.

Thank you. ๐Ÿ’š

Team


Angelo Gazzola

Lead Web Developer


Created a complete and working version of the Website + our own mind map render system as React Component


Nikita Voloboev

Oversees curation of maps


Curated the entire index of all the maps up until this point + helps with making search the best it can be

Thank you ๐Ÿ’œ

  • To all the people who contributed to this project and this vision of liberating and visualising knowledge in this unique way.

License

MIT ยฉ Learn Anything

learn-anything's People

Contributors

nikitavoloboev avatar nglgzz avatar mattdax avatar dis-sid avatar eonist avatar zuphilip avatar ly0ko avatar

Watchers

James Cloos avatar Hamit Burak Emre 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.