Skip to content

Pommy-project/Web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pommy

ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ λ°œκ²¬ν•˜κ³ , κ³΅μœ ν•˜λŠ” 곡간

PommyλŠ” μž¬λ―ΈμžˆλŠ” AI ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ λͺ¨μ•„보고, λ‚˜λ§Œμ˜ λ°ˆμ„ μ—…λ‘œλ“œν•  수 μžˆλŠ” μ›Ή ν”Œλž«νΌμž…λ‹ˆλ‹€. λ‹€μ–‘ν•œ AI 도ꡬ(GPT, Gemini, Midjourney, SORA)둜 μƒμ„±λœ ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ κ³΅μœ ν•˜κ³  탐색할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“‹ λͺ©μ°¨

πŸ‘₯ νŒ€μ›

Pommy ν”„λ‘œμ νŠΈλ₯Ό μ œμž‘ν•œ νŒ€μ›λ“€μ„ μ†Œκ°œν•©λ‹ˆλ‹€.

이호근 μ‹ μœ€μ²  λ°•μˆ˜λ―Ό
이호근근 μ‹ μœ€μ²  λ°•μˆ˜λ―Όλ―Ό
@2ghrms @Shin-Yun-Cheol @ssumai-kr

✨ μ£Όμš” κΈ°λŠ₯

  • μ‚¬μš©μž 인증: νšŒμ›κ°€μž…, 둜그인, λ‘œκ·Έμ•„μ›ƒ κΈ°λŠ₯
  • ν”„λ‘¬ν”„νŠΈ 밈 관리:
    • ν”„λ‘¬ν”„νŠΈ 밈 μ—…λ‘œλ“œ (이미지, 제λͺ©, μ„€λͺ…, ν”„λ‘¬ν”„νŠΈ λ‚΄μš©)
    • ν”„λ‘¬ν”„νŠΈ 밈 쑰회 및 상세 보기
    • ν”„λ‘¬ν”„νŠΈ 밈 μˆ˜μ • 및 μ‚­μ œ
  • 검색 κΈ°λŠ₯: 제λͺ© 및 μ„€λͺ… 기반 검색
  • λž­ν‚Ή μ‹œμŠ€ν…œ: 인기 ν”„λ‘¬ν”„νŠΈ 밈 λž­ν‚Ή ν‘œμ‹œ
  • AI νƒ€μž… λΆ„λ₯˜: GPT, Gemini, Midjourney, SORA 지원
  • ν΄λ¦½λ³΄λ“œ 볡사: ν”„λ‘¬ν”„νŠΈ λ‚΄μš©μ„ ν΄λ¦½λ³΄λ“œλ‘œ 볡사
  • 이미지 미리보기: μ—…λ‘œλ“œ μ „ 이미지 미리보기 κΈ°λŠ₯

πŸ›  기술 μŠ€νƒ

Backend

  • Java 21: ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
  • Jakarta Servlet 6.0: μ›Ή μ„œλ²„ 기술
  • JSP: λ·° ν…œν”Œλ¦Ώ
  • MyBatis 3.5.11: ORM ν”„λ ˆμž„μ›Œν¬
  • MySQL 8.0: λ°μ΄ν„°λ² μ΄μŠ€
  • HikariCP 5.0.1: 컀λ„₯μ…˜ ν’€
  • BCrypt: λΉ„λ°€λ²ˆν˜Έ ν•΄μ‹±
  • SLF4J + Logback: λ‘œκΉ…

Frontend

  • HTML/CSS/JavaScript: ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ

Build Tool

  • Maven 4.0: λΉŒλ“œ 및 μ˜μ‘΄μ„± 관리

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

