{"id":45215923,"url":"https://github.com/alloon-project/photi-server","last_synced_at":"2026-02-20T17:04:34.517Z","repository":{"id":325762662,"uuid":"734619026","full_name":"alloon-project/photi-server","owner":"alloon-project","description":"포토 챌린지로 일상 속 새로운 즐거움을 발견해 보세요!","archived":false,"fork":false,"pushed_at":"2025-12-31T15:56:10.000Z","size":1411,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-01-05T00:42:55.983Z","etag":null,"topics":["aws","command-query","docker","flyway","multimodule","port-adapter","postgresql","redis","spring-boot","spring-security","swagger"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alloon-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-22T06:43:21.000Z","updated_at":"2025-12-31T15:56:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alloon-project/photi-server","commit_stats":null,"previous_names":["alloon-project/photi-server"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/alloon-project/photi-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alloon-project%2Fphoti-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alloon-project%2Fphoti-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alloon-project%2Fphoti-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alloon-project%2Fphoti-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alloon-project","download_url":"https://codeload.github.com/alloon-project/photi-server/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alloon-project%2Fphoti-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29658167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T16:33:43.953Z","status":"ssl_error","status_checked_at":"2026-02-20T16:33:43.598Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","command-query","docker","flyway","multimodule","port-adapter","postgresql","redis","spring-boot","spring-security","swagger"],"created_at":"2026-02-20T17:04:33.847Z","updated_at":"2026-02-20T17:04:34.505Z","avatar_url":"https://github.com/alloon-project.png","language":"Kotlin","readme":"\u003cimg width=\"100%\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c08b3bb3-979c-44ba-9c40-94ad1309a8f1\" /\u003e\n\n\u003chr style=\"width:50%;margin:auto;\"/\u003e\n\n# 포티\u0026nbsp;\u0026nbsp;[![iOS](https://img.shields.io/badge/iOS-Download-0D96F6?style=flat\u0026logo=appstore\u0026logoColor=white)](https://apps.apple.com/kr/app/%ED%8F%AC%ED%8B%B0/id6747941953) [![Android](https://img.shields.io/badge/Android-Download-0F9D58?style=flat\u0026logo=google-play\u0026logoColor=white)](https://play.google.com/store/apps/details?id=com.photi.aos\u0026pcampaignid=web_share) \u003cimg src=\"https://github.com/user-attachments/assets/1406ec1d-f4d6-44fd-ba6a-3c221588c4b2\" align=left width=100\u003e\n\n\u003e 포토 챌린지로 일상 속 새로운 즐거움을 발견해 보세요! • \u003cb\u003e백엔드\u003c/b\u003e 레포지토리\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"24%\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ce8bfc1a-18c8-4d60-b4cf-7166fcfe14fe\"\u003e\n\u003cimg width=\"24%\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/460641b8-e967-4dc1-8e0d-9f464070eb9b\" /\u003e\n\u003cimg width=\"24%\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3e03d6f6-d163-48cc-a047-37a2d533b204\" /\u003e\n\u003cimg width=\"24%\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2c7be02b-b378-4c95-ae51-4c7af8083a41\" /\u003e\n\u003c/div\u003e\n\n## 💭 Features\n1. **1일 1 인증** - 하루 한 번 정해진 시간 안에 즉석에서 챌린지 사진 인증\n2. **챌린지 만들기** - 이름, 목표, 이미지, 인증 시간, 인증 룰, 해시태그, 종료 날짜, 공개 여부를 설정하여 챌린지 생성\n3. **다양한 챌린지 탐색** - 인기/해시태그/검색으로 관심 있는 챌린지 탐색\n4. **챌린지 함께하기** - 비공개 챌린지는 초대 코드를 통해 참여 / 공개 챌린지는 자유롭게 참여\n5. **파티원과 함께 도전하기** - 챌린지 인증 사진에 댓글과 좋아요 / 개인 목표 설정\n6. **인증 사진 공유하기** - 인스타그램으로 나의 챌린지 인증 공유\n\n## ✨ Service\n\n- [서비스 소개 노션](https://octagonal-caboc-47d.notion.site/team-photi?source=copy_link)\n- [1차 MVP 기획](https://www.figma.com/board/hG9r7mpCYJ9lqOLr2YUNKE/%E2%9A%A1%EF%B8%8F-%ED%8C%80-%EA%B8%B0%ED%9A%8D?node-id=255-289\u0026t=G3Gv8kj3VF6SWywH-1)\n- [2차 MVP 기획](https://www.figma.com/board/hG9r7mpCYJ9lqOLr2YUNKE/%E2%9A%A1%EF%B8%8F-%ED%8C%80-%EA%B8%B0%ED%9A%8D?node-id=0-1\u0026t=G3Gv8kj3VF6SWywH-1)\n- [인스타그램](https://www.instagram.com/photi_official/)\n\n## 📚 Tech Stack\n\n\u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/Spring Boot-6DB33F?style=flat-square\u0026logo=springboot\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Gradle-02303A?style=flat-square\u0026logo=Gradle\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/PostgreSQL-4169E1.svg?style=flat-square\u0026logo=postgresql\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Redis-FF4438?style=flat-square\u0026logo=Redis\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Flyway-CC0200?style=flat-square\u0026logo=flyway\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/Spring Security-6DB33F.svg?style=flat-square\u0026logo=springsecurity\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/JSON Web Tokens-000000?style=flat-square\u0026logo=jsonwebtokens\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/Amazon AWS-232F3E?style=flat-square\u0026\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?style=flat-square\u0026logo=Docker\u0026logoColor=white\" alt=\"Image\"\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\u003cimg src=\"https://img.shields.io/badge/Swagger-85EA2D?style=flat-square\u0026logo=swagger\u0026logoColor=black\" alt=\"Image\"\u003e\n\u003c/div\u003e\n\n## 📁 Project Structure\n\n```bash\n├── photi-apis\n│   └── photi-apis:enduser\n│       ├── config # email, security, swagger 설정 등\n│       └── controller\n│           └── \u003c도메인 별 패키지\u003e # ex) user, challenge, feed 등\n│               └── dto # 컨트롤러 계층에서 사용하는 dto\n│                   ├── request\n│                   └── response\n├── photi-batch # 배치 애플리케이션\n├── photi-core\n│   ├── photi-core:domain # 도메인(핵심 비즈니스 로직)\n│   │   ├── common # 공통 에러 코드, BaseEntity 등  \n│   │   └── \u003c도메인 별 패키지\u003e # ex) user, challenge, feed 등\n│   │       ├── adapter # 다른 도메인에서 호출한 port 인터페이스를 구현한 클래스\n│   │       ├── dto # 서비스 계층에서 사용하는 dto\n│   │       ├── exception # 도메인별 에러 코드, 예외 정의\n│   │       ├── model # 도메인 엔티티\n│   │       │   └── repository # JPA 레포지토리\n│   │       ├── service\n│   │       │   ├── 각 도메인 별 service # 컨트롤러 계층에서 사용\n│   │       │   ├── command # 명령 서비스 - 명령과 관련된 메소드(create, update, delete) 구현\n│   │       │   └── query # 조회 서비스 - 조회와 관련된 메소드(read) 구현\n│   │       ├── port # 다른 도메인을 호출하는 port 인터페이스\n│   │       └── validator # 유효성 검사\n│   └── photi-core:infra # async, jpa, querydsl, redis, s3 설정\n└── photi-utils # 유틸성 object 클래스\n```\n\n## 💻 Developer\n\n\u003ctable\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\u003cB\u003eBackend\u003c/B\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\u003cB\u003e김유경\u003c/B\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/58517873?v=4\" width=\"100\" height=\"100\"/\u003e\n            \u003cbr\u003e\n            \u003ca href=\"https://github.com/YuGyeong98\"\u003eYuGyeong98\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falloon-project%2Fphoti-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falloon-project%2Fphoti-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falloon-project%2Fphoti-server/lists"}