Simple Content Management System, where user can manage content of specific data types.
This project will create a simple Content management system, where user can manage content of the following types.
- Lists with metadata information.
- Documents with metadata.
Application with authentication and authorization. More specifically:
The application will have three predefined/fixed user roles. Administrator, Designer and Contributor. Contributor will be able to add content to existing lists and upload Documents. Designer will be able to create new List definitions or Document Libraries (and anything contributor can do). Administrator will be able to do everything Designer can, plus user management.
- Use spring initializer.
- Use Gradle/java settings
Add the following:
- lombok
- spring web,
- rest repositories,
- spring security,
- spring data jpa,
- postgresql driver
Configure the application's database to connect with a postgresql database. CRUD interface of users. Configure Spring Security to use users from the database.
A ContentDefinition entity will have the following:
- Type (list|Library)
- Name
- List metadata
Metadata entity will have:
- Label
- Description
- Type [Text, Number, List Name]
Designers will have CRUD interface to create metadata entities and ContentDefinition entities. Each new ContentDefinition will be a new List or Library where contributor will be able to add data content.
CRUD Rest interface now will allow users to add/remove/update list content or libary documents. Documents will be uploaded to the file sytem.
Add docker to gradle. Docker compose should run now postgres and web application via docker. Add a second angular hellow project, via node, when angular runs you should be able to access the hello page. Add a gradle multimodule project, configure angular build via gradle add everything in docker. Add in docker compose apache 2 and configure angular and web app to go through apache/port 80.