Web/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”œβ”€β”€ java/
β”‚   β”‚   β”‚   └── com/pommy/
β”‚   β”‚   β”‚       β”œβ”€β”€ controller/          # 컨트둀러 (μš”μ²­ 처리)
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ AuthController.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ IndexController.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ MypageController.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ PromptMemeController.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ UploadController.java
β”‚   β”‚   β”‚       β”‚   └── UserController.java
β”‚   β”‚   β”‚       β”œβ”€β”€ dao/                  # 데이터 μ ‘κ·Ό 객체
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ PromptMemeMapper.java
β”‚   β”‚   β”‚       β”‚   └── UserMapper.java
β”‚   β”‚   β”‚       β”œβ”€β”€ filter/               # ν•„ν„° (인증, 인코딩)
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ AuthenticationFilter.java
β”‚   β”‚   β”‚       β”‚   └── CharacterEncodingFilter.java
β”‚   β”‚   β”‚       β”œβ”€β”€ model/                # μ—”ν‹°ν‹° λͺ¨λΈ
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ AIType.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ PromptMeme.java
β”‚   β”‚   β”‚       β”‚   └── User.java
β”‚   β”‚   β”‚       β”œβ”€β”€ service/              # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ PromptMemeService.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ PromptMemeServiceImpl.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ UserService.java
β”‚   β”‚   β”‚       β”‚   └── UserServiceImpl.java
β”‚   β”‚   β”‚       └── util/                 # μœ ν‹Έλ¦¬ν‹°
β”‚   β”‚   β”‚           β”œβ”€β”€ MyBatisUtil.java
β”‚   β”‚   β”‚           └── PasswordUtil.java
β”‚   β”‚   β”œβ”€β”€ resources/
β”‚   β”‚   β”‚   └── db.properties            # λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •
β”‚   β”‚   └── webapp/
β”‚   β”‚       β”œβ”€β”€ images/                  # 이미지 λ¦¬μ†ŒμŠ€
β”‚   β”‚       β”œβ”€β”€ js/                      # JavaScript 파일
β”‚   β”‚       β”‚   β”œβ”€β”€ clipboard.js
β”‚   β”‚       β”‚   β”œβ”€β”€ imagePreview.js
β”‚   β”‚       β”‚   β”œβ”€β”€ ranking.js
β”‚   β”‚       β”‚   └── toggleSearch.js
β”‚   β”‚       └── WEB-INF/
β”‚   β”‚           β”œβ”€β”€ jsp/                 # JSP νŽ˜μ΄μ§€
β”‚   β”‚           β”‚   β”œβ”€β”€ auth/           # 인증 κ΄€λ ¨
β”‚   β”‚           β”‚   β”œβ”€β”€ error/          # μ—λŸ¬ νŽ˜μ΄μ§€
β”‚   β”‚           β”‚   β”œβ”€β”€ home/           # ν™ˆ νŽ˜μ΄μ§€
β”‚   β”‚           β”‚   β”œβ”€β”€ prompt/         # ν”„λ‘¬ν”„νŠΈ 밈 κ΄€λ ¨
β”‚   β”‚           β”‚   └── user/           # μ‚¬μš©μž κ΄€λ ¨
β”‚   β”‚           β”œβ”€β”€ jspf/               # JSP Fragment
β”‚   β”‚           └── web.xml             # μ›Ή μ„€μ •
β”œβ”€β”€ database/
β”‚   └── create_table.sql                # λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
β”œβ”€β”€ pom.xml                              # Maven μ„€μ •
└── README.md                            # ν”„λ‘œμ νŠΈ λ¬Έμ„œ

πŸš€ μ‹œμž‘ν•˜κΈ°

ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

  • Java 21 이상
  • Maven 4.0 이상
  • MySQL 8.0 이상
  • Apache Tomcat 10.x 이상 (λ˜λŠ” Jakarta EE ν˜Έν™˜ μ„œλ²„)

λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •

  1. MySQL λ°μ΄ν„°λ² μ΄μŠ€ 생성 및 ν…Œμ΄λΈ” 생성:
mysql -u root -p < database/create_table.sql

λ˜λŠ” MySQL ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 직접 μ‹€ν–‰:

