Skip to content

yeomj051/mongttang

Repository files navigation

🌷 몽땅연필 - 동화 출판 및 구매 플랫폼

💜 프로젝트 진행 기간

2023.03.20(월) ~ 2023.04.07(금) SSAFY 8기 2학기 특화프로젝트 - 몽땅연필


🎵 몽땅연필 - 배경

직업이 동화작가가 아닌분들, 하지만 직접 그림을 그리고 스토리를 구상해서 동화책을 출판해보고 싶은 분들! 기존의 출판 프로세스가 복잡하고 시간적, 비용적 리스크가 너무 크다고 생각해서 출판의 꿈을 가슴 속 한켠에 넣어두지 않으셨나요? 그렇다고 열심히 만든 동화를 아무 사이트에나 올려서 수익화도 바랄 수 없고 다른 사람이 본인의 창작물을 훔쳐가지 않을까 걱정되지 않으셨나요?

몽땅연필은 기존의 출판 프로세스를 '업로드 - NFT생성 - 수익화' 로 줄였습니다! 그냥 간단히 만들어본 동화를 업로드하기만 하면 기대수입이 발생하는 저희 전자 동화책 플랫폼에서 연재해 보실래요? 전문성이 없어도 됩니다! 그저 몽당연필과 종이만 가지고도 출판할 수 있어요!


💜 몽당연필 - 개요

- 출판의 리스크를 감당하고싶지 않은 비전문가도 동화를 출판할 수 있게 -

몽땅연필은 비전문가도 몽당연필과 종이만 가지고도 동화를 출판할 수 있다는 서비스의 컨셉에서 영감을 받아 만들어진 이름입니다. 몽땅연필은 간단한 프로세스로 전자 동화책을 출판하고, 출판된 동화책을 이용자들이 보기위해 몽땅연필의 자체 제작 토큰인 몽땅토큰으로 결제하게되면 결제 금액의 50퍼센트를 동화를 출판하며 만들어진 NFT에 전송합니다. NFT를 그저 토큰으로 바라본 것이 아닌, 지갑으로서 활용할 수 있도록 한것이죠. 물론 NFT에 저장된 몽땅토큰은 출금도 가능합니다!

기존의 출판 프로세스에서 발생하는 리스크를 줄인 것 뿐만이 아니라, 매 주 새롭게 진행되는 챌린지에 맞추어 동화를 만들고, 참여작들 중 상위 입상을 하게 된다면 몽땅토큰을 리워드로 제공합니다. 작가가 아닌 이용자들은 챌린지 기간동안 완성된 동화는 무료로 보고 댓글, 좋아요 등으로 마음에 드는 작품을 평가할 수 있습니다. 챌린지 기간이 끝나게 된다면 해달 챌린지에 만들어진 동화는 유료로 바뀌게 됩니다! 이용자들은 챌린지에 주어진 주제를 작가마다 어떤식으로 풀어나갈지 감상하는 즐거움을 느낄 수 있습니다!


💜 주요 기능


