프로젝트2 - Incentive Community 클론코딩

Imomo·2022년 11월 9일
0

프로젝트

목록 보기
1/2
post-thumbnail

📚 목표

  • Web2.0에서 블록체인 인센티브를 기반으로, 커뮤니티 사이트를 개발한다.
  • Web2.0 기반 커뮤니티 사이트의 아키텍쳐를 이해할 수 있다.
  • 인센티브 시스템의 동작 원리를 이해할 수 있다.

📚 배경

팀명으로 fantastic4 로 지었다. 프로젝트의 기능으로 게시판 홈페이지의 기본기능에 블록체인을 추가하여 게시판을 작성하여 좋아요를 받을경우 인센티브로 코인을 받게되며, 받은 코인으로 NFT 민팅을 진행할 수 있도록 하였다.
이번에 팀에서 맡은 역할은 백엔드 부분과 DB스키마 구성이었다. 게시판을 기반으로하는 프로젝트 임으로 예전에 경험을 살려 DB 구성을 빠르게 진행할 수 있었으며, 게시글 및 댓글 좋아요 기능을 이번에 첨으로 구현해 보았다.

📚 구조

블록체인 네트워크는 테스트넷인 Goerli를 이용하지않고 가나슈를 활용했다. 지갑구현은 서버에서 구현하였고,이미지 업로드 및 JSON 형태의 정보를 IPFS를 통해 업로드 하는 것을 해보았다.

📌 Wire Frame

  1. signup

  1. signin

  1. mypage

  1. minting

  1. detailpage

  1. main

팀원중 한분이 디자인해준 프로젝트 청사진이다.

📌 DB Schema

Sequelize를 활용해서 구현해보았다. 테이블간의 서로 연관 관계를 생각하는것이 생각보다 어려웠지만 팀원과의 소통으로 해결책을 찾아보았다.

static associate(db) {
    db.User.hasMany(db.Post,       { foreignKey: 'userId' , sourceKey: 'id' });
    db.User.hasMany(db.Comment,    { foreignKey: 'commenter', sourceKey: 'id' });
    db.User.hasMany(db.Token,      { foreignKey: 'userId', sourceKey: 'id' });
    db.User.hasOne(db.PostLike,    { foreignKey: 'LikeUserId', sourceKey: 'id' });
    db.User.hasOne(db.CommentLike, { foreignKey: 'LikeUserId', sourceKey: 'id' });
    db.User.belongsToMany(db.User, {
      foreignKey: "followingId",
      as: "Followers", 		//함수불러올때 이름을 정의해주는것
      through: "Follow", 	//중간테이블 이름선언
    });
    db.User.belongsToMany(db.User, {
      foreignKey: "followerId",
      as: "Followings",
      through: "Follow",
    });
  }

user테이블에서 다른 테이블과의 가장 많은 관계형성이 이루어 졌다.

📌 Swagger

swagger를 활용하여 백엔드 API 문서 개발 경험도 해보았다.

📚 실행화면

  1. 로그인 화면

  2. 개인페이지 화면

  3. 포스팅 기능

  4. 댓글 기능

  5. 민팅 화면

Final

2주라는 기간동안 새로운 팀원들과 함께 프로젝트를 진행해보니 즐거웠으며, 팀원들 대부분이 비전공자임에도 불구하고 열정과 개발능력이 상당하여 본받고자 함을 느끼게 되었다. 이번에 백엔드로 진행하며 목표했었던 API를 모두 구현해보았다. API개발하면서 프론트엔드 팀원과의 소통에서 API문서작성이 중요하다는 것을 다시한번 느끼게 되었다. 이번에 처음 사용해보는 Swagger라이브러리를 활용하여 문서를 간단하게 작성해 보는 경험을 해보았다. 블록체인 관련 프로젝트 이었지만 토큰 이코노미에 대한 내용이 부족함을 느꼈고 단조로운 방식의 코인 인센티브였던것을 개선했으면 한다.

https://github.com/hd3946/BEB-06-SECOND-04

0개의 댓글