{"id":21942295,"url":"https://github.com/taedonn/partywonguham","last_synced_at":"2025-04-22T18:12:26.985Z","repository":{"id":211079258,"uuid":"728142239","full_name":"taedonn/partywonguham","owner":"taedonn","description":"파티원구함 - 단체 약속 시간 확정 서비스","archived":false,"fork":false,"pushed_at":"2024-10-18T17:44:44.000Z","size":34327,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-22T18:12:14.874Z","etag":null,"topics":["calendar","firebase-firestore","meeting","nuxtjs","web","web-app"],"latest_commit_sha":null,"homepage":"https://partywon.taedonn.com","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taedonn.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}},"created_at":"2023-12-06T10:15:18.000Z","updated_at":"2024-04-14T07:08:46.000Z","dependencies_parsed_at":"2024-03-23T17:22:17.130Z","dependency_job_id":"93f38e12-ad45-4e93-9383-7df7cc19fe64","html_url":"https://github.com/taedonn/partywonguham","commit_stats":null,"previous_names":["partywonguham/partywonguham","taedonn/partywonguham"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taedonn%2Fpartywonguham","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taedonn%2Fpartywonguham/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taedonn%2Fpartywonguham/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taedonn%2Fpartywonguham/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taedonn","download_url":"https://codeload.github.com/taedonn/partywonguham/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250296173,"owners_count":21407037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["calendar","firebase-firestore","meeting","nuxtjs","web","web-app"],"created_at":"2024-11-29T03:18:22.014Z","updated_at":"2025-04-22T18:12:26.956Z","avatar_url":"https://github.com/taedonn.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_bg_1.png)\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Node-v18.+-%23ff6e40\" alt=\"Node badge\"/\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/taedonn/partywonguham?color=ff6e40\" alt=\"Release badge\"/\u003e\n  \u003cimg src=\"https://img.shields.io/github/release-date/taedonn/partywonguham?color=ff6e40\" alt=\"Release date badge\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-%23ff6e40\" alt=\"License badge\"/\u003e\n\u003c/p\u003e\n\n\u0026nbsp;\n\n## 파티원구함의 주요 기능\n\n### 📅 약속 생성\n\n\u003e 인원수, 날짜, 시간, 알림 설정을 하고 약속 생성 버튼을 누르면 약속 페이지가 생성됩니다. 약속 페이지의 링크를 공유해 인원수가 채워지면 타임라인의 색이 진해집니다.\n\n\u003ctable align=center\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_create_time_1.gif\" alt=\"Create time 1\"/\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_create_time_2.gif\" alt=\"Create time 2\"/\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=center\u003e약속 페이지 생성\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=center\u003e타임라인에 시간 추가\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u0026nbsp;\n\n### 📧 알림 발송\n\n\u003e 설정한 인원수가 모두 채워지면 알림 수신에 동의한 사람에 한해서 이메일로 알림을 발송합니다.\n\n\u003ctable align=center\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_send_email_1.gif\" alt=\"Send email 1\"/\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_send_email_2.gif\" alt=\"Send email 2\"/\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=center\u003e설정한 인원수가 모두 채워짐\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=center\u003e이메일로 알림 발송\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u0026nbsp;\n\n## 아키텍쳐\n\n### 🧬 Serverless framework\n\n\u003e Nuxt.js와 Nuxt.js에서 기본 제공하는 SSR 기능을 사용해 별도의 서버를 두지 않고 운영하고 있습니다. 따라서 사용하는 인원이 한 동안 없었던 경우 부팅하는데 몇초의 시간이 걸릴 수 있습니다.\n\n### 🛢 Database\n\n\u003e 데이터베이스는 Firebase의 Cloud Firestore를 사용하고 있고, Firebase에서 기본 제공하는 `firebase admin sdk`를 사용해서 데이터베이스에 접근하고 있습니다.\n\n\u003ctable align=center\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://partywonguham.s3.ap-northeast-2.amazonaws.com/readme_service_structure_1.svg\" alt=\"Service structure\"/\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=center\u003e서비스 구성도\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u0026nbsp;\n\n## 기술 스택\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecategory\u003c/th\u003e\n      \u003cth\u003estacks\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cp align=center\u003eCommon\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/node-3C873A?logo=node.js\u0026logoColor=ffffff\" alt=\"Node badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/npm-CB3837?logo=npm\u0026logoColor=ffffff\" alt=\"NPM badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript\u0026logoColor=000000\" alt=\"JavaScript badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/TypeScript-007ACC?logo=typescript\u0026logoColor=ffffff\" alt=\"TypeScript badge\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cp align=center\u003eFrontend\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Nuxt.js-00DC82?logo=nuxt.js\u0026logoColor=000000\" alt=\"Nuxt.js badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Vue.js-4FC08D?logo=vue.js\u0026logoColor=000000\" alt=\"Vue.js badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Vite-646CFF?logo=vite\u0026logoColor=ffffff\" alt=\"Vite badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Tailwind%20CSS-38BDF8?logo=tailwindcss\u0026logoColor=ffffff\" alt=\"Tailwind CSS badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Swiper-6332F6?logo=swiper\u0026logoColor=ffffff\" alt=\"Swiper badge\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cp align=center\u003eBackend\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firestore-4487FA?logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCg0KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4NCjxzdmcgd2lkdGg9IjgwMHB4IiBoZWlnaHQ9IjgwMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQoNCjxkZWZzPg0KDQo8c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZmZmZjt9LmNscy0ye2ZpbGw6I2ZmZmZmZjt9LmNscy0ze2ZpbGw6I2ZmZmZmZjt9PC9zdHlsZT4NCg0KPC9kZWZzPg0KDQo8dGl0bGU+SWNvbl8yNHB4X0ZpcmVzdG9yZV9Db2xvcjwvdGl0bGU+DQoNCjxnIGRhdGEtbmFtZT0iUHJvZHVjdCBJY29ucyI+DQoNCjxnIGRhdGEtbmFtZT0iY29sb3JlZC0zMi9maXJlc3RvcmUiPg0KDQo8ZyA+DQoNCjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIxLDEzLDEyLDl2NGw5LDRabTAtN0wxMiwyVjZsOSw0WiIvPg0KDQo8cG9seWdvbiBpZD0iUmVjdGFuZ2xlLTciIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIzIDYgMTIgMiAxMiA2IDMgMTAgMyA2Ii8+DQoNCjxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNy0yIiBkYXRhLW5hbWU9IlJlY3RhbmdsZS03IiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMyAxMyAxMiA5IDEyIDEzIDMgMTcgMyAxMyIvPg0KDQo8cG9seWdvbiBpZD0iUmVjdGFuZ2xlLTctMyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUtNyIgY2xhc3M9ImNscy0zIiBwb2ludHM9IjEyIDE4IDE1LjM3IDE2LjUgMTkuODggMTguNSAxMiAyMiAxMiAxOCIvPg0KDQo8L2c+DQoNCjwvZz4NCg0KPC9nPg0KDQo8L3N2Zz4=\" alt=\"Firestore badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/NoSQL-C925D1?logo=amazondocumentdb\u0026logoColor=ffffff\" alt=\"NoSQL badge\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cp align=center\u003eDeployment\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Vercel-000000?logo=vercel\u0026logoColor=ffffff\" alt=\"Vercel badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firebase-FFCA28?logo=firebase\u0026logoColor=000000\" alt=\"Firebase badge\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cp align=center\u003eCI/CD\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub%20Actions-2088FF?logo=github-actions\u0026logoColor=ffffff\" alt=\"Github Actions badge\"/\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Visual%20Studio%20Code-007ACC?logo=visualstudiocode\u0026logoColor=ffffff\" alt=\"Visual Studio Code badge\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u0026nbsp;\n\n## 팀원\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n        \u003ctd valign=\"top\" width=\"33.33%\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/107545098?v=4\" width=\"128px;\" alt=\"taedonn\"/\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/taedonn\"\u003e\n                \u003csub\u003e\u003cb\u003etaedonn\u003c/b\u003e\u003c/sub\u003e\n            \u003c/a\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/taedonn/partywonguham/commits?author=taedonn\" title=\"Commits\"\u003e\n                \u003csub\u003ecommits\u003c/sub\u003e\n            \u003c/a\u003e \u003csub\u003e·\u003c/sub\u003e \n            \u003ca href=\"https://github.com/taedonn/partywonguham/pulls?q=taedonn\" title=\"Pull Requests\"\u003e\n                \u003csub\u003epull requests\u003c/sub\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd valign=\"top\" width=\"33.33%\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/96365042?v=4\" width=\"128px;\" alt=\"g1azed\"/\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/g1azed\"\u003e\n                \u003csub\u003e\u003cb\u003eg1azed\u003c/b\u003e\u003c/sub\u003e\n            \u003c/a\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/g1azed/partywonguham/commits?author=g1azed\" title=\"Commits\"\u003e\n                \u003csub\u003ecommits\u003c/sub\u003e\n            \u003c/a\u003e \u003csub\u003e·\u003c/sub\u003e \n            \u003ca href=\"https://github.com/g1azed/partywonguham/pulls?q=g1azed\" title=\"Pull Requests\"\u003e\n                \u003csub\u003epull requests\u003c/sub\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd valign=\"top\" width=\"33.33%\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/88708708?v=4\" width=\"128px;\" alt=\"hanjuda\"/\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/hanjuda\"\u003e\n                \u003csub\u003e\u003cb\u003ehanjuda\u003c/b\u003e\u003c/sub\u003e\n            \u003c/a\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/hanjuda/partywonguham/commits?author=hanjuda\" title=\"Commits\"\u003e\n                \u003csub\u003ecommits\u003c/sub\u003e\n            \u003c/a\u003e \u003csub\u003e·\u003c/sub\u003e \n            \u003ca href=\"https://github.com/hanjuda/partywonguham/pulls?q=hanjuda\" title=\"Pull Requests\"\u003e\n                \u003csub\u003epull requests\u003c/sub\u003e\n            \u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u0026nbsp;\n\n## 바로가기\n\n[홈페이지](https://partywon.taedonn.com)\n\n[약속 잡기](https://partywon.taedonn.com/create)\n\n[피드백 및 문의](https://partywon.taedonn.com/feedback)\n\n[개인정보 처리방침](https://partywon.taedonn.com/privacy)\n\n\u0026nbsp;\n\n## 라이센스\n\nMIT License © 2023-PRESENT, 파티원구함\n\n[라이센스 전문](https://github.com/taedonn/partywonguham/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaedonn%2Fpartywonguham","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaedonn%2Fpartywonguham","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaedonn%2Fpartywonguham/lists"}