소셜 로그인

  • 몽땅연필은 사용자들의 더 간편한 이용을 돕기 위해 구글, 카카오의 소셜 로그인 기능을 적용하였습니다. 로그인


  • 이번 주 챌린지

    • 매 주 새로운 주제를 가진 챌린지가 제공됩니다. 간단한 줄거리가 주어지며 가이드라인을 지킨다면 작가가 자율적으로 스토리를 수정할 수 있습니다

    • 챌린지가 마무리되면 상위 입상작의 작가들은 몽땅 토큰을 리워드로 받을 수 있습니다

    • 조회수, 댓글, 좋아요를 기반으로 총점을 메겨 작품들의 순위를 정합니다

    • 메인 페이지에서는 순위가 높은 순으로 작품을 확인할 수 있으며, '더 많은 동화 보러가기' 버튼을 누르면 해당 챌린지에 만들어진 동화들을 전부 확인할 수 있습니다 이번 주 챌린지(저용량)


  • 이전 챌린지

    • 이번 주의 챌린지뿐 아니라 지난 챌린지 내용들을 확인할 수 있습니다. 각 챌린지별 상위 입상작을 확인할 수 있으며 이번 주 챌린지와 마찬가지로 '더 많은 동화 보러가기' 버튼을 누르면 해당 챌린지에 만들어진 동화들을 전부 확인할 수 있습니다 이전 챌린지(저용량)


  • 50% 할인동화

    • 지난 챌린지에 대한 접근성을 높이기 위해 임의로 선정된 동화를 할인하며, 메인 페이지에 노출합니다. 할인 동화


  • 동화 상세 조회

    • 각 페이지마다 동화책 컴포넌트를 클릭하면 동화 상세 조회 페이지로 이동합니다. 해당 페이지에서 동화의 상세 정보를 확인할 수 있습니다.

    • 해당 동화에 대한 의견을 댓글로 남길 수 있으며 좋아요, 관심 동화 등록, 신고하기 등의 상호작용을 할 수 있습니다.

    • 챌린지가 끝난 동화는 구매하기 버튼을 통해 동화책을 구매하여 읽을 수 있습니다.

    • 동화, 혹은 댓글에 문제가 있다고 판단되면 신고 기능을 이용할 수 있습니다. 일정 이상 인원에게 신고가 이루어지면 잠시 동화, 혹은 댓글이 비활성화 되며 해당 동화 혹은 댓글은 일시적으로 비활성화 됩니다. 관리자의 판단 하에 신고된 이유가 합당한지를 판단하고, 신고가 누적된 동화 혹은 댓글은 경고 없이 삭제될 수 있습니다. 문제가 없는 경우에는 비활성화가 풀리게 됩니다. 댓글 동화구매(저용량)


  • 챌린지 상세 동화 정렬

    • 원하는 정렬 기준을 선택해 최신순, 좋아요순, 조회수 순으로 동화 목록을 정렬할 수 있습니다 동화 정렬


  • 동화 뷰어

    • 동화 상세 페이지에서 구매한 동화책이라면 언제든 뷰어를 통해 동화를 볼 수 있어요 동화 뷰어(저용량)


  • 동화 만들기

    • 이번 주 챌린지의 더 많은 동화 보러가기 버튼을 클릭하여 챌린지 상세 페이지로 이동하면, 동화 만들기 버튼을 클릭하여 동화를 만들 수 있습니다.

    • 기본적으로 제공되는 챌린지의 가이드 라인, 스토리 등이 제공된 탬플릿을 확인할 수 있으며 가이드라인을 벗어나지 않는 범위 내에서 자율적으로 수정할 수 있습니다.

    • 이후 본인이 그린 동화 이미지파일을 업로드한 뒤 동화 만들기 버튼을 클릭하여 동화를 생성할 수 있습니다.

    • 동화가 생성되면 NFT도 함께 생성되기 때문에 추후 동화 내용을 수정하는 기능은 제공하지 않습니다. 동화 만들기(저용량)


  • 프로필 페이지

    • 다른 유저의 프로필 이미지를 클릭하면 상대방의 프로필 페이지로 이동할 수 있습니다. 해당 유저가 작성한 동화 목록, 해당 유저가 관심있는 동화 목록, 팔로잉, 팔로워 목록등을 확인할 수 있습니다.

    • 다른 유저의 작품이 마음에 들어 이전에 만든 동화, 혹은 다음에 만들 동화가 기대된다면 팔로잉을 할 수 있습니다.

    • 웹페이지 상단의 네비게이션 바에 있는 프로필 이미지를 클릭하면 내 프로필 페이지, 프로필 수정 페이지로 이동할 수 있습니다. 프로필(저용량)


  • 검색

    • 키워드로 검색하여 완성된 동화중 키워드와 관련있는 동화 목록을 보여줍니다 동화 검색


  • 신고하기

    • 동화, 혹은 댓글에 문제가 있다고 판단되면 신고 기능을 이용할 수 있습니다. 일정 이상 인원에게 신고가 이루어지면 잠시 동화, 혹은 댓글이 비활성화 되며 해당 동화 혹은 댓글은 일시적으로 비활성화 됩니다. 관리자의 판단 하에 신고된 이유가 합당한지를 판단하고, 신고가 누적된 동화 혹은 댓글은 경고 없이 삭제될 수 있습니다. 문제가 없는 경우에는 비활성화가 풀리게 됩니다. 신고하기


  • 자체지갑

    • 자체지갑을 구현하여 지갑주소를 발급받고 SSF 토큰을 입금할 수 있습니다.

    • 입금한 SSF토큰으로 몽땅토큰을 구매할 수 있고, 반대로 몽땅토큰으로 SSF토큰을 구매할 수도 있습니다.

    • 발급받은 NFT를 확인할 수 있습니다. 자체지갑


