diff --git a/feed/README.md b/feed/README.md
new file mode 100644
index 0000000..4e045b3
--- /dev/null
+++ b/feed/README.md
@@ -0,0 +1,5 @@
+# Feed
+
+RSS and ATOM feed
+
+powered by ROME
\ No newline at end of file
diff --git a/feed/build.gradle.kts b/feed/build.gradle.kts
new file mode 100644
index 0000000..b64a058
--- /dev/null
+++ b/feed/build.gradle.kts
@@ -0,0 +1,16 @@
+/*
+ * Examples for Java
+ *
+ * Copyright (c) 2021. Elex. All Rights Reserved.
+ * https://www.elex-project.com/
+ */
+
+plugins {
+ id("elex-java")
+}
+
+dependencies {
+// https://mvnrepository.com/artifact/com.rometools/rome
+ implementation("com.rometools:rome:2.1.0")
+
+}
diff --git a/feed/logback.xml b/feed/logback.xml
new file mode 100644
index 0000000..74ff8a3
--- /dev/null
+++ b/feed/logback.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
diff --git a/feed/src/main/java/kr/pe/elex/example/FeedService.java b/feed/src/main/java/kr/pe/elex/example/FeedService.java
new file mode 100644
index 0000000..858c121
--- /dev/null
+++ b/feed/src/main/java/kr/pe/elex/example/FeedService.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2024. Elex. All Rights Reesrved.
+ * https://www.elex-project.com/
+ */
+
+package kr.pe.elex.example;
+
+import com.rometools.rome.feed.synd.SyndEntry;
+import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.feed.synd.SyndFeedImpl;
+import com.rometools.rome.io.FeedException;
+import com.rometools.rome.io.SyndFeedInput;
+import com.rometools.rome.io.SyndFeedOutput;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.util.List;
+
+public class FeedService {
+
+
+ public static SyndFeed read(final Reader reader) throws FeedException {
+ return new SyndFeedInput().build(reader);
+ }
+
+ public static @NotNull SyndFeed create(final List entries) {
+ final SyndFeed feed = new SyndFeedImpl();
+ feed.setFeedType(FeedType.RSS.getValue());
+ feed.setTitle("Sample Feed (created with ROME)");
+ feed.setLink("http://rome.dev.java.net");
+ feed.setDescription("This feed has been created using ROME (Java syndication utilities");
+ feed.setEntries(entries);
+
+ return feed;
+ }
+
+ public static String write(final SyndFeed feed) throws FeedException, IOException {
+ try (final StringWriter writer = new StringWriter()) {
+ new SyndFeedOutput().output(feed, writer);
+
+ return writer.toString();
+ }
+
+
+ }
+
+
+}
diff --git a/feed/src/main/java/kr/pe/elex/example/FeedType.java b/feed/src/main/java/kr/pe/elex/example/FeedType.java
new file mode 100644
index 0000000..97e7986
--- /dev/null
+++ b/feed/src/main/java/kr/pe/elex/example/FeedType.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2024. Elex. All Rights Reesrved.
+ * https://www.elex-project.com/
+ */
+
+package kr.pe.elex.example;
+
+import lombok.Getter;
+
+@Getter
+public enum FeedType {
+ RSS_1_0("rss_1.0"),
+ RSS_2_0("rss_2.0"),
+
+ RSS("rss_2.0"),
+ ATOM_0_3("atom_0.3"),
+ ATOM("atom_0.3");
+
+ private final String value;
+ FeedType(final String value){
+ this.value = value;
+ }
+
+}
diff --git a/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java b/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java
new file mode 100644
index 0000000..34ca0f7
--- /dev/null
+++ b/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2024. Elex. All Rights Reesrved.
+ * https://www.elex-project.com/
+ */
+
+package kr.pe.elex.example;
+
+import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.io.FeedException;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.Collections;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class FeedServiceTest {
+
+ @Test
+ public void createTest() throws FeedException, IOException {
+ SyndFeed feed = FeedService.create(Collections.emptyList());
+
+ System.out.println(FeedService.write(feed));
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 054e8a5..07e1441 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -17,3 +17,4 @@ include(
"mustache", "thymeleaf", "locale", "quartz", "sysinfo",
"imaging", "stream", "sound", "midi", "gson", "security"
)
+include("feed")