diff --git a/build.gradle.kts b/build.gradle.kts
index ea910ab..9436950 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -11,7 +11,7 @@ plugins {
 }
 
 group = "com.aitrainer"
-version = "1.0.35"
+version = "1.0.36"
 java.sourceCompatibility = JavaVersion.VERSION_1_8
 
 repositories {
diff --git a/data/db/install.sql b/data/db/install.sql
index 68abd64..d2d3d4e 100644
--- a/data/db/install.sql
+++ b/data/db/install.sql
@@ -383,6 +383,31 @@ CREATE TABLE IF NOT EXISTS `django_admin_log` (
   CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci;
 
+CREATE TABLE `description` (
+	`description_id` INT(11) NOT NULL AUTO_INCREMENT,
+	`name` CHAR(50) NOT NULL COLLATE 'utf8_hungarian_ci',
+	`description` TEXT NOT NULL COLLATE 'utf8_hungarian_ci',
+	`version` INT(3) NULL DEFAULT '0',
+	`valid_from` DATETIME NULL DEFAULT NULL,
+	`valid_to` DATETIME NULL DEFAULT NULL,
+	PRIMARY KEY (`description_id`) USING BTREE,
+	INDEX `name` (`name`) USING BTREE
+)
+COLLATE='utf8_hungarian_ci'
+ENGINE=InnoDB
+;
+
+CREATE TABLE `description_translation` (
+	`translation_id` INT(13) NOT NULL AUTO_INCREMENT,
+	`description_id` INT(11) NOT NULL,
+	`language_code` CHAR(2) NOT NULL DEFAULT 'en' COLLATE 'utf8mb4_general_ci',
+	`description_translation` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
+	PRIMARY KEY (`translation_id`) USING BTREE
+)
+COLLATE='utf8mb4_general_ci'
+ENGINE=InnoDB
+;
+
 -- Tábla adatainak mentése aitrainer2.django_admin_log: ~118 rows (hozzávetőleg)
 /*!40000 ALTER TABLE `django_admin_log` DISABLE KEYS */;
 REPLACE INTO `django_admin_log` (`id`, `action_time`, `object_id`, `object_repr`, `action_flag`, `change_message`, `content_type_id`, `user_id`) VALUES
diff --git a/data/db/update_1_0_36.sql b/data/db/update_1_0_36.sql
new file mode 100644
index 0000000..8535d19
--- /dev/null
+++ b/data/db/update_1_0_36.sql
@@ -0,0 +1,30 @@
+START TRANSACTION;
+
+CREATE TABLE `description` (
+	`description_id` INT(11) NOT NULL AUTO_INCREMENT,
+	`name` CHAR(50) NOT NULL COLLATE 'utf8_hungarian_ci',
+	`description` TEXT NOT NULL COLLATE 'utf8_hungarian_ci',
+	`version` INT(3) NULL DEFAULT '0',
+	`valid_from` DATETIME NULL DEFAULT NULL,
+	`valid_to` DATETIME NULL DEFAULT NULL,
+	PRIMARY KEY (`description_id`) USING BTREE,
+	INDEX `name` (`name`) USING BTREE
+)
+COLLATE='utf8_hungarian_ci'
+ENGINE=InnoDB
+;
+
+CREATE TABLE `description_translation` (
+	`translation_id` INT(13) NOT NULL AUTO_INCREMENT,
+	`description_id` INT(11) NOT NULL,
+	`language_code` CHAR(2) NOT NULL DEFAULT 'en' COLLATE 'utf8mb4_general_ci',
+	`description_translation` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
+	PRIMARY KEY (`translation_id`) USING BTREE
+)
+COLLATE='utf8mb4_general_ci'
+ENGINE=InnoDB
+;
+
+UPDATE configuration set config_value = "1.0.36", date_change=CURRENT_DATE WHERE config_key = "db_version";
+
+COMMIT;
diff --git a/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt b/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt
index cf36fb1..d4668cc 100644
--- a/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt
+++ b/src/main/kotlin/com/aitrainer/api/controller/PackageController.kt
@@ -22,7 +22,8 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe
                         private val exercisePlanTemplateRepository: ExercisePlanTemplateRepository,
                         private val evaluationRepository: EvaluationRepository,
                         private val sportRepository: SportRepository,
-                        private val tutorialRepository: TutorialRepository
+                        private val tutorialRepository: TutorialRepository,
+                        private val descriptionRepository: DescriptionRepository
 ) {
     private val logger = LoggerFactory.getLogger(javaClass)
 
@@ -67,6 +68,9 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe
         val listTutorials = tutorialRepository.findAll()
         val listTutorialJson: String = gson.toJson(listTutorials)
 
+        val listDescriptions = descriptionRepository.findAll()
+        val listDescriptionJson: String = gson.toJson(listDescriptions)
+
         val packageJson: String =
                     getClassRecord(ExerciseDevice::class.simpleName, listDevicesJson) +
            "|||" +  getClassRecord(Product::class.simpleName, listProductsJson) +
@@ -78,7 +82,8 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe
            "|||" +  getClassRecord(ExercisePlanTemplate::class.simpleName, listPlanTemplateJson) +
            "|||" +  getClassRecord(Evaluation::class.simpleName, listEvaluationJson) +
            "|||" +  getClassRecord(Sport::class.simpleName, listSportsJson) +
-           "|||" +  getClassRecord(Tutorial::class.simpleName, listTutorialJson)
+           "|||" +  getClassRecord(Tutorial::class.simpleName, listTutorialJson) +
+           "|||" +  getClassRecord(Description::class.simpleName, listDescriptionJson)
 
         return if (packageJson.isEmpty()) ResponseEntity.notFound().build() else
             ResponseEntity.ok().body(packageJson)
diff --git a/src/main/kotlin/com/aitrainer/api/model/Description.kt b/src/main/kotlin/com/aitrainer/api/model/Description.kt
new file mode 100644
index 0000000..0356f7e
--- /dev/null
+++ b/src/main/kotlin/com/aitrainer/api/model/Description.kt
@@ -0,0 +1,22 @@
+package com.aitrainer.api.model
+
+import com.google.gson.annotations.Expose
+import org.hibernate.annotations.Fetch
+import org.hibernate.annotations.FetchMode
+import org.springframework.lang.NonNull
+import javax.persistence.*
+
+@Entity
+data class Description (
+    @Expose @Id  @GeneratedValue(strategy = GenerationType.IDENTITY) @get: NonNull var descriptionId: Long = 0,
+    @Expose @get: NonNull var name: String,
+    @Expose @get: NonNull var description: String,
+    @Expose @get: NonNull var version: Int? = null,
+    @Expose @get: NonNull var validFrom: String? = null,
+    @Expose @get: NonNull var validTo: String? = null
+) {
+    @OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "mainDescription")
+    @Fetch(value = FetchMode.SUBSELECT)
+    @Expose val translations: List<DescriptionTranslation> = mutableListOf<DescriptionTranslation>().toList()
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/aitrainer/api/model/DescriptionTranslation.kt b/src/main/kotlin/com/aitrainer/api/model/DescriptionTranslation.kt
new file mode 100644
index 0000000..8864430
--- /dev/null
+++ b/src/main/kotlin/com/aitrainer/api/model/DescriptionTranslation.kt
@@ -0,0 +1,18 @@
+package com.aitrainer.api.model
+
+import com.fasterxml.jackson.annotation.JsonIgnore
+import com.google.gson.annotations.Expose
+import org.springframework.lang.NonNull
+import javax.persistence.*
+import javax.validation.constraints.NotBlank
+
+@Entity
+data class DescriptionTranslation (
+    @Expose @Id  @GeneratedValue(strategy = GenerationType.IDENTITY) @get: NonNull var translationId: Long = 0,
+    @Expose @get: NotBlank var languageCode: String? = "hu",
+    @Expose @get: NonNull var descriptionTranslation: String? = null
+) {
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "descriptionId", nullable = false)
+    @JsonIgnore val mainDescription: Description? = null
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/aitrainer/api/repository/DescriptionRepository.kt b/src/main/kotlin/com/aitrainer/api/repository/DescriptionRepository.kt
new file mode 100644
index 0000000..016a056
--- /dev/null
+++ b/src/main/kotlin/com/aitrainer/api/repository/DescriptionRepository.kt
@@ -0,0 +1,9 @@
+package com.aitrainer.api.repository
+
+import com.aitrainer.api.model.Description
+import org.springframework.data.jpa.repository.JpaRepository
+import org.springframework.stereotype.Repository
+
+@Repository
+interface DescriptionRepository: JpaRepository<Description, Long> {
+}
\ No newline at end of file
diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties
index 2a68045..39bb83c 100644
--- a/src/main/resources/application-prod.properties
+++ b/src/main/resources/application-prod.properties
@@ -17,6 +17,6 @@ logging.config=classpath:logback-spring.xml
 logging.file=logs
 
 # if the database structure has been changed, increment this version number
-application.version=1.0.35
+application.version=1.0.36
 
 jwt.secret=aitrainer
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 57eeed2..1e7f922 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -17,6 +17,6 @@ logging.config=classpath:logback-spring.xml
 logging.file=logs
 
 # if the database structure has been changed, increment this version number
-application.version=1.0.35
+application.version=1.0.36
 
 jwt.secret=aitrainer
\ No newline at end of file
diff --git a/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt b/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt
index b16d03a..f09fc92 100644
--- a/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt
+++ b/src/test/kotlin/com/aitrainer/api/test/AppPackageTest.kt
@@ -39,6 +39,8 @@ class AppPackageTest {
     private lateinit var sportRepository: SportRepository
     @Autowired
     private lateinit var tutorialRepository: TutorialRepository
+    @Autowired
+    private lateinit var descriptionRepository: DescriptionRepository
 
     @Test
     fun testAppPackage() {
@@ -55,7 +57,8 @@ class AppPackageTest {
             exercisePlanTemplateRepository,
             evaluationRepository,
             sportRepository,
-            tutorialRepository
+            tutorialRepository,
+            descriptionRepository
         )
         val response: ResponseEntity<*> = controller.getPackageData()
 
@@ -68,7 +71,7 @@ class AppPackageTest {
         packages.forEach {
             val record = it.split("***")
             print(record[0] + "\n")
-            if ( record[0] == ExerciseType::class.simpleName) {
+            if (record[0] == ExerciseType::class.simpleName) {
                 //print("List ExerciseType: " + record[1])
                 val exerciseTypeJson: String = record[1]
                 val type = object : TypeToken<List<ExerciseType?>?>() {}.type
@@ -128,20 +131,27 @@ class AppPackageTest {
                 assertEquals(sports[2].name, "Footgolf")
                 assertEquals(sports[2].translations[0].sportName, "Footgolf")
                 assertEquals(sports[3].translations[0].sportName, "Tenisz")
-            }  else if (record[0] == Tutorial::class.simpleName) {
-                print("List Tutorial: " + record[1])
+            } else if (record[0] == Tutorial::class.simpleName) {
                 val tutorialJson: String = record[1]
                 val type = object : TypeToken<List<Tutorial?>?>() {}.type
                 val tutorials: List<Tutorial> = gson.fromJson(tutorialJson, type)
                 assertEquals(tutorials.size, 2)
                 assertEquals(tutorials[0].name, "Basic")
                 assertEquals(tutorials[0].steps.size, 9)
-                assertEquals(tutorials[0].steps[2].condition, "{\"direction\":\"down\",\"top\":95,\"left\":-1,\"show_bubble\":false,\"bubble_x\":220,\"bubble_y\":220,\"bubble_width\":440,\"bubble_height\":440,\"show_check_text\":false,\"parent\":2}")
+                assertEquals(
+                    tutorials[0].steps[2].condition,
+                    "{\"direction\":\"down\",\"top\":95,\"left\":-1,\"show_bubble\":false,\"bubble_x\":220,\"bubble_y\":220,\"bubble_width\":440,\"bubble_height\":440,\"show_check_text\":false,\"parent\":2}"
+                )
                 assertEquals(tutorials[0].steps[0].translations.size, 1)
+            } else if (record[0] == Description::class.simpleName) {
+                val descriptionJson: String = record[1]
+                val type = object : TypeToken<List<Description?>?>() {}.type
+                val descriptions: List<Description> = gson.fromJson(descriptionJson, type)
+                assertEquals(descriptions.size, 2)
+                assertEquals(descriptions[0].translations.size, 1)
+                assertEquals(descriptions[0].name, "sales_page")
             }
         }
-
-
-
     }
+
 }
\ No newline at end of file