✔ 주요 기술


버전

BACKEND(Spring)

  • Gradle : 7.6
  • IntelliJ : 2022.3.1
  • Spring
    • Spring Boot : 2.7.7
    • Spring Security : 2.3.2
    • Spring Data JPA : 2.7.6
    • Spring Cloud Starter AWS : 2.2.1
  • Swagger2 : 2.9.2
  • Json Web Token : 0.9.1
  • jdk : zulu 8
  • MariaDB : 10.6.5

FRONTEND(React)

  • Node.js : v16.19.0
  • npm : v8.19.3
  • React.js : v18.2.0

BACKEND(Express.js)

  • H/W
    • Raspberry Pi 4 Model B
    • Arduino Uno Rev 3
    • HC-06 Bluetooth Module
    • Joystick Module
  • S/W
    • CUPS: 2.3.3
    • Node.js : v16.19.0
    • npm : v8.19.3
    • React.js : v18.2.0
    • Electron : v26.0.5
    • Electron Forge : v6.0.4

FRONTEND(Vue.js)

  • Pycharm 2022.3.2
  • Flask : 2.2.2
  • Tensorflow : 2.11.0
  • Pytorch : 1.13.1+cu117

BLOCKCHAIN

  • Pycharm 2022.3.2
  • Flask : 2.2.2
  • Tensorflow : 2.11.0
  • Pytorch : 1.13.1+cu117

SERVER

  • AWS
    • S3
    • CloudFront
    • EC2
      • 플랫폼: Ubuntu 20.04.5 LTS
  • Docker : 23.0.1
  • Nginx : 1.18.0(Ubuntu)
  • Jenkins : 2.375.3
  • Jupyter Notebook : 6.5.2

개발환경

  • OS: window 10

  • IDE

    • intelliJ
    • VScode
    • Figma
    • Remix

✔ 프로젝트 파일 구조


