All Projects → conghao321 → Nova-MOOC-CMS

conghao321 / Nova-MOOC-CMS

Licence: other
(Still updating...) A comprehensive MOOC website’s content manage system(CMS) based on JavaEE. The tech stack includes SpringBoot, Spring Cloud, RabbitMQ, Feign and Ribbon, MySQL, MongoDB, Elastic Search etc...

Programming Languages

java
68154 projects - #9 most used programming language
FreeMarker
481 projects

Nova (V 0.0.1)

dIQ0IJ.png

This is a comprehensive project of a CMS(content-management-system) of MOOC website.

To be handy, the courses' datasource, I retrieve it from xuechengzaixian.

Overall, Nova is a B2B2C business model.

First B is representative of the application-provider: us/you.

Second B is representative of the courses' tutors.

Finally, C is the clients, which means learners.


Table of Contents



Background

Name's source

Nova is the name of the 'wild woman' in the movie . I really like this movie, in this movie, the positions of human and apes are exchanged. For apes, human are ignorance; however, after the protagonist comes into this planet, he starts to enlighten the human on that planet, including one woman, nova.

Besides, nova is also the group's name, which I am currently attending during my master degree in USC. I make friends with many nice guys here, and I really enjoy the life in USC.

Why Mooc ?

This is long story, but in short, I have experienced many Mooc website, for example, Coursera, Udemy, Udacity and Xuechengonline in China. I learned a lot from them, so for long time, I desired to build a comprehensive MOOC website myself. Here it comes.

What is CMS

CMS is the abbreviation of content management system, so what is content management system?

Basically, it is a system to manage content... Yeah, just like the name. But the question for that project is:

**What the content includes? **

The answer is simple: ALL you need to display in a MOOC website.



Tech-stack

Architecture

The project is based on Microservice Architecture. Maybe in future, it will be re-implemented by Golang...

Ofcourse, the golang version is just an illusion right now, haha...

Skeleton Framework:

The project based on Spring-Boot and Spring Cloud.

Combining them can ideally build a microservice project.

Also, it needs Maven.

Programming Langugage:

The back-end services are based on SpringBoot, so the primary language is JAVA.

However, to render some static html, we also use Freemarker.

Nowadays, the freemarker seems be abandoned for a long time...so... Maybe I will find a better way to replace it in future.

Where is Front-end?

The front-end is also a huge project and it depends on which popular framework you like.

I simply scratch it from xuechengzaixian's version, which is built by Vue.js.

Honestly, I don't like vue.js, so in future, I will rebuild it again by React.

I am a big fan of React.



Usage

Download it and import it by IntelliJ IDEA.

Maven and dependency-management

This project's modules are all dependency-managed by MAVEN.

So, check each modules(service) maven file. (pom.xml);



Services

The five basic services:

To obey the MVC development rules, we build 5 modules at first.

Common: It includes some classes needed by all other services.

Model: It includes data's model.

Parent: It is the parent module of all other modules, the purpose is to simplify our dependency-management process.

Util: It includes some utilities or tools-classes which may be needed by other services.

Api: It is to store all defined APIs.

There are usage-services...

  1. CMS(Content-management-system): the core service of the total project.

  2. Course-management: to management courses information.

  3. Media: to mange media service.

  4. Search: to search key word and course info by ElasticSearch(V8).

  5. Auth: to perform authorization based on Spring Security and Oauth2 protocol.

  6. Ucenter: to management user's info.

  7. Govern: based on Spring-Cloud to govern other services

  8. Govern-gateway: to build the gateway of the whole project.

  9. Media-Processor: every video need to be pre-processed. For example, all avi-format files need to be converted to mp4-format videos.

  10. File-System: The project's storage is based on distributed storage. Based on FastDFS, which was developed by Alibaba's engineers. Maybe there are some other better open-source file system, but I highly recommend it for anyone.

  11. Learning Center: to manage the learner's page and options. Its users' are learners..

  12. Order: thanks to simplified task-control framework, Spring and its Component Spring Task, we can perform asynchronous and distributed transactions on the cloud. Just like the procedure of a client order a transaction from a e-bank, he doesn't need to receive his money immediately.



Contributing

Hao Cong

Datasource: Xuecheng Online Mooc



License

GPL

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].