- 📖 About the Project
- 💻 Getting Started
- 👥 Author
- 🔭 Future Features
- 🤝 Contributing
- ⭐️ Show your support
- 🙏 Acknowledgements
- 📝 License
A Learning Management System in short LMS is a software application for the administration, documentation, tracking, reporting, automation, and delivery of educational courses, training programs, materials, or learning and development programs. The learning management system concept emerged directly from e-learning.
It's the first API endpoint of a learning management system. This API is compliant with the JSON: API specification and uses JWT for authentication. The API has endpoints for signing in and signing up, listing courses, enrolling in a course, and listing all courses that the current user is enrolled in. Additionally, the application periodically fetches courses from a remote API and stores them locally.
The API is JSONAPI-compliant. The API supports authentication with JWT. Baked solutions like Devise::JWT or Knock weren't used; It was implemented at a lower level using bcrypt.
- User registration system.
- Course registration.
- The API has endpoints to:
- Create a new user account with the given email and password.
- Authenticate a user with the given email and password and return a JWT token.
- Return a list of all courses (including course name and description).
- Enroll the current user in a course with a given course ID.
- Return a list of all courses that the current user is enrolled in (including the names of the courses the user is enrolled in and the respective enrollment dates).
- A user may enroll in multiple courses simultaneously, and a course may have many enrolled students at the same time.
- Finally, the application also has a Sidekiq worker that periodically fetches data from a remote API and updates the local database with new courses. It was scheduled to run periodically.
- To understand the working principle of Rails authentication and authorization in depth, without having to use baked solutions like Devise and Cancancan.
- Watch a video description given by me, To be continued here
To get a local copy up and running follow these simple steps.
- Ruby
- Ruby on Rails
- PostgreSQL
- any code editor
To set up the project follow the steps:
-
Download the zip folder
-
Unzip it with any software of your choice such as WinRAR.
-
Setup the app's database
rails db:setup
-
To input existing local data run.
rails db:seed
-
To run sidekiq for sequential calling of data into the local database run
sidekiq
In the project directory, you can run:
-
rails server
Runs the app server
-
rubocop
Launches the test runner.
👤 Is-haq, Adnan Olamilekan
- GitHub: @AdnanOlarmmi
- Twitter: @AdnanIshaqOla
- LinkedIn: Adnan (Olamilekan) Is-haq
- Implement user engagement features (likes, comments, and ratings) for each course list.
- Enable users to add more personal information.
- Add View
Contributions, issues, and feature requests are welcome!
Feel free to email me for suggestions, contributions, issues and features.
If you like this project give it a star!
- Microverse
This project is MIT licensed.