S08P22A308
├─backend
│  ├─gradle
│  │  └─wrapper
│  └─src
│      ├─main
│      │  ├─java
│      │  │  └─com
│      │  │      └─ssafy
│      │  │          └─mongttang
│      │  │              ├─config
│      │  │              ├─controller
│      │  │              ├─dto
│      │  │              │  └─user
│      │  │              ├─entity
│      │  │              ├─exception
│      │  │              ├─handler
│      │  │              │  └─oauth2
│      │  │              ├─repository
│      │  │              ├─security
│      │  │              ├─service
│      │  │              └─util
│      │  └─resources
│      └─test
│          └─java
│              └─com
│                  └─ssafy
│                      └─mongttang
├─frontend
│  ├─.vscode
│  ├─build
│  │  └─static
│  │      ├─css
│  │      ├─js
│  │      └─media
│  ├─public
│  └─src
│      ├─api
│      ├─assets
│      │  ├─fonts
│      │  ├─icons
│      │  └─images
│      ├─components
│      │  └─common
│      ├─hooks
│      ├─pages
│      │  ├─Admin
│      │  ├─Book
│      │  ├─Challenge
│      │  ├─Edit
│      │  ├─Error
│      │  ├─Home
│      │  ├─Login
│      │  ├─Logout
│      │  ├─MyProfile
│      │  ├─Notice
│      │  ├─Search
│      │  └─Withdrawal
│      ├─store
│      ├─styles
│      └─utils
├─mongttang-wallet-back
│  ├─api
│  ├─config
│  ├─routes
│  └─Service
├─mongttang-wallet-front
│  ├─public
│  └─src
│      ├─api
│      ├─assets
│      │  └─fonts
│      ├─components
│      │  ├─trade
│      │  └─wallet
│      ├─router
│      ├─store
│      └─views
└─smart-contracts
    ├─.vscode
    ├─contracts
    │  ├─access
    │  ├─crosschain
    │  │  ├─amb
    │  │  ├─arbitrum
    │  │  ├─optimism
    │  │  └─polygon
    │  ├─finance
    │  ├─governance
    │  │  ├─compatibility
    │  │  ├─extensions
    │  │  └─utils
    │  ├─interfaces
    │  ├─metatx
    │  ├─mocks
    │  │  ├─compound
    │  │  ├─crosschain
    │  │  ├─docs
    │  │  ├─ERC165
    │  │  ├─governance
    │  │  ├─proxy
    │  │  ├─token
    │  │  └─wizard
    │  ├─proxy
    │  │  ├─beacon
    │  │  ├─ERC1967
    │  │  ├─transparent
    │  │  └─utils
    │  ├─security
    │  ├─token
    │  │  ├─common
    │  │  ├─ERC1155
    │  │  │  ├─extensions
    │  │  │  ├─presets
    │  │  │  └─utils
    │  │  ├─ERC20
    │  │  │  ├─extensions
    │  │  │  ├─presets
    │  │  │  └─utils
    │  │  ├─ERC721
    │  │  │  ├─extensions
    │  │  │  ├─presets
    │  │  │  └─utils
    │  │  └─ERC777
    │  │      └─presets
    │  ├─utils
    │  │  ├─cryptography
    │  │  ├─escrow
    │  │  ├─introspection
    │  │  ├─math
    │  │  └─structs
    │  └─vendor
    │      ├─amb
    │      ├─arbitrum
    │      ├─compound
    │      ├─optimism
    │      └─polygon
    ├─migrations
    └─test

✔ 협업 툴


  • Git
  • Notion
  • JIRA
  • MatterMost
  • kakao Talk

✔ 협업 환경


  • Gitlab
    • 코드의 버전을 관리
    • commit 시 JIRA의 이슈와 연동
  • JIRA
    • 매주 목표량을 설정하여 Sprint 진행
    • 업무의 할당량을 정하여 Story Point를 설정하고, In-Progress -> Done 순으로 작업
  • Notion
    • 회의가 있을때마다 회의록을 기록하여 보관
    • 학습한 기술에 대한 내용을 정리하여 공유
    • 컨벤션 정리
    • 스토리보드, 스퀀스다이어그램, 기능명세서 등 모두가 공유해야 하는 문서 관리
    • 백엔드와 프론트엔드 간 협업에 용이하도록 API명세서를 작성하여 관리

✔ 팀원 역할 분배


  • 이상훈: Back-end, Infra, Front-end, BlockChain
  • 한상원: 팀장, Front-end, UI/UX 디자인, Figma 보조
  • 이승희: 기획, PM, UI/UX 디자인, 프론트 개발, 발표
  • 여민지: Back-End, API 설계, DB 설계,UI/UX디자인, Figma 담당, UCC 편집
  • 나유현: Back-End, API 설계, DB 설계, 발표자료제작
  • 최강혁: BlockChain

✔ 프로젝트 산출물


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published