{"id":16427374,"url":"https://github.com/albertarakelyan/learnfinity","last_synced_at":"2025-07-02T08:04:03.768Z","repository":{"id":246421059,"uuid":"739761959","full_name":"AlbertArakelyan/learnfinity","owner":"AlbertArakelyan","description":"📖 A modern and user-friendly app for creating and sharing learning content only based on outer resources, found some great things on the internet then create an amazing Learning Path from them which will guarantee the desired skill.","archived":false,"fork":false,"pushed_at":"2024-10-07T08:47:42.000Z","size":5349,"stargazers_count":6,"open_issues_count":20,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-12T08:12:41.058Z","etag":null,"topics":["educational-content","educational-content-sharing","learning","learning-paths","mongodb","nodejs","react","web-application"],"latest_commit_sha":null,"homepage":"https://learnfinityplus.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlbertArakelyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-06T13:20:26.000Z","updated_at":"2024-10-03T04:24:15.000Z","dependencies_parsed_at":"2024-06-27T22:29:51.301Z","dependency_job_id":"fce2d3bb-b850-42e6-9aa6-72844b708441","html_url":"https://github.com/AlbertArakelyan/learnfinity","commit_stats":null,"previous_names":["albertarakelyan/learnfinity"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertArakelyan%2Flearnfinity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertArakelyan%2Flearnfinity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertArakelyan%2Flearnfinity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlbertArakelyan%2Flearnfinity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlbertArakelyan","download_url":"https://codeload.github.com/AlbertArakelyan/learnfinity/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221811374,"owners_count":16884305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["educational-content","educational-content-sharing","learning","learning-paths","mongodb","nodejs","react","web-application"],"created_at":"2024-10-11T08:12:36.990Z","updated_at":"2024-10-28T09:19:23.046Z","avatar_url":"https://github.com/AlbertArakelyan.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/albertarakelyan"],"categories":[],"sub_categories":[],"readme":"# 📖 Learnfinity Plus\n\n\u003e A modern and user-friendly app for creating and sharing **Learning Paths** written in React/Typescript and Express/Nodejs.\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/AlbertArakelyan/learnfinity)\n![Language](https://img.shields.io/badge/language-typescript%2C%20nodejs-blue)\n![Platforms](https://img.shields.io/badge/platforms-Browser-green)\n![License](https://img.shields.io/github/license/AlbertArakelyan/learnfinity)\n\n![Screenshot](./screenshot.png)\n\n**What is a Learning Path?**  \nA learning path is a structured guide that helps individuals achieve specific educational goals by organizing topics and resources in a logical sequence. It offers several benefits:\n\n- Provides a clear roadmap for mastering a subject.\n- Breaks down complex topics into manageable steps.\n- Encourages consistent progress and self-paced learning.\n- Facilitates skill development with tailored resources.\n\n---\n\n## 📝 About the project\nA modern and user-friendly app for creating and sharing learning content only based on outer resources, find some great things on the internet then create an amazing Learning Path from them which will guarantee the desired skill.\n\n## 🔑 Key Features\n- Works on **Browser**\n- Databse in **the Cloud** for **Users**\n- Public **Learning Path** creation\n- Private **Learning Path** creation\n- **Settings** and **Profile** pages\n- **Dark Theme** 😊\n\n## 🙏 Donations\nLearnfinityPlus is a free, open source software developed in my (little) spare time. If you liked the project and would like to support further development, please consider making a small donation, it really helps :)\n\n\u003ca href=\"https://www.buymeacoffee.com/albertarakelyan\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"width: 108px !important;\" \u003e\u003c/a\u003e\n\n## 👨‍💻Contibutors\nPeople who helped the project along the way, thank you to all of you!\n\n[![Image](https://contrib.rocks/image?repo=AlbertArakelyan/learnfinity)](https://github.com/AlbertArakelyan/learnfinity/graphs/contributors)\n\n## 🏰 Architecture\n### Backend\nStandard adjusted [Node.js](https://nodejs.org/en) + [Express.js](https://expressjs.com/) architecture based on different best practices with very good expressed **Data Access Layer**. For the database I have used [MongoDB](https://www.mongodb.com/) with [Mongoose](https://mongoosejs.com/) ODM.\n\n### Frontend\nStandard [React](https://reactjs.org/) + [Redux](https://redux.js.org/) with [Typescript](https://www.typescriptlang.org/) usage. Has been used a modified **View-Container** architecture with special hooks providing all the business logic to the **Container** giving an advantage of not writing prop types and interfaces for each component but extend from the ReturnType of the hook.\n\n### Tech Stack\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eFrontend\u003c/th\u003e\n      \u003cth\u003eBackend\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cdiv\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/typescript/typescript-original.svg\" width=\"40\" height=\"40\" title=\"Typescript\" alt=\"Typescript\"\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/react/react-original.svg\" width=\"40\" height=\"40\" title=\"React\" alt=\"React\"\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/redux/redux-original.svg\" width=\"40\" height=\"40\" title=\"Redux\" alt=\"Redux\"\u003e\n          \u003cimg src=\"https://testing-library.com/img/octopus-128x128.png\" width=\"40\" height=\"40\" title=\"Testing Library\" alt=\"Testing Library\"\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/sass/sass-original.svg\" width=\"40\" height=\"40\" title=\"Sass\" alt=\"Sass\"\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cdiv\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/nodejs/nodejs-original.svg\" width=\"40\" height=\"40\" title=\"Nodejs\" alt=\"Nodejs\"\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/express/express-original.svg\" width=\"40\" height=\"40\" title=\"Express\" alt=\"Express\"\u003e\n          \u003cimg src=\"https://github.com/devicons/devicon/blob/master/icons/mongodb/mongodb-original.svg\" width=\"40\" height=\"40\" title=\"MongoDB\" alt=\"MongoDB\"\u003e\n          \u003cimg src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/mongoose/mongoose.png\" title=\"Mongoose\" alt=\"Mongoose\" width=\"40\" height=\"40\"/\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## 📦 Installation\n_Note: make sure you have `.env` created from `.env.example` with appropriate variables._\n\n_Note: Make sure you are using correct `node` and `yarn` versions._\n\n### Versions\n- node: `20.10.0`\n- npm: `10.2.3`\n- yarn: `1.22.21`\n\n### Repo\n- Clone the repo\n```bash\ngit clone https://github.com/AlbertArakelyan/learnfinity.git\n```\n\n### Server\n*in `server` directory*\n- Install dependencies\n```bash\nyarn\n```\n\n- Start the server\n```bash\nyarn dev\n```\n\nThe development server will start running at: `http://localhost:8000`\n\n### Client\n*in `client` directory*\n- Install dependencies\n```bash\nyarn\n```\n\n- Start the client\n```bash\nyarn start\n```\n\nThe development client will start running at: `http://localhost:3000`\n\n[//]: # (## 🚀 How to use)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertarakelyan%2Flearnfinity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falbertarakelyan%2Flearnfinity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertarakelyan%2Flearnfinity/lists"}