CREATE DATABASE IF NOT EXISTS pommy CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE pommy;
-- database/create_table.sql 파일의 λ‚΄μš© μ‹€ν–‰
  1. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ„€μ •:

src/main/resources/db.properties νŒŒμΌμ„ μ‚½μž…ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 정보λ₯Ό μ„€μ •ν•˜μ„Έμš”:

db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/pommy?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
db.username=your_username
db.password=your_password

λΉŒλ“œ 및 μ‹€ν–‰

  1. ν”„λ‘œμ νŠΈ 클둠:
git clone <repository-url>
cd Web
  1. Maven을 μ‚¬μš©ν•˜μ—¬ ν”„λ‘œμ νŠΈ λΉŒλ“œ:
mvn clean package
  1. WAR 파일 배포:

λΉŒλ“œλœ target/pommy.war νŒŒμΌμ„ Tomcat의 webapps 디렉토리에 λ°°ν¬ν•˜κ±°λ‚˜, IDEμ—μ„œ 직접 μ‹€ν–‰ν•©λ‹ˆλ‹€. λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό ν†΅ν•΄μ„œ λ°°ν¬ν•©λ‹ˆλ‹€.

  1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 접속:

λΈŒλΌμš°μ €μ—μ„œ http://localhost:8080/pommy/ 접속

πŸ“– μ£Όμš” κΈ°λŠ₯ μ„€λͺ…

μ‚¬μš©μž 인증

  • νšŒμ›κ°€μž… (/auth/signup): μƒˆλ‘œμš΄ μ‚¬μš©μž 계정 생성
  • 둜그인 (/auth/login): κΈ°μ‘΄ μ‚¬μš©μž 둜그인
  • λ‘œκ·Έμ•„μ›ƒ: μ„Έμ…˜ μ’…λ£Œ
  • λΉ„λ°€λ²ˆν˜ΈλŠ” BCryptλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄μ‹±λ˜μ–΄ μ €μž₯λ©λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ 밈 관리

  • μ—…λ‘œλ“œ (/prompt/upload):

    • 제λͺ©, μ„€λͺ…, ν”„λ‘¬ν”„νŠΈ λ‚΄μš© μž…λ ₯
    • 이미지 파일 μ—…λ‘œλ“œ (μ΅œλŒ€ 10MB)
    • AI νƒ€μž… 선택 (GPT, Gemini, Midjourney, SORA)
    • SNS 링크 μΆ”κ°€ (선택사항)
  • 쑰회:

    • 메인 νŽ˜μ΄μ§€ (/prompt/main): 전체 ν”„λ‘¬ν”„νŠΈ 밈 λͺ©λ‘
    • 상세 νŽ˜μ΄μ§€ (/prompt/detail): κ°œλ³„ ν”„λ‘¬ν”„νŠΈ 밈 상세 정보
    • 쑰회수 μžλ™ 증가
  • μˆ˜μ •/μ‚­μ œ: μž‘μ„±μžλ§Œ μžμ‹ μ˜ ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ μˆ˜μ •/μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

검색 κΈ°λŠ₯

  • 제λͺ© 및 μ„€λͺ… 기반 전체 ν…μŠ€νŠΈ 검색
  • 검색 κ²°κ³Ό νŽ˜μ΄μ§€μ—μ„œ 필터링 및 μ •λ ¬ κ°€λŠ₯

λž­ν‚Ή μ‹œμŠ€ν…œ

  • 인기 ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ 쑰회수 κΈ°μ€€μœΌλ‘œ λž­ν‚Ή ν‘œμ‹œ
  • μžλ™ μŠ¬λΌμ΄λ” κΈ°λŠ₯으둜 μƒμœ„ 3개 ν”„λ‘¬ν”„νŠΈ 밈 μˆœν™˜ ν‘œμ‹œ

ν΄λ¦½λ³΄λ“œ 볡사

  • ν”„λ‘¬ν”„νŠΈ λ‚΄μš©μ„ ν΄λ¦½λ³΄λ“œλ‘œ ν•œ λ²ˆμ— 볡사
  • 볡사 성곡 μ‹œ μ‹œκ°μ  ν”Όλ“œλ°± 제곡

