OwnCourses server

by owncourses

GitHub Readme.md

OwnCourses logo

OwnCourses server

Status GitHub Issues GitHub Pull Requests License Scrutinizer Code Quality CircleCI Deploy to Heroku

OwnCourses platform provides solution for independent online course makers.

OwnCourses allows You to create unlimited courses, define your course modules, and lessons and give access to them for Your students. This server application provides API used by student portal application (build in react).

All of that can be installed on Your own server for free.

📝 Table of Contents

What's done?

  • Courses
    • Course covers
    • Course status (visible/hidden)
    • Course start/end
    • All course attachments
  • Module
  • Lessons
    • Lesson completion API
    • Lesson covers
    • Lesson attachments
    • Lesson duration
  • Basic admin panel
  • Users
    • Login
    • Password reset
    • User courses
  • Module/Course progress based on completed lessons and duration
  • Course authors
    • Image, name, bio, courses
  • Settings
    • Emails settings

Next tasks

  • Lesson homework tasks (mark as completed, left comments, interact with course author)
  • Users
    • Users progress in course (finished lessons, time spend in platform)
    • Users questions about homework's

Development installation (with docker)

Add owncourses.test to you /etc/hosts       owncourses.test

Run docker infrastructure

cd  docker/
docker-compose build
docker-compose up -d
docker-compose exec app composer install

Create local config file .env.dev.local (in project root directory - not /docker) with content:


Create database and schema

docker-compose exec app bin/console doctrine:migrations:migrate

Create admin user

docker-compose exec app bin/console app:user:create test@example.com testPassword Test User
docker-compose exec app bin/console app:user:promote test@example.com ROLE_ADMIN

Open http://owncourses.test/admin in Your browser

JWT tokens configuration

Generate keys needed for token creation and verification

openssl genrsa -out config/jwt/private.pem -aes256 4096 # set this value as JWT_SECRET_KEY env variable
openssl rsa -pubout -in config/jwt/private.pem -out config/jwt/public.pem # set this value as JWT_PUBLIC_KEY env variable