diff --git a/assets/css/scss/atoms/_rating.scss b/assets/css/scss/atoms/_rating.scss
new file mode 100644
index 0000000000..302ca77985
--- /dev/null
+++ b/assets/css/scss/atoms/_rating.scss
@@ -0,0 +1,44 @@
+.p-rating {
+ @apply relative flex items-center gap-1;
+
+ &-item {
+ @apply inline-flex items-center cursor-pointer outline-none rounded-lg
+ hover:outline-none hover:drop-shadow-lg;
+
+ .p-rating-icon {
+ @apply transition-none text-gray-50;
+
+ font-size: 1rem;
+
+ &.p-icon {
+ @apply w-4 h-4;
+
+ &.p-rating-cancel {
+ @apply text-danger;
+ }
+ }
+ }
+
+ &.p-focus {
+ @apply outline-none drop-shadow-lg;
+ }
+
+ &.p-rating-item-active {
+ & .p-rating-icon {
+ @apply text-warning;
+ }
+ }
+ }
+
+ &.p-readonly &-item {
+ @apply cursor-default;
+ }
+
+ &:not(.p-disabled):not(.p-readonly) &-item:hover &-icon {
+ @apply text-warning;
+ }
+
+ &:not(.p-disabled):not(.p-readonly) &-item:hover &-icon.p-rating-cancel {
+ @apply text-danger;
+ }
+}
diff --git a/assets/css/scss/index.scss b/assets/css/scss/index.scss
index a8ebf04387..f62e4dae56 100755
--- a/assets/css/scss/index.scss
+++ b/assets/css/scss/index.scss
@@ -47,6 +47,7 @@
@include meta.load-css("atoms/platform_logo");
@include meta.load-css("atoms/progressbar");
@include meta.load-css("atoms/radio");
+@include meta.load-css("atoms/rating");
@include meta.load-css("atoms/skeleton");
@include meta.load-css("atoms/tags");
@include meta.load-css("atoms/toast");
diff --git a/assets/vue/components/basecomponents/BaseRating.vue b/assets/vue/components/basecomponents/BaseRating.vue
new file mode 100644
index 0000000000..4667a4cdf8
--- /dev/null
+++ b/assets/vue/components/basecomponents/BaseRating.vue
@@ -0,0 +1,26 @@
+
+
+
+
+