πŸ”’ λ³΄μ•ˆ κΈ°λŠ₯

  • 인증 ν•„ν„°: 보호된 νŽ˜μ΄μ§€ μ ‘κ·Ό μ‹œ 둜그인 확인
  • λΉ„λ°€λ²ˆν˜Έ ν•΄μ‹±: BCryptλ₯Ό μ‚¬μš©ν•œ μ•ˆμ „ν•œ λΉ„λ°€λ²ˆν˜Έ μ €μž₯
  • μ„Έμ…˜ 관리: μ„œλ²„ μΈ‘ μ„Έμ…˜μ„ ν†΅ν•œ μ‚¬μš©μž 인증 μƒνƒœ 관리
  • 파일 μ—…λ‘œλ“œ μ œν•œ: μ΅œλŒ€ 파일 크기 μ œν•œ (10MB)

πŸ“ API μ—”λ“œν¬μΈνŠΈ

경둜 λ©”μ„œλ“œ μ„€λͺ…
/ GET ν™ˆ νŽ˜μ΄μ§€
/auth/signup GET/POST νšŒμ›κ°€μž…
/auth/login GET/POST 둜그인
/auth/logout POST λ‘œκ·Έμ•„μ›ƒ
/prompt/main GET ν”„λ‘¬ν”„νŠΈ 밈 λͺ©λ‘
/prompt/detail GET ν”„λ‘¬ν”„νŠΈ 밈 상세
/prompt/upload GET/POST ν”„λ‘¬ν”„νŠΈ 밈 μ—…λ‘œλ“œ
/prompt/edit GET/POST ν”„λ‘¬ν”„νŠΈ 밈 μˆ˜μ •
/prompt/delete POST ν”„λ‘¬ν”„νŠΈ 밈 μ‚­μ œ
/prompt/search GET ν”„λ‘¬ν”„νŠΈ 밈 검색
/user/mypage GET λ§ˆμ΄νŽ˜μ΄μ§€
/user/edit GET/POST μ‚¬μš©μž 정보 μˆ˜μ •

πŸ—„ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ

users ν…Œμ΄λΈ”

  • μ‚¬μš©μž 정보 μ €μž₯ (아이디, λΉ„λ°€λ²ˆν˜Έ ν•΄μ‹œ, λ‹‰λ„€μž„)

prompt_memes ν…Œμ΄λΈ”

  • ν”„λ‘¬ν”„νŠΈ 밈 정보 μ €μž₯ (제λͺ©, μ„€λͺ…, ν”„λ‘¬ν”„νŠΈ λ‚΄μš©, 이미지 URL, AI νƒ€μž…, 쑰회수 λ“±)

sessions ν…Œμ΄λΈ”

  • μ„Έμ…˜ 정보 μ €μž₯ (μ„Έμ…˜ ID, μ‚¬μš©μž ID, 만료 μ‹œκ°„)

πŸ“Š 전체 ꡬ쑰도

μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨

μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨

Pommy μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ£Όμš” κΈ°λŠ₯별 μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨μž…λ‹ˆλ‹€. μ‚¬μš©μž 인증, ν”„λ‘¬ν”„νŠΈ 밈 μ—…λ‘œλ“œ, 쑰회, 검색, μˆ˜μ •/μ‚­μ œ λ“±μ˜ 전체 ν”Œλ‘œμš°λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

Pommy μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 전체 μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈ λ ˆμ΄μ–΄λΆ€ν„° 데이터 λ ˆμ΄μ–΄κΉŒμ§€μ˜ ꡬ쑰와 각 μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ 관계λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.


Pommy - ν”„λ‘¬ν”„νŠΈ λ°ˆμ„ λ°œκ²¬ν•˜κ³ , κ³΅μœ ν•˜λŠ” 곡간 🎨

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •