Skip to content

diogo-pessoa/TheLearningHub

Repository files navigation

The Learning Hub

Build Status

View the live project here.

Description

The goal of this project is to provide a platform for content creators to share and connect with their readers. the platform provides some extra features to encourage users to sign-up for the product i.e. a private personal space, ability to save favourites content, and keep notes of video classes.

If the site owner decides he wants to monetize his premium content, the platform provides a Section to Add a Stripe Subscription information through the Control Panel, once that is added The Content creator only sets the articles and video Classes as premium content and that access wil be restricted. Once that is subscription is added a subscribe button will show-up to signed-up users.

This Project is an OpenSource solution and the goal is to reduce the Developer/site Admin involvement to a minimum while the Content Manager(Product owner), can manage his own content through the application's Control Panel. The Project is on early stages and still requires some initial Admin involvement to setup credentials and Secret Keys for AWS and Stripe integration.

If you're interested in the future features of this project check the [Future features ](README.md#Future features)

For the content manager, the platform provides:

  • A blog section — Content creator can regularly release articles, control the accessibility (free, registered or premium). Add a topic and extra tags, correlate articles with other site content.
  • A virtual classroom — Content creator can publish recorded video classes or as part of the full course, limiting access to the public.
  • A control Panel to edit Site Pages, such as Home, About, Pricing. Also links to create new Content(articles and video Classes).

There are three options for the users to explore the content:

  • Anonymous access, user can read all articles and related discussion, not tagged as restricted access(Premium Content)
  • Registered user, provides access to all free content. The user has its personal space with a list of favorite content and saved video Class notes; Once registered, the user can also Subscribe to the premium plan for extra content.
  • Premium access, monthly subscription model. Unlock access to all the site content for as long as the subscription is active.

The pricing model and Value to the Content Owner:

While selling his premium content, a site owner can connect to his public, understanding their needs and doubt and ever evolving this content. Provides different access to content, by selling single courses for more advanced users and also more guided course paths to beginners. All that while creating a distinct brand for content.

The value for the user:

By providing different levels of access to content, the Learning Hub platform has something for every user. As a registered user, she enjoys a whole set of features that will allow her to develop new skills. Taking her time to select the premium content that has most value to her.

User Experience (UX)

User stories

Design

In order to focus on the application features, This projects relies on bootstrap4 and a openSource(MIT License) them from Bootswatch. By leveraging these technologies this platform is made responsive to different devices and screen sizes.

Colour Scheme & Typography

From Bootswatch sandstone

Wireframes

Technologies Used

Languages Used

Frameworks, Libraries & Programs Used

  1. PyCharm:

    • A fully featured Python IDE, with great support for code syntax, test frameworks and version control integration
  2. Bootstrap4:

    • To leverage the grid system and build a responsive interface.
    • Used by the Open source theme from Bootswatch sandstone
  3. Balsamiq:

    • Balsamiq was used to create the wireframes during the design process.
  4. Draw.io:

    • Draw.io was used to create the Entity Relationship diagram during the design process.
  5. Google Fonts:

    • Used by the Open source theme from Bootswatch sandstone
  6. Font Awesome:

    • Font Awesome was used on all pages throughout the website to add icons for aesthetic and UX purposes.
    • Used by the Open source theme from Bootswatch sandstone
  7. jQuery:

    • jQuery to support advanced features on Bootstrap
  8. GitHub:

    • GitHub is used to store the projects code after being pushed from Git.
  9. django

  10. heroku

    • Is used to host application in the cloud providing scalability and availability.
  11. postgres

    • Relational database used to store application content.
  12. gunicorn

    • Web server used to host Django web framework
  13. TinyMCE

    • Used to provide content manager with better experience when writing content for Articles
  14. travis.com - Run automated tests from codebase.

    1. Test information on Testing.md
  15. Stripe - A fully integrated suite of payments products

    1. Deployment details on Deployment.md
  16. AWS S3 - A powerful Object storage for distributed content Delivery

    1. Deployment details on Deployment.md

Testing

Testing

Deployment

Deploy

Credits

Code & Acknowledgements

These items are listed to credit to some articles and discussions I used during the creation of this project. In same cases I re-used some shared code or just based features on the suggestions.

Content & Media

All Content was generated by me

Future features

These won't be available on Project submission due to time constraints

Future features or pending fixes.

  • content Pagination on pages with listed objects:

    • Both the File Uploads list and the Learning Area objects listed on the Page, should be paginated for the ease of navigation.
  • Course path — As a content manager, the site provides the ability to group the content (articles, classes) into a single course path, to help guide users to mastering the content.

User Requests
  • As a User, I want to see the Author Page and list content by the author.
  • As a User, I want to filter articles by topic or date(latest).
  • [Pending Fix] On page Reload Video restarts, the Bookmarks buttons is causing a page Reload.
Content Manager Requests
  • As a Content Manager, I want to customize site Elements, such as Main title, site color.
  • As a Content Manager, I want to create new Topics from the Control Panel interface
    • Developer note, for now this can be done by using the /admin interface
  • [Pending Fix] On a Hard Reload(forcing cache clean-up) of page the Page/Article content form fields are cleared.
    • I want the article content to be saved temporarily to avoid losing content if I accidentally refresh my page.
  • I want a confirmation after clicking on delete button, to avoid accidental removals.

Stripe Integration future features.

  • Support single Product sale.

    • At the moment the Application only supports subscriptions using the Stripe integration. As a content Manager as I want to be able to sell single article, video_classes or Courses, on demand, even if user is not a Premium member.
  • Create Stripe Product integration through the LearningHub Content Manager interface

    • Stripe provides an API to create products and prices, This provides a nice to have feature where Site owner can do it through the Learning hub interface. Not needing to navigate to Stripe to create new Products, more information here
  • Cancel subscription at the end of billing period

    • Stripe provides support to cancel at end of Billing Period description: After canceling, customers can still renew subscriptions until the billing period ends.
    • For that the toggle on theLearningHub database needs to happen at end of subscription period.
      • such thing can be achieved with a background scheduler, doing some research there are some schedulers for django

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages