codestates-beb / BEB-08-LiFT

BEB-08-LiFT
1 stars 2 forks source link

1. 팀 소개

2. 프로젝트 소개

LiFT logo.png

3. What is Live NFT ?

4. What is Dynamic NFT?

dynamicNFT0 동적 NFT(dynamic NFT)는 외부 조건에 따라 메타데이터를 자동으로 변경할 수 있는 NFT입니다.

5. LiFT 가 제공하는 가치

6. 기획 및 개발 계획

초기에 생각한 서비스 Flow

flow

최종적으로 구성한 서비스 Flow

flow2

Weather DNFT Flow

weatherDnft

프론트엔드 To Do List

백엔드 To Do List

스마트 컨트랙트 To Do List

7. Backend API

API 명세서

API Name Method API Path
메인 홈페이지 GET http://localhost:1323/
NFT 디테일 페이지 GET http://localhost:1323/searchdetail/1
검색 GET http://localhost:1323/search?
마이 페이지 GET http://localhost:1323/user/mypage
마이 페이지 수정 POST http://localhost:1323/mypage/edit
Chainlink Automation NFT Dynamic NFT Minting POST http://localhost:1323/mnfts
Weather Dynamic NFT Minting POST http://localhost:1323/wdnfts
구매 POST http://localhost:1323/buy
판매 POST http://localhost:1323/sell
메타데이터 업데이트 POST http://localhost:1323/metadata

Postman으로 request 요청시 백엔드 서버의 로그를 확인

weatherDnft

8. DB Table

create database lift;

use lift;

CREATE TABLE `users` (
  `id` int PRIMARY KEY AUTO_INCREMENT ,
  `name` varchar(255),
  `owner_address` varchar(255),
  `description` varchar(255)
);
ALTER TABLE users ADD UNIQUE (`owner_address`);

CREATE TABLE `nft` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `users_id` int default 0,
  `token_id` int default 0,
  `owner_address` varchar(255),
  `name` varchar(255),
  `description` varchar(255),
  `ipfs_url` varchar(255),
  `nft_contract_address` varchar(255)

);

CREATE TABLE `nft_metadata` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `token_id` int default 0,
  `owner_address` varchar(255),
   `nft_contract_address` varchar(255),
  `ipfs_url1` varchar(255),
  `ipfs_url2` varchar(255),
  `ipfs_url3` varchar(255),
  `ipfs_url4` varchar(255)
);

CREATE TABLE market (
   `id` int PRIMARY KEY AUTO_INCREMENT,
   `nft_contract_address` varchar(255),
   `market_contract_address` varchar(255),
   `token_id` varchar(255),
   `owner_address` varchar(255),
   `price` int ,
   `sale_status` varchar(255)
);

CREATE TABLE `automation_dnft` (
  `auto_id` int PRIMARY KEY AUTO_INCREMENT,
  `auto_users_id` int,
  `auto_token_id` int,
  `auto_owner_address` varchar(255),
  `auto_name` varchar(255),
  `auto_description` varchar(255),
  `auto_ipfs_url` varchar(255),
  `auto_nft_contract_address` varchar(255)
);

CREATE TABLE `Weather` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`locationID` int,
`name` varchar(255),
`latitude` float,
`longitude` float,
);

CREATE INDEX idx_nft_name ON nft(name);
CREATE INDEX idx_nft_description ON nft(description);
CREATE INDEX idx_nft_ownerAddress ON nft(owner_address);

9. env 구성

9-1. 기본설정

9-2 DB Config

9-3 Dynamic NFT Contract

9-4 VRF 컨트랙트 주소

10. Sample Hardhat Project