Nova (V 0.0.1)
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...
-
CMS(Content-management-system): the core service of the total project.
-
Course-management: to management courses information.
-
Media: to mange media service.
-
Search: to search key word and course info by ElasticSearch(V8).
-
Auth: to perform authorization based on Spring Security and Oauth2 protocol.
-
Ucenter: to management user's info.
-
Govern: based on Spring-Cloud to govern other services
-
Govern-gateway: to build the gateway of the whole project.
-
Media-Processor: every video need to be pre-processed. For example, all avi-format files need to be converted to mp4-format videos.
-
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.
-
Learning Center: to manage the learner's page and options. Its users' are learners..
-
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