Skip to content

A Richard Feynman inspired tool to enhance knowledge and understanding for coders. A Monolithic Full-Stack Django-React Application with Vite and Yarn.

Notifications You must be signed in to change notification settings

halfpintutopia/learn-code-share-repeat

Repository files navigation

Learn Code Share Repeat

I aim to address the existing limitations in online video-sharing platforms where educational content related to programming and coding becomes outdated, irrelevant, and plagued by non-constructive comments.

I want to develop a solution that empowers coders to share their knowledge through video content in a way that ensures the content remains up-to-date, well-explained, and transparent and fosters constructive interactions among users.

The goal is to create an innovative web application that serves as a tool to enhance knowledge and understanding, taking inspiration from the Richard Feynman technique, where the quality of content is paramount, and the community of learners and experts collaborates to enhance the learning experience.

UX/UI

For further details see the following documentation:

Agile

Agile Master Plan

Future Implementations

  • Search and Discover: Improve search and discovery functionalities, allowing users to find videos by title, tags, and content type.
  • Content Moderation: Strengthen content moderation to maintain a positive and safe user experience.
  • Open-Source Components: Explore integrating open-source components for video hosting, content management, and other system-level improvements to enhance efficiency and stability.
  • Generative AI: Introduce generative AI for advanced content recommendation, summarisation, and user engagement insights.
  • Micro-Learning Modules: Introduce micro-learning modules alongside video uploads, where users can engage with short, interactive coding challenges or quizzes related to the video content.
  • Interactive Coding Environment: Offer an in-browser coding environment that allows users to practice coding while watching tutorial videos.
  • Real-Time Coding Collaboration: Enable real-time coding collaboration between users, where they can work on coding projects together.
  • AI-Driven Video Analytics: Implement AI-driven video analytics to track user interactions within videos.
  • Live Streaming Workshops: Introduce live streaming workshops and webinars where coding experts can provide real-time instruction.
  • Personalised Learning Paths: Develop an AI-based recommendation system that offers personalised learning paths for users.
  • Virtual Coding Mentor: Implement a virtual coding mentor powered by AI, which can provide personalised feedback and guidance based on a user’s coding activity and progress.
  • AI-Enhanced Collaboration: Use AI to enhance real-time coding collaboration. It can suggest solutions, identify errors, and provide real-time code analysis.
  • Gamification and Tournaments: Introduce gamification elements and coding tournaments where users can compete and earn badges or rewards for achieving coding milestones.
  • Multilingual Learning: Expand the platform to support multiple languages, making coding education accessible globally.
  • Blockchain-Based Credentials: Explore blockchain technology to issue verifiable certificates or credentials for completed courses and coding challenges.

Schema

ERD for Learn Code Share Repeat

API

For further details see the following documentation:

Deployment

This is a Monolithic Full-Stack Django-React Application with Vite and Yarn. For further details regarding deployment see the following documentation:

Local

  1. Ensure the following is installed on your machine:

  2. Create .env file and add environment variables:

    cd backend
    mv .env.sample .env
    • Add the following environment variables to the .env file:

      SECRET_KEY=your_secret_key
      DEBUG=True
      DJANGO_ALLOWED_HOSTS=localhost,
      DATABASE_URL=postgres://postgres:postgres@db:5432/postgres
      
      PIXABAY_API_KEY=https://pixabay.com/api/docs/
      PIXABAY_API_URL=https://pixabay.com/api/
      
      CLOUDINARY_URL=https://cloudinary.com/documentation/image_upload_api_reference
      CLOUDINARY_NAME=your_cloudinary_name
      CLOUDINARY_API_KEY=your_cloudinary_api_key
      CLOUDINARY_SECRET=your_cloudinary_secret
      
      EMAIL_HOST=smtp.sendgrid.net
      SENDGRID_API=your_sendgrid_api_key
      SENDGRID_FROM_EMAIL=your_sendgrid_from_email
      
      EMAIL_HOST_USER=apikey
      EMAIL_HOST_PASSWORD=your_sendgrid_api_key
      EMAIL_PORT=587
      EMAIL_USE_TLS=True
      
      SQL_ENGINE=django.db.backends.postgresql
      SQL_DATABASE=postgres
      SQL_USER=postgres
      SQL_PASSWORD=postgres
      SQL_HOST=db
      SQL_PORT=5432
  3. Clone the repository:

    git clone https://github.com/halfpintutopia/learn-code-share-repeat.git
  4. Create a virtual environment:

    python3 -m venv venv
  5. Activate the virtual environment:

    source venv/bin/activate
  6. Start backend server:

    cd backend
    docker compose up -d --build
    docker compose exec video-sharing python manage.py migrate
    docker compose docker compose exec video-sharing python manage.py createsuperuser
  7. Open the browser and navigate to http://localhost:8000/admin.

  8. Start frontend server:

    cd ../frontend
    yarn install
    yarn dev
  9. Open the browser and navigate to http://localhost:3001.

Remote

  1. Ensure the following is installed on your machine:

  2. Create a Heroku app

  3. Add the following environment variables as config vars in Heroku (1 in image below)

    Heroku Config Vars & Buildpacks

    BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git
    SECRET_KEY=your_secret_key
    DJANGO_ALLOWED_HOSTS=your_heroku_app_name.herokuapp.com,
    DATABASE_URL=postgres://postgres:postgres@db:5432/postgres
    PIXABAY_API_KEY=https://pixabay.com/api/docs/
    CLOUDINARY_URL=https://cloudinary.com/documentation/image_upload_api_reference
    CLOUDINARY_NAME=your_cloudinary_name
    CLOUDINARY_API_KEY=your_cloudinary_api_key
    CLOUDINARY_SECRET=your_cloudinary_secret
    SENDGRID_API=your_sendgrid_api_key
    SENDGRID_FROM_EMAIL=your_sendgrid_from_email
  4. Add the following URL to Heroku app Buildpacks (2 in image above)):

    https://github.com/negativetwelve/heroku-buildpack-subdir
  5. Set up deployment from GitHub repository:

    Heroku Deployment Method

    • via CLI (ensure you are in the root directory of the project)

      heroku git:remote -a your_heroku_app_name
      git subtree push --prefix backend heroku main
    • or via Heroku Dashboard

      • Connect to GitHub
        • Connect to GitHub > Search > Connect
      • Enable Automatic Deploys
      • For Manual Deploy, select the branch and click Deploy Branch
      • For Automatic Deploys, select the branch and click Enable Automatic Deploys
      • Click Deploy Branch
      • Click Open App, at the top of the page, to launch the app
      • Click More > View Logs to view the logs

References

Inspiration

Design

References | Images

References | Videos

Django

React

Packages / Libraries

Docker

GraphQL

Progressive Web App (PWA)

Additional

Newsletter Emails

About

A Richard Feynman inspired tool to enhance knowledge and understanding for coders. A Monolithic Full-Stack Django-React Application with Vite and Yarn.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published