diff --git a/README.md b/README.md deleted file mode 100644 index 78e192f..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# WishWith-back \ No newline at end of file diff --git a/__pycache__/database.cpython-312.pyc b/__pycache__/database.cpython-312.pyc new file mode 100644 index 0000000..51f044b Binary files /dev/null and b/__pycache__/database.cpython-312.pyc differ diff --git a/__pycache__/database.cpython-37.pyc b/__pycache__/database.cpython-37.pyc new file mode 100644 index 0000000..ef4ead7 Binary files /dev/null and b/__pycache__/database.cpython-37.pyc differ diff --git a/app/crawl.py b/app/crawl.py new file mode 100644 index 0000000..7df837e --- /dev/null +++ b/app/crawl.py @@ -0,0 +1 @@ +#이 파일은 예시고, 이런 식으로 app 파일 밑에 python backend 코드 파일을 기능별로 추가하면 된다. \ No newline at end of file diff --git a/application.py b/application.py new file mode 100644 index 0000000..4ef5b9f --- /dev/null +++ b/application.py @@ -0,0 +1,96 @@ +from flask import Flask, render_template , request, url_for, request, redirect , flash, session +from database import DBhandler +import hashlib +import sys + +app = Flask(__name__) +app.config["SECRET_KEY"]="helloosp" +DB = DBhandler() + + +@app.route('/') +def index(): + return render_template('index.html') + +@app.route('/mypage') +def mypage(): + return render_template('mypage.html') +@app.route('/login') +def login(): + return render_template('login.html') + + + + + +@app.route("/product-add") +def productAdd(): + return render_template('product_add.html') + + +@app.route("/add-product-post", methods=["POST"]) +def registerproduct(): + data = { + "product_description": request.form.get("product-description"), + "product_place": request.form.get("product-place"), + "product_number": request.form.get("product-number"), + "product_category": request.form.get("product-category"), + "start_date": request.form.get("start-date"), + "end_date": request.form.get("end-date") + } + DB.insert_item(data['product_category'], data) + return render_template("products_list.html", data=data) + + + + + +@app.route("/product-detail") +def productDetail(): + return render_template('product_detail.html') + +@app.route("/products-list") +def productsList(): + return render_template('products_list.html') + +@app.route("/review-add") +def reviewAdd(): + return render_template('review_add.html') + +@app.route("/review-detail") +def reviewDetail(): + return render_template('review_detail.html') + +@app.route("/reviews-list") +def reviewList(): + return render_template('reviews_list.html') + +@app.route("/signup1") +def signup1(): + return render_template('signup1.html') + +@app.route("/signup2", methods=["GET", "POST"]) +def signup2(): + if request.method == "POST": + return redirect(url_for('signup1')) + return render_template('signup2.html') + + + +@app.route("/signup1_post", methods=['POST']) +def register_user(): + data = request.form + pw = request.form['pw'] + pw_hash = hashlib.sha256(pw.encode('utf-8')).hexdigest() + + if DB.insert_user(data, pw_hash): + return render_template("signup2.html") + else: + flash("user id already exist!") + return render_template("signup1.html") + + + + +if __name__ == '__main__': + app.run('0.0.0.0', port=5000, debug=True) \ No newline at end of file diff --git a/authentication/firebase_auth.json b/authentication/firebase_auth.json new file mode 100644 index 0000000..e195eda --- /dev/null +++ b/authentication/firebase_auth.json @@ -0,0 +1,10 @@ +{ + "apiKey": "AIzaSyAVqcnhvGdXBsFFGKIaLnbaj0uhKWc_j2Y", + "authDomain": "orang2e.firebaseapp.com", + "databaseURL": "https://orang2e-default-rtdb.firebaseio.com", + "projectId": "orang2e", + "storageBucket": "orang2e.appspot.com", + "messagingSenderId": "711343754986", + "appId": "1:711343754986:web:32775e00125e5ef9ca5193", + "measurementId": "G-60K28M0YGW" + } \ No newline at end of file diff --git a/database.py b/database.py new file mode 100644 index 0000000..4e8f8aa --- /dev/null +++ b/database.py @@ -0,0 +1,47 @@ +import pyrebase +import json + +class DBhandler: + def __init__(self): + with open('./authentication/firebase_auth.json') as f: + config = json.load(f) + firebase = pyrebase.initialize_app(config) + self.db = firebase.database() + + def insert_item(self, name, data): + item_info = { + "product_description": data['product_description'], + "product_place": data['product_place'], + "product_number": data['product_number'], + "product_category": data['product_category'], + "start_date": data['start_date'], + "end_date": data['end_date'], + } + self.db.child("item").child(name).set(item_info) + print(data) + return True + + def insert_user(self, data, pw): + user_info = { + "id": data['id'], + "pw": pw, + "name": data['name'] + } + if self.user_duplicate_check(str(data['id'])): + self.db.child("user").push(user_info) + print(data) + return True + else: + return False + + def user_duplicate_check(self, id_string): + users = self.db.child("user").get() + print("users###", users.val()) + if str(users.val()) == "None": # first registration + return True + else: + for res in users.each(): + value = res.val() + if value['id'] == id_string: + return False + return True diff --git a/static/css/footer.css b/static/css/footer.css new file mode 100644 index 0000000..4005689 --- /dev/null +++ b/static/css/footer.css @@ -0,0 +1,22 @@ +.footer-container { + width: 100%; + height: 340px; + display: flex; + align-items: top; + justify-content: left; + position: absolute; + bottom: 0; + border-top: solid 1px black; + padding-top: 50px; + padding-left: 5%; + color: black; /* Or any other text color */ + font-size: 14px; /* Adjust as necessary */ +} + +.footer-content { + display: flex; + flex-direction: row; + gap: 10px; /* Adjust the space between items */ +} + +/* Add additional styling for the text as needed */ diff --git a/static/css/header.css b/static/css/header.css new file mode 100644 index 0000000..f27f602 --- /dev/null +++ b/static/css/header.css @@ -0,0 +1,79 @@ +* { + padding: 0; + margin: 0; + border: none; + box-sizing: border-box; +} + +.header { + display: flex; + width: 100%; + height: 173px; + position: relative; + flex-direction: column; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; /* 여백 */ +} + +#logo { + flex-grow: 1; /* 로고 이미지가 더 큰 공간을 차지하도록 함 */ + display: flex; + position: absolute; + left: 5%; +} +.nav { + width: 100%; + height: 80px; + display: flex; + position: absolute; + + left: 5%; + bottom: 0; +} + +.nav a { + text-decoration: none; + color: black; + margin: 0 1rem; /* 링크 사이의 간격 */ + font-family: "Pretendard-SemiBold", sans-serif; + font-size: 1rem; /* 글자 크기 */ +} + +#login-btn, +#reg-btn, +#wish-btn, +#mypage-btn { + padding: 0.5rem 1rem; /* 버튼 내부 여백 */ + border-radius: 5px; /* 버튼 모서리 둥글기 */ + font-family: "Pretendard-Bold", sans-serif; + font-size: 0.875rem; /* 글자 크기 */ + text-decoration: none; + display: flex; + align-items: center; + justify-content: center; +} + +#login-btn, +#reg-btn { + background-color: #f5f5f5; /* 배경색 */ + color: #5bab93; /* 텍스트 색상 */ + margin-right: 1rem; /* 오른쪽 여백 */ +} + +#wish-btn { + background-color: #fffcf0; /* 배경색 */ + color: #5bab93; /* 텍스트 색상 */ +} + +#mypage-btn { + background-color: #f5f5f5; /* 배경색 */ + color: #5bab93; /* 텍스트 색상 */ +} + +.btn-box { + display: flex; + flex-direction: row; + position: absolute; + right: 5%; +} diff --git a/static/css/index.css b/static/css/index.css new file mode 100644 index 0000000..a5be489 --- /dev/null +++ b/static/css/index.css @@ -0,0 +1,315 @@ +html { + position: relative; +} +body { + width: 100vw; + margin: 0; + background: white; +} +.text-box1, +.text-box2, +.text-box3, +.text-box4 { + left: 50%; + transform: translateX(-55%); + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #e27a6c solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} +.text-box1 { + top: 634px; +} +.text-box2 { + top: 1208px; +} +.text-box3 { + top: 1787px; +} +.text-box4 { + top: 50px; +} +.review-page-go { + top: 110px; + left: 50%; + transform: translateX(-55%); + justify-content: center; + align-items: center; + position: absolute; + white-space: nowrap; + font-family: Pretendard Variable; + font-weight: 500; +} +.text1-1, +.text2-1, +.text3-1 { + color: #e27a6c; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.text1-2, +.text2-2, +.text3-2, +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.review-box { + margin: 0px; + width: 100%; + top: 2432px; + height: 646px; + background: rgb(255, 252, 240, 1); + position: absolute; +} +.footer { + display: flex; + position: fixed; + bottom: 0; +} +.card-line1, +.card-line2, +.card-line3, +.card-line4 { + position: absolute; + display: flex; + flex-direction: row; +} +.card-line1 { + top: 706px; +} +.card-line2 { + top: 1280px; +} +.card-line3 { + top: 1860px; +} +.card-line4 { + top: 160px; +} +.card-container1, +.card-container2, +.card-container3, +.card-container4 { + width: 100%; + height: 100%; + align-items: center; + display: flex; + flex-direction: row; + gap: 30px; + margin-left: 150px; + position: realtive; +} +.container { + display: flex; + position: relative; + width: 270px; + height: 432.02px; +} +.inner-box1 { + width: 268px; + height: 140px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.inner-box2 { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.inner-textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} +.category { + padding-bottom: 5px; +} +.category-label { + color: #46a1bb; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} +.store { + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} +.product-name { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; + padding-bottom: 5px; +} +.price { + color: #b9b9b9; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 400; + word-wrap: break-word; + text-align: left; +} +.progress { + text-align: left; + padding-left: 20px; + padding-right: 20px; +} +.progress-text { + padding-bottom: 4px; +} +.dday { + width: 44px; + height: 18px; + position: absolute; + text-align: center; + color: #e27a6c; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.discount { + width: 33.96px; + height: 18.36px; + position: absolute; + text-align: right; + right: 20px; + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.progress-bar-bg { + width: 228px; + height: 12px; + position: absolute; + background: #d9d9d9; + border-radius: 5.97px; + overflow: hidden; /* 클리핑 추가 */ +} +.progress-bar { + height: 100%; /* 높이 100%로 설정 */ + position: relative; + background: #00664f; + border-radius: 5.97px; + transition: width 0.5s ease; /* 움직임 효과 추가 */ +} +.UIcard { + margin-top: 60px; + position: relative; + width: 270px; + height: 388.98px; + padding: 0; + margin: 0; +} +.card.bottom { + width: 268px; + height: 145.98px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +#name { + color: #00664f; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400px; + line-height: 18px; + flex-shrink: 0; +} +.card.top { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.card.textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} +.review.contents { + color: #000; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 18px; + margin-top: 9px; +} +.line { + width: 268px; + height: 1px; + background-color: #d9d9d9; + padding: 0; + margin: 0; +} +.product.name { + color: #b9b9b9; + text-align: center; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + margin-top: 13px; +} +.heart { + position: absolute; + right: 0; + bottom: 0; + margin: 10px; +} diff --git a/static/css/login.css b/static/css/login.css new file mode 100644 index 0000000..4840e67 --- /dev/null +++ b/static/css/login.css @@ -0,0 +1,185 @@ +@font-face { + font-family: "Pretendard-Regular"; + font-weight: 400; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Medium"; + font-weight: 500; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Bold"; + font-weight: 700; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.ttf") + format("truetype"); + font-display: swap; +} + +* { + padding: 0; + margin: 0; + border: none; +} + +#ximg { + margin-left: 16px; + margin-top: 13px; +} + +.textinfo { + margin-left: 121.5px; + margin-top: -9.77px; + width: 146px; + height: 64px; + padding: 10px; + text-align: center; + font-size: 16px; +} + +.text1 { + font-family: "Pretendard-Regular"; +} + +.text2 { + font-family: "Pretendard-Bold"; +} + +#login { + margin-left: 29px; + margin-top: 138px; + width: 62px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Bold"; + color: #000; + text-decoration: none; + text-align: center; + border-bottom-style: solid; + border-bottom-width: 1.5px; + border-bottom-color: #5bab93; +} + +#signup { + margin-top: 138px; + width: 76px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Medium"; + color: #b9b9b9; + text-decoration: none; + text-align: center; +} + +#login-form > label { + margin-left: 28px; + height: 38px; + padding: 10px; + text-align: left; + font-size: 15px; + font-family: "Pretendard-Regular"; + color: #000; +} + +#login-form > label[id="id"] { + margin-top: 30px; + width: 59px; +} + +#login-form > label[id="password"] { + width: 72px; +} + +#login-form > input { + height: 38px; + padding: 10px; + font-size: 15px; + font-family: "Pretendard-Regular"; + color: #d9d9d9; + background-color: #fff; +} + +#login-form > input[name="id"] { + width: 107px; + margin-left: 28px; + margin-top: 30px; +} + +#login-form > input[name="password"] { + width: 116px; + margin-left: 15px; + margin-top: 9px; +} + +hr { + width: 332px; + height: 1.5px; + margin-left: 28px; + background-color: #5bab93; + border: 0; +} + +.findpw { + display: flex; + flex-direction: row; + height: 17px; + padding: 10px; + margin-top: 18px; + text-align: left; + font-size: 14px; + font-family: "Pretendard-Regular"; +} + +#findpw1 { + margin-left: 27px; + width: 144px; +} + +#findpw2 { + margin-left: 11px; + width: 77px; + color: #e27a6c; +} + +#login-form > input[type="submit"] { + width: 332px; + height: 43px; + margin-left: 28px; + margin-top: 64px; + border-radius: 10px; + padding: 10px; + background-color: #5bab93; + color: #fff; + font-size: 16px; + font-family: "Pretendard-Regular"; +} diff --git a/static/css/mypage.css b/static/css/mypage.css new file mode 100644 index 0000000..e69de29 diff --git a/static/css/product_add.css b/static/css/product_add.css new file mode 100644 index 0000000..5e4da04 --- /dev/null +++ b/static/css/product_add.css @@ -0,0 +1,181 @@ +.container { + width: 100%; + margin: auto; + border-radius: 4px; + background-color: #ffffff; +} +body { + margin: 0; + width: 100vw; + background-color: #ffffff; +} + +.navigation { + width: 100%; + height: 100px; + margin-bottom: 70px; + display: flex; + position: relative; +} + +.navigation .back-arrow { + height: 60px; + display: flex; + position: absolute; + bottom: 0; + font-size: 24px; + left: 5%; + cursor: pointer; +} + +.header { + color: #000; + margin-left: 5%; + margin-bottom: 40px; + font-family: Pretendard Variable; + font-size: 28px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.content .content-header { + display: flex; + justify-content: space-between; + padding-bottom: 10px; + border-bottom: 2px solid #eee; + margin-bottom: 20px; +} + +.sub-title { + color: #888; + font-size: 18px; +} +.navBar { + width: 90%; + height: 50px; + margin-left: 5%; + align-items: center; + flex: left; + display: flex; + text-align: center; +} + +.navList { + width: 110px; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.navList.selected { + border-bottom: solid 2px #5bab93; +} + +.form-section { + padding: 92px 5%; + gap: 50px; + + display: flex; + background-color: #f5f5f5; + width: 100%; + flex-direction: column; +} +.form-title { + color: #000; + margin-bottom: 10px; + + font-family: Pretendard Variable; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.form-description { + color: #000; + + font-family: Pretendard Variable; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; +} + +input[type="text"] { + width: 312px; + height: 50px; + flex-shrink: 0; + border: 1px solid #b9b9b9; + background: #fff; + padding-left: 20px; + margin-left: 5%; + margin-right: 8px; +} +.product-info { + display: flex; + margin-bottom: 46px; +} + +.image-placeholder { + display: flex; + width: 150px; + height: 150px; + background-color: grey; + margin-right: 20px; +} + +.product-details div { + margin: 5px 0 15px 10px; +} + +.action-buttons { + display: flex; + align-items: center; + position: absolute; + height: 100%; + right: 5%; +} + +.secondary-btn, +.primary-btn { + display: flex; + width: 124.225px; + height: 32.251px; + padding: 2.389px 7.167px; + justify-content: center; + align-items: center; + gap: 23.889px; + flex-shrink: 0; + border-radius: 4.778px; + border: none; + font-family: Pretendard Variable; + font-size: 15px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.secondary-btn { + background-color: #f3f3f3; + color: #5bab93; + margin-right: 10px; +} + +.primary-btn { + background-color: #5bab93; + color: white; +} + +.register-btn { + width: 93px; + height: 43px; + padding: 10px; + border: none; + border-radius: 10px; + cursor: pointer; + margin-left: 20px; + background-color: #5bab93; + color: white; +} diff --git a/static/css/product_card.css b/static/css/product_card.css new file mode 100644 index 0000000..e69de29 diff --git a/static/css/product_detail.css b/static/css/product_detail.css new file mode 100644 index 0000000..80ea794 --- /dev/null +++ b/static/css/product_detail.css @@ -0,0 +1,265 @@ +body { + width: 100%; + margin: 0; +} + +header { + width: 100%; + background-color: grey; + height: 173px; +} + +.adBox { + width: 100%; + height: 119px; + background-color: #fffcf0; +} + +.container { + display: flex; + width: 90%; + flex-direction: column; + + margin: auto; + background-color: #ffffff; +} +.infoContainer { + width: 100%; + display: flex; + flex-direction: row; + margin-top: 71px; + position: relative; +} +.imgBox { + display: flex; + padding-bottom: 30%; + margin-right: 60px; + position: relative; + left: 0; + width: 30%; + background-color: grey; +} +.infoBox { + width: calc(70% - 60px); +} + +.imgBox { + width: 100%; /* Adjust as necessary */ + height: 200px; /* Adjust as necessary */ + background-color: #f3f3f3; /* Placeholder color */ + margin-bottom: 20px; +} + +.infoBox { + display: flex; + flex-direction: column; + width: 80%; +} + +.company { + display: flex; + color: #b9b9b9; + text-align: left; + text-align: center; + font-family: Pretendard Variable; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + margin-bottom: 11px; +} +.proTitle, +.profileBox, +.subInfo, +.mainPrice { + display: flex; + align-items: center; + margin-bottom: 10px; +} + +.company { + font-size: 1.2em; + font-weight: bold; +} + +.proTitle { + color: #000; + + font-family: Pretendard Variable; + font-size: 36px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.profileBox { + display: flex; + align-items: center; + margin-bottom: 25px; +} + +.profileText { + display: flex; + width: 124.225px; + height: 32.251px; + padding: 2.389px 7.167px; + justify-content: center; + align-items: center; + gap: 23.889px; + flex-shrink: 0; + border-radius: 4.778px; + background: #f5f5f5; + color: #5bab93; + margin-right: 10px; + + text-align: center; + font-family: Pretendard Variable; + font-size: 15px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.description { + color: #666; + color: #5bab93; + text-align: center; + font-family: Pretendard Variable; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.subInfo { + display: flex; +} + +.subTitle { + width: 100px; + color: #b9b9b9; + text-align: left; + font-family: Pretendard Variable; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +.subDate { + color: #000; + margin-right: 10px; + + font-family: Pretendard Variable; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; +} +.dDay { + display: inline-flex; + padding: 5px 10px; + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 20px; + background: #e27a6c; + + color: #fff; + + text-align: center; + font-family: Pretendard Variable; + font-size: 12px; + font-style: normal; + font-weight: 600; + line-height: normal; +} +.priceText { + color: #e27a6c; + text-align: center; + font-family: Pretendard Variable; + font-size: 36px; + font-style: normal; + font-weight: 700; + line-height: normal; + margin-left: 5px; +} +.realPrice { + display: flex; + color: #888; + text-align: left; +} + +.progressBar { + width: 150px; + height: 11px; + border-radius: 5.972px; + background: #00664f; +} + +.mainPrice { + display: flex; + margin: 10px 8px 10px 5px; + align-items: baseline; +} + +.perText { + font-weight: bold; + margin-right: 5px; +} + +.realPrice { + margin-left: 10px; + color: #666; +} + +.particBtn { + display: flex; + position: absolute; + bottom: 20px; + right: 0; + border-radius: 10px; + border: none; + background: var(--mint, #5bab93); + padding: 10px 20px; + color: white; + cursor: pointer; + width: 332px; + height: 43px; + justify-content: center; + align-items: center; +} + +.particBtn:hover { + background-color: #0056b3; /* Darker shade for hover effect */ +} + +footer { + width: 100%; + height: 340px; + background-color: #f9f9f9; + position: relative; + bottom: 0; +} + +.navBar { + width: 100%; + + height: 50px; + align-items: center; + flex: left; + display: flex; + text-align: center; +} + +.navList { + width: 110px; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.navList.selected { + border-bottom: solid 2px #5bab93; +} diff --git a/static/css/products_list.css b/static/css/products_list.css new file mode 100644 index 0000000..63fffb7 --- /dev/null +++ b/static/css/products_list.css @@ -0,0 +1,791 @@ +.header { + margin: 0px; + width: 100%; + height: 553px; + background: rgba(255, 252, 240, 1); +} + +body { + width: 100vw; + margin: 0; + background: white; +} + +.text-box1, +.text-box2 { + top: 634px; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #5bab93 solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} + +.text-box1 { + margin-left: 150px; +} + +.text-box2 { + margin-left: 250px; +} + +.text1-1, +.text2-1 { + color: #5bab93; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.footer { + margin: 0px; + width: 100%; + top: 2875px; + height: 340px; + background: white; + position: absolute; +} + +.card-line1, +.card-line2, +.card-line3, +.card-line4 { + position: absolute; + display: flex; + flex-direction: row; +} + +.card-line1 { + top: 706px; +} + +.card-line2 { + top: 1180px; +} + +.card-line3 { + top: 1660px; +} + +.card-line4 { + top: 160px; +} + +.card-container1, +.card-container2, +.card-container3, +.card-container4 { + width: 100%; + height: 100%; + align-items: center; + display: flex; + flex-direction: row; + gap: 30px; + margin-left: 150px; + position: realtive; +} + +.container { + display: flex; + position: relative; + width: 270px; + height: 432.02px; +} + +.inner-box1 { + width: 268px; + height: 140px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.inner-box2 { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.inner-textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} + +.category { + padding-bottom: 5px; +} + +.category-label { + color: #46a1bb; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} + +.store { + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} + +.product-name { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; + padding-bottom: 5px; +} + +.price { + color: #b9b9b9; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 400; + word-wrap: break-word; + text-align: left; +} + +.progress { + text-align: left; + padding-left: 20px; + padding-right: 20px; +} + +.progress-text { + padding-bottom: 4px; +} + +.dday { + width: 44px; + height: 18px; + position: absolute; + text-align: center; + color: #e27a6c; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.discount { + width: 33.96px; + height: 18.36px; + position: absolute; + text-align: right; + right: 20px; + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.progress-bar-bg { + width: 228px; + height: 12px; + position: absolute; + background: #d9d9d9; + border-radius: 5.97px; + overflow: hidden; + /* 클리핑 추가 */ +} + +.progress-bar { + height: 100%; + /* 높이 100%로 설정 */ + position: relative; + background: #00664f; + border-radius: 5.97px; + transition: width 0.5s ease; + /* 움직임 효과 추가 */ +} + +.heart { + position: absolute; + right: 0; + bottom: 0; + margin: 10px; +} + +.review-box { + margin: 0px; + width: 100%; + top: 2232px; + height: 646px; + background: rgb(255, 252, 240, 1); + position: absolute; +} + +.review-page-go { + top: 110px; + left: 50%; + transform: translateX(-55%); + justify-content: center; + align-items: center; + position: absolute; + white-space: nowrap; + font-family: Pretendard Variable; + font-weight: 500; +} + +.text-box4 { + left: 50%; + top: 50px; + transform: translateX(-55%); + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #e27a6c solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} + +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.UIcard { + margin-top: 60px; + position: relative; + width: 270px; + height: 388.98px; + padding: 0; + margin: 0; +} + +.card.bottom { + width: 268px; + height: 145.98px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +#name { + color: #00664f; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400px; + line-height: 18px; + flex-shrink: 0; +} + +.card.top { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.card.textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} + +.review.contents { + color: #000; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 18px; + margin-top: 9px; +} + +.line { + width: 268px; + height: 1px; + background-color: #d9d9d9; + padding: 0; + margin: 0; +} + +.product.name { + color: #b9b9b9; + text-align: center; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + margin-top: 13px; +} + +.pagebox { + top: 2130px; + position: absolute; + left: 50%; + transform: translateX(-55%); +} + +.page { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: center; + gap: 35px; + display: inline-flex; +} + +.page-now { + padding: 10px; + background: #5bab93; + border-radius: 10px; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; +} + +.number-now { + text-align: center; + color: #fffcf0; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} + +.page-text { + text-align: center; + color: #b9b9b9; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} + + +body { + width: 100vw; + margin: 0; + background: white; +} +.text-box1, +.text-box2 { + top: 634px; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #5bab93 solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} +.text-box1 { + margin-left: 150px; +} +.text-box2 { + margin-left: 250px; +} +.text1-1, +.text2-1 { + color: #5bab93; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.footer { + margin: 0px; + width: 100%; + top: 2875px; + height: 340px; + background: white; + position: absolute; +} +.card-line1, +.card-line2, +.card-line3, +.card-line4 { + position: absolute; + display: flex; + flex-direction: row; +} +.card-line1 { + top: 706px; +} +.card-line2 { + top: 1180px; +} +.card-line3 { + top: 1660px; +} +.card-line4 { + top: 160px; +} +.card-container1, +.card-container2, +.card-container3, +.card-container4 { + width: 100%; + height: 100%; + align-items: center; + display: flex; + flex-direction: row; + gap: 30px; + margin-left: 150px; + position: realtive; +} +.container { + display: flex; + position: relative; + width: 270px; + height: 432.02px; +} +.inner-box1 { + width: 268px; + height: 140px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.inner-box2 { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.inner-textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} +.category { + padding-bottom: 5px; +} +.category-label { + color: #46a1bb; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} +.store { + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} +.product-name { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; + padding-bottom: 5px; +} +.price { + color: #b9b9b9; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 400; + word-wrap: break-word; + text-align: left; +} +.progress { + text-align: left; + padding-left: 20px; + padding-right: 20px; +} +.progress-text { + padding-bottom: 4px; +} +.dday { + width: 44px; + height: 18px; + position: absolute; + text-align: center; + color: #e27a6c; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.discount { + width: 33.96px; + height: 18.36px; + position: absolute; + text-align: right; + right: 20px; + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.progress-bar-bg { + width: 228px; + height: 12px; + position: absolute; + background: #d9d9d9; + border-radius: 5.97px; + overflow: hidden; /* 클리핑 추가 */ +} +.progress-bar { + height: 100%; /* 높이 100%로 설정 */ + position: relative; + background: #00664f; + border-radius: 5.97px; + transition: width 0.5s ease; /* 움직임 효과 추가 */ +} +.heart { + position: absolute; + right: 0; + bottom: 0; + margin: 10px; +} +.review-box { + margin: 0px; + width: 100%; + top: 2232px; + height: 646px; + background: rgb(255, 252, 240, 1); + position: absolute; +} +.review-page-go { + top: 110px; + left: 50%; + transform: translateX(-55%); + justify-content: center; + align-items: center; + position: absolute; + white-space: nowrap; + font-family: Pretendard Variable; + font-weight: 500; +} +.text-box4 { + left: 50%; + top: 50px; + transform: translateX(-55%); + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #e27a6c solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} +.UIcard { + margin-top: 60px; + position: relative; + width: 270px; + height: 388.98px; + padding: 0; + margin: 0; +} +.card.bottom { + width: 268px; + height: 145.98px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +#name { + color: #00664f; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400px; + line-height: 18px; + flex-shrink: 0; +} +.card.top { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} +.card.textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} +.review.contents { + color: #000; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 18px; + margin-top: 9px; +} +.line { + width: 268px; + height: 1px; + background-color: #d9d9d9; + padding: 0; + margin: 0; +} +.product.name { + color: #b9b9b9; + text-align: center; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + margin-top: 13px; +} +.pagebox { + top: 2130px; + position: absolute; + left: 50%; + transform: translateX(-55%); +} +.page { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: center; + gap: 35px; + display: inline-flex; +} +.page-now { + padding: 10px; + background: #5bab93; + border-radius: 10px; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; +} +.number-now { + text-align: center; + color: #fffcf0; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} +.page-text { + text-align: center; + color: #b9b9b9; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} diff --git a/static/css/review_add.css b/static/css/review_add.css new file mode 100644 index 0000000..73ced5a --- /dev/null +++ b/static/css/review_add.css @@ -0,0 +1,164 @@ +select { + display: flex; + position: relative; +} + +.submit-section { + position: absolute; + right: 5%; + float: right; + display: flex; + width: 124.225px; + height: 32.251px; + padding: 2.389px 7.167px; + justify-content: center; + align-items: center; + gap: 23.889px; + flex-shrink: 0; +} + +#button1 { + background-color: #f5f5f5; + color: #5bab93; + border-color: #f5f5f5; + display: flex; + width: 124.225px; + height: 32.251px; + padding: 2.389px 7.167px; + justify-content: center; + align-items: center; + gap: 23.889px; + flex-shrink: 0; + border-radius: 4.778px; + cursor: pointer; + outline: none; + box-shadow: none; +} + +#button2 { + background-color: #5bab93; + border-color: #5bab93; + color: #f5f5f5; + display: flex; + width: 124.225px; + height: 32.251px; + padding: 2.389px 7.167px; + justify-content: center; + align-items: center; + gap: 23.889px; + flex-shrink: 0; + border-radius: 4.778px; + cursor: pointer; + outline: none; + box-shadow: none; +} + +#title1 { + width: 196px; + height: 43px; + color: #000; + font-family: Pretendard Variable; + font-size: 26px; + font-style: normal; + font-weight: 700; + line-height: normal; + margin-left: 5%; + margin-top: 100px; +} + +.tabs div:hover { + border-bottom: 3px solid #5bab93; +} + +.tabs { + display: inline; + float: left; + margin-left: 5%; + margin-top: 10px; +} + +.tab { + display: inline; + float: left; + color: #000; + text-align: center; + font-family: Pretendard Variable; + font-size: 16px; + font-style: normal; + font-weight: 550; + line-height: normal; + padding: 8px; +} + +.review-write { + width: 100%; + max-width: 600px; + margin: 0 auto; + padding: 20px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +.form-section { + display: flex; + width: 90%; + margin: auto; + flex-direction: column; +} + +.form-section label { + font-weight: bold; + margin-top: 10px; +} + +.form-section p { + margin-top: 5px; + font-size: 0.9rem; + color: #666; +} + +.form-section select, +.form-section textarea { + margin-top: 10px; + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + width: 100%; + box-sizing: border-box; +} + +.form-section textarea { + height: 100px; + resize: vertical; +} + +.form-section button { + margin-top: 10px; + padding: 10px 20px; + background-color: #f0f0f0; + border: 1px solid #ccc; + border-radius: 4px; + cursor: pointer; +} + +.form-section button:hover { + background-color: #e7e7e7; +} + +#backicon { + position: absolute; + left: 5%; + top: 40px; +} + +#photo-upload { + width: 150px; + display: inline-flex; + padding: 10px 30px; + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 30px; + border: 1px solid #d9d9d9; + + background: #fff; +} diff --git a/static/css/review_card.css b/static/css/review_card.css new file mode 100644 index 0000000..e69de29 diff --git a/static/css/review_detail.css b/static/css/review_detail.css new file mode 100644 index 0000000..12eb4ec --- /dev/null +++ b/static/css/review_detail.css @@ -0,0 +1,96 @@ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +.box1 { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); /* 가운데 정렬을 위한 transform 설정 */ + width: 390px; + height: 654px; + flex-shrink: 0; + border-radius: 20px; + background: #ffffff; +} + +.box2 { + position: absolute; + top: 0px; + left: 0px; + width: 390px; + height: 390px; + border-radius: 20px 20px 0 0; + background: #d9d9d9; +} + +.XmarkImage { + padding: 16px 13.47px; +} + +.circleImage { + padding: 409px 0 0 29px; /*위, 오른쪽, 아래, 왼쪽*/ +} + +.box3 { + display: flex; + position: absolute; + top: 395px; + left: 80px; + height: 18px; + flex-shrink: 0; + color: #00664f; + font-family: Pretendard Variable; + font-size: 20px; + font-style: normal; + font-weight: 600; + line-height: 18px; +} + +.box4 { + position: absolute; + top: 425px; + padding: 12px 26px 89px 26px; + display: flex; + width: 335px; + height: 125px; + flex-direction: column; + justify-content: center; + flex-shrink: 0; + color: #000; + font-family: Pretendard Variable; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 24px; + text-align: center; +} + +.box5 { + position: absolute; + top: 585px; + width: 390px; + height: 1px; + background: #d9d9d9; +} + +.box6 { + display: flex; + flex-direction: column; + justify-content: center; + flex-shrink: 0; + position: absolute; + top: 590px; + left: 58px; + color: #b9b9b9; + width: 273px; + text-align: center; + font-family: Pretendard Variable; + font-size: 18px; + font-style: normal; + font-weight: 600; + line-height: normal; +} diff --git a/static/css/reviews_list.css b/static/css/reviews_list.css new file mode 100644 index 0000000..e69de29 diff --git a/static/css/signup1.css b/static/css/signup1.css new file mode 100644 index 0000000..4e99246 --- /dev/null +++ b/static/css/signup1.css @@ -0,0 +1,222 @@ +@font-face { + font-family: "Pretendard-Regular"; + font-weight: 400; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Medium"; + font-weight: 500; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Bold"; + font-weight: 700; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.ttf") + format("truetype"); + font-display: swap; +} + +* { + padding: 0; + margin: 0; + border: none; +} + +#ximg { + margin-left: 16px; + margin-top: 13px; +} + +.textinfo { + margin-left: 121.5px; + margin-top: -9.77px; + width: 146px; + height: 64px; + padding: 10px; + text-align: center; + font-size: 16px; +} + +.text1 { + font-family: "Pretendard-Regular"; +} + +.text2 { + font-family: "Pretendard-Bold"; +} + +#login { + margin-left: 29px; + margin-top: 138px; + width: 62px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Medium"; + color: #b9b9b9; + text-decoration: none; + text-align: center; +} + +#signup { + margin-top: 138px; + width: 76px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Bold"; + color: #000; + text-decoration: none; + text-align: center; + border-bottom-style: solid; + border-bottom-width: 1.5px; + border-bottom-color: #5bab93; +} + +#signup1-form > label { + margin-left: 28px; + height: 38px; + padding: 10px; + text-align: center; + font-size: 15px; + font-family: "Pretendard-Regular"; +} + +#signup1-form > div > label { + margin-left: 28px; + margin-top: 10px; + width: 59px; + height: 38px; + padding: 0px; + text-align: left; + font-size: 15px; + font-family: "Pretendard-Regular"; + display: flex; + align-items: center; + justify-content: center; +} + +#signup1-form > input { + height: 38px; + margin-top: 6.5px; + padding: 10px; + font-size: 15px; + font-family: "Pretendard-Regular"; + color: #d9d9d9; + background-color: #fff; +} + +#signup1-form > input[name="name"] { + width: 130px; + margin-left: 53px; + margin-top: 30px; +} + +#signup1-form > div > input { + margin-left: 44px; + margin-top: 0px; + width: 114px; + height: 38px; + padding: 10px; + text-align: left; + font-size: 15px; + font-family: "Pretendard-Regular"; +} + +#signup1-form > input[name="phone"] { + width: 190px; + margin-left: 26px; + margin-top: 7.5px; +} + +#signup1-form > input[name="id"] { + width: 107px; + margin-left: 39px; + margin-top: 7.5px; +} + +#signup1-form > input[name="password1"] { + width: 116px; + margin-left: 26px; + margin-top: 7.5px; +} + +#signup1-form > input[name="password2"] { + width: 156px; + margin-left: -4px; + margin-top: 7.5px; +} + +.emailrow { + display: flex; + flex-direction: row; +} + +#ewhain { + display: flex; + align-items: center; + justify-content: center; +} + +hr { + width: 332px; + height: 1.5px; + margin-left: 28px; + background-color: #5bab93; + border: 0; +} + +.stepcircle { + display: flex; + flex-direction: row; + margin-top: 16.5px; +} + +#circle1 { + margin-left: 178px; +} + +#circle2 { + margin-left: 9px; +} + +#signup1-form > input[type="submit"] { + width: 332px; + height: 43px; + margin-left: 28px; + margin-top: 42px; + border-radius: 10px; + padding: 10px; + background-color: #5bab93; + color: #fff; + font-size: 16px; + font-family: "Pretendard-Regular"; +} diff --git a/static/css/signup2.css b/static/css/signup2.css new file mode 100644 index 0000000..fbeef7b --- /dev/null +++ b/static/css/signup2.css @@ -0,0 +1,227 @@ +@font-face { + font-family: "Pretendard-Regular"; + font-weight: 400; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Medium"; + font-weight: 500; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Medium.ttf") + format("truetype"); + font-display: swap; +} +@font-face { + font-family: "Pretendard-Bold"; + font-weight: 700; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.ttf") + format("truetype"); + font-display: swap; +} + +* { + padding: 0; + margin: 0; + border: none; +} + +#ximg { + margin-left: 16px; + margin-top: 13px; +} + +.textinfo { + margin-left: 121.5px; + margin-top: -9.77px; + width: 146px; + height: 64px; + padding: 10px; + text-align: center; + font-size: 16px; +} + +.text1 { + font-family: "Pretendard-Regular"; +} + +.text2 { + font-family: "Pretendard-Bold"; +} + +#login { + margin-left: 29px; + margin-top: 138px; + width: 62px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Medium"; + color: #b9b9b9; + text-decoration: none; + text-align: center; +} + +#signup { + margin-top: 138px; + width: 76px; + height: 39px; + padding: 10px; + font-size: 16px; + font-family: "Pretendard-Bold"; + color: #000; + text-decoration: none; + text-align: center; + border-bottom-style: solid; + border-bottom-width: 1.5px; + border-bottom-color: #5bab93; +} + +#signup2-form > label { + margin-left: 28px; + height: 38px; + padding: 10px; + text-align: center; + font-size: 15px; + font-family: "Pretendard-Regular"; +} + +#signup2-form > div > label { + margin-left: 28px; + margin-top: 10px; + width: 59px; + height: 38px; + padding: 0px; + text-align: left; + font-size: 15px; + font-family: "Pretendard-Regular"; + display: flex; + align-items: center; + justify-content: center; +} + +#signup2-form > input { + height: 38px; + margin-top: 6.5px; + padding: 10px; + font-size: 15px; + font-family: "Pretendard-Regular"; + color: #d9d9d9; + background-color: #fff; +} + +#signup2-form > input[name="nickname"] { + width: 157px; + margin-left: 40px; + margin-top: 30px; +} + +hr { + width: 332px; + height: 1.5px; + margin-left: 28px; + background-color: #5bab93; + border: 0; +} + +.upload { + display: flex; + flex-direction: row; + margin-top: 6.5px; +} + +input[type="file"] { + display: none; +} + +#signup2-form > div > div > p { + margin-left: 28px; + margin-top: 10px; + width: 59px; + height: 38px; + padding: 0px; + text-align: left; + font-size: 15px; + font-family: "Pretendard-Regular"; + display: flex; + align-items: center; + justify-content: center; +} + +.custom-img-input::after { + margin-left: 50px; + margin-top: 6.5px; + content: "사진 불러오기"; + display: inline-block; + width: 109px; + height: 26px; + border-radius: 20px; + padding: 10px; + cursor: pointer; + padding: 10px; + font-size: 13px; + font-family: "Pretendard-Regular"; + display: flex; + align-items: center; + justify-content: center; + border-style: solid; + border-width: 1px; + border-color: #d9d9d9; +} + +#info { + font-size: 12px; + font-family: "Pretendard-Regular"; + margin-left: 137px; +} + +.stepcircle { + display: flex; + flex-direction: row; + margin-top: 177px; +} + +#circle1 { + margin-left: 178px; +} + +#circle2 { + margin-left: 9px; +} + +#signup2-form > input[type="submit"] { + width: 332px; + height: 43px; + margin-left: 28px; + margin-top: 42px; + border-radius: 10px; + padding: 10px; + background-color: #5bab93; + color: #fff; + font-size: 16px; + font-family: "Pretendard-Regular"; +} diff --git a/static/css/signup3.css b/static/css/signup3.css new file mode 100644 index 0000000..c3f3ebf --- /dev/null +++ b/static/css/signup3.css @@ -0,0 +1,61 @@ +@font-face { + font-family: "Pretendard-Regular"; + font-weight: 400; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Regular.ttf") + format("truetype"); + font-display: swap; +} + +@font-face { + font-family: "Pretendard-Bold"; + font-weight: 700; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot"); + src: url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/pretendard/Pretendard-Bold.ttf") + format("truetype"); + font-display: swap; +} + +.text1 { + margin-left: 134.5px; + margin-top: 242px; + width: 146px; + height: 64px; + padding: 10px; + text-align: center; + font-size: 16px; + font-family: "Pretendard-Bold"; +} + +.text1-2 { + margin-top: 6px; +} + +.text2 { + margin-left: 82px; + margin-top: 49px; + width: 266px; + height: 64px; + padding: 10px; + text-align: center; + font-size: 16px; + font-family: "Pretendard-Regular"; +} + +.text2-2 { + margin-top: 6px; +} diff --git a/static/css/wish_list.css b/static/css/wish_list.css new file mode 100644 index 0000000..dc08b4b --- /dev/null +++ b/static/css/wish_list.css @@ -0,0 +1,422 @@ +.header { + margin: 0px; + width: 100%; + height: 553px; + background: rgba(255, 252, 240, 1); +} + +body { + width: 100vw; + margin: 0; + background: white; +} + +.text-box1, +.text-box2 { + top: 634px; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #5bab93 solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} + +.text-box1 { + margin-left: 150px; +} + +.text-box2 { + margin-left: 250px; +} + +.text1-1, +.text2-1 { + color: #5bab93; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.footer { + margin: 0px; + width: 100%; + top: 2875px; + height: 340px; + background: white; + position: absolute; +} + +.card-line1, +.card-line2, +.card-line3, +.card-line4 { + position: absolute; + display: flex; + flex-direction: row; +} + +.card-line1 { + top: 706px; +} + +.card-line2 { + top: 1180px; +} + +.card-line3 { + top: 1660px; +} + +.card-line4 { + top: 160px; +} + +.card-container1, +.card-container2, +.card-container3, +.card-container4 { + width: 100%; + height: 100%; + align-items: center; + display: flex; + flex-direction: row; + gap: 30px; + margin-left: 150px; + position: realtive; +} + +.container { + display: flex; + position: relative; + width: 270px; + height: 432.02px; +} + +.inner-box1 { + width: 268px; + height: 140px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.inner-box2 { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.inner-textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} + +.category { + padding-bottom: 5px; +} + +.category-label { + color: #46a1bb; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} + +.store { + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; +} + +.product-name { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; + text-align: left; + padding-bottom: 5px; +} + +.price { + color: #b9b9b9; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 400; + word-wrap: break-word; + text-align: left; +} + +.progress { + text-align: left; + padding-left: 20px; + padding-right: 20px; +} + +.progress-text { + padding-bottom: 4px; +} + +.dday { + width: 44px; + height: 18px; + position: absolute; + text-align: center; + color: #e27a6c; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.discount { + width: 33.96px; + height: 18.36px; + position: absolute; + text-align: right; + right: 20px; + color: #00664f; + font-size: 14px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.progress-bar-bg { + width: 228px; + height: 12px; + position: absolute; + background: #d9d9d9; + border-radius: 5.97px; + overflow: hidden; + /* 클리핑 추가 */ +} + +.progress-bar { + height: 100%; + /* 높이 100%로 설정 */ + position: relative; + background: #00664f; + border-radius: 5.97px; + transition: width 0.5s ease; + /* 움직임 효과 추가 */ +} + +.heart { + position: absolute; + right: 0; + bottom: 0; + margin: 10px; +} + +.review-box { + margin: 0px; + width: 100%; + top: 2232px; + height: 646px; + background: rgb(255, 252, 240, 1); + position: absolute; +} + +.review-page-go { + top: 110px; + left: 50%; + transform: translateX(-55%); + justify-content: center; + align-items: center; + position: absolute; + white-space: nowrap; + font-family: Pretendard Variable; + font-weight: 500; +} + +.text-box4 { + left: 50%; + top: 50px; + transform: translateX(-55%); + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + background: white; + border-radius: 20px; + border: 1px #e27a6c solid; + justify-content: center; + align-items: center; + gap: 10px; + display: inline-flex; + position: absolute; + white-space: nowrap; +} + +.text4-1 { + color: black; + font-size: 16px; + font-family: Pretendard Variable; + font-weight: 600; + word-wrap: break-word; +} + +.UIcard { + margin-top: 60px; + position: relative; + width: 270px; + height: 388.98px; + padding: 0; + margin: 0; +} + +.card.bottom { + width: 268px; + height: 145.98px; + left: 0.16px; + top: 268px; + padding-top: 10px; + padding-bottom: 10px; + position: absolute; + background: white; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +#name { + color: #00664f; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400px; + line-height: 18px; + flex-shrink: 0; +} + +.card.top { + width: 268.02px; + height: 268.02px; + left: 0px; + top: 0px; + position: absolute; + background: #d9d9d9; + border-top-left-radius: 20px; + border-top-right-radius: 20px; + border: 1px #d9d9d9 solid; +} + +.card.textbox { + text-align: left; + padding-top: 8px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; +} + +.review.contents { + color: #000; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 18px; + margin-top: 9px; +} + +.line { + width: 268px; + height: 1px; + background-color: #d9d9d9; + padding: 0; + margin: 0; +} + +.product.name { + color: #b9b9b9; + text-align: center; + font-family: Pretendard Variable; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + margin-top: 13px; +} + +.pagebox { + top: 2130px; + position: absolute; + left: 50%; + transform: translateX(-55%); +} + +.page { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: center; + gap: 35px; + display: inline-flex; +} + +.page-now { + padding: 10px; + background: #5bab93; + border-radius: 10px; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; +} + +.number-now { + text-align: center; + color: #fffcf0; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} + +.page-text { + text-align: center; + color: #b9b9b9; + font-size: 14.33px; + font-family: Pretendard Variable; + font-weight: 700; + word-wrap: break-word; +} diff --git a/static/icon/Heart.svg b/static/icon/Heart.svg new file mode 100644 index 0000000..4540b6e --- /dev/null +++ b/static/icon/Heart.svg @@ -0,0 +1,3 @@ + diff --git a/static/img/Ellipse 2.png b/static/img/Ellipse 2.png new file mode 100644 index 0000000..653104b Binary files /dev/null and b/static/img/Ellipse 2.png differ diff --git a/static/img/Ellipse 5.png b/static/img/Ellipse 5.png new file mode 100644 index 0000000..5ce60dd Binary files /dev/null and b/static/img/Ellipse 5.png differ diff --git a/static/img/Group 45.png b/static/img/Group 45.png new file mode 100644 index 0000000..feb7c63 Binary files /dev/null and b/static/img/Group 45.png differ diff --git a/static/img/Group.png b/static/img/Group.png new file mode 100644 index 0000000..91ac5cb Binary files /dev/null and b/static/img/Group.png differ diff --git a/static/img/Settings Gear.png b/static/img/Settings Gear.png new file mode 100644 index 0000000..313a2d6 Binary files /dev/null and b/static/img/Settings Gear.png differ diff --git a/static/img/Xmark.png b/static/img/Xmark.png new file mode 100644 index 0000000..228c9cc Binary files /dev/null and b/static/img/Xmark.png differ diff --git a/static/img/circle.png b/static/img/circle.png new file mode 100644 index 0000000..566a8fd Binary files /dev/null and b/static/img/circle.png differ diff --git a/static/js/index.js b/static/js/index.js new file mode 100644 index 0000000..1c28af6 --- /dev/null +++ b/static/js/index.js @@ -0,0 +1,2 @@ +/* 이 파일은 예시고, 아마 페이지별로 필요한 기능 정리해서 js 코드 파일을 만들면 좋을 것 같다. + 비슷한 기능이 있다면 굳이 파일 새로 안 만들고 기능 재활용 해도 좋음*/ diff --git a/static/js/product_add.js b/static/js/product_add.js new file mode 100644 index 0000000..e69de29 diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..782a43c --- /dev/null +++ b/templates/index.html @@ -0,0 +1,817 @@ + + +
+ + + + + + + +냥냥이 님의 공동 구매 프로젝트는
+실용적이에요
+친절해요
+계획에 맞게 진행되었어요
+의미 있어요
+퀄리티가 좋아요
+