Function | Method | Response |
---|---|---|
가입신청(등록) | POST | 가입 데이터 |
가입신청(선택삭제) | POST | 가입 데이터 |
조회 | GET | 리스트 |
이름 | 직책 | 역할 | 업무 |
---|---|---|---|
박경진 | 팀장 | 프론트엔드 | 메인페이지, 팀 소개 페이지 제작 |
유희선 | 팀원 | 프론트엔드 | 팀원 소개 페이지 제작 |
정지우 | 팀원 | 프론트엔드 | 팀원 소개 페이지 제작, 방명록 페이지 제작 |
김재광 | 팀원 | 백엔드 | 각 페이지 DB 백엔드 구성 (GET) |
이희찬 | 팀원 | 백엔드 | 각 페이지 DB 백엔드 구성 (POST) |
기능 | Method | URL | request | response |
---|---|---|---|---|
팀 소개페이지 유튜브 영상 재생 | GET | https://developers.google.com/youtube/iframe_api_reference?hl=ko | 영상 자동재생, 반복재생 | autoplay: true, loop: true |
메인페이지 | GET | /index | ||
길드페이지 | GET | /intro | 길드 소개페이지 연결 | 뒤집어진 카드를 클릭하여 이동 |
길드 소개페이지 | GET | /intro_guild | 길드원 소개페이지 연결 | 큐브 마지막 슬라이드를 클릭하여 이동 |
길드원 소개페이지 | GET | /member | 길드원 개인 소개페이지 연결 | 뒤집어진 카드에 있는 'CLICK'을 클릭하여 이동 |
길드원 개인 소개페이지 | GET | /member-'initial' | 개인 블로그 연결 | 하이퍼 링크 연결 |
길드원 개인 소개페이지 방명록 조회 | GET | /guest'1~5' | get: {guest_'initial_get, guest_comment} | 방명록 리스트 |
길드원 개인 소개페이지 방명록 작성 | POST | /guest'1~5' | post: {guest_'initial_get, guest_comment} | 각 페이지 방명록 입력 |
길드원 개인 소개페이지 방명록 삭제 | DELETE | /guest'1~5' | delete: {guest_'initial_get, guest_comment} | 방명록 선택 삭제 |
가입 신청 페이지 조회 | GET | /submit | ||
가입 신청 조회 | GET | /submits | get: {sumit_name, sumit_job, sumit_cmt} | 신청 리스트 |
가입 신청 작성 | POST | /submits | post: {sumit_name, sumit_job, sumit_cmt} | 닉네임, 한 줄 소개 입력 |
가입 신청 삭제 | POST | /delete-submits | post: {sumit_name, sumit_job, sumit_cmt} | 신청서 선택 삭제 |
app.py
./templates
-> .html
./static
-> .css
-> .js
./static/img
-> .jpg
-> .jepg
-> .png
(1) 메인 페이지
- index.html
- main.css
- main.js
(2) 길드 소개 메인페이지
- intro.html
- intro.css
- intro.css
(2-1) 길드 설명 페이지
- introguild.html
- introguild.css
- introguild.js
(3) 길드원 소개 메인페이지
- member.html
- member.css
- member.js
(3-1) 길드원 개인 소개 페이지
- member_kj.html
- member_jg.html
- member_hs.html
- member_hc.html
- member_jw.html
-> CSS, JS는 html 내부 제작
(4) 가입 신청 페이지
- submit.html
- submit.css
- submit.js
1. 길드원 개인소개 페이지
(1) 이름
-> guest_kj // 경진
-> guest_jg // 재광
-> guest_hs // 희선
-> guest_hc // 희찬
-> guest_jw // 지우
통합 -> guest
(2) 코멘트
-> cmt_kj // 경진
-> cmt_jg // 재광
-> cmt_hs // 희선
-> cmt_hc // 희찬
-> cmt_jw // 지우
통합 -> cmt
2. 가입 신청 페이지
(1) 이름
-> nickname
(2) 한 줄 소개 (코멘트)
-> comment
(3) 직업 선택
-> job
1. 오브젝트 위치 조정 (희선)
-> 해결 방법 : 오브젝트 위치 설정을 고정 값으로 변경하여 배치.
2. GET을 통한 리스트 불러오기 (희찬)
-> 해결 방법 : 로직을 정확히 파악하지 못해 발생한 일이었으며 코드를 다시 분석해 올바은 위치에 배치.
3. 유튜브 영상 시작 제목 제거 (경진)
-> 해결 방법 : 유튜브에서 항목과 관련된 코드를 없애 영상의 제목을 지우는 것이 불가능함.
4. 파일을 통합하고 최종 점검을 할 때 한 곳에서 방명록을 남기면 모두의 방명록에 남겨지는 오류 발생 (지우)
-> 해결 방법 : 파일 경로 점검을 통해 경로를 올바르게 지정하여 해결
5. 변수명을 초기에 지정하지 않고 따로 작업 후 통합하는 과정에서 타인이 작성한 코드를 이해하는데 시간과 에너지를 많이 소요 (재광)
-> 해결 방법 : 프로젝트 시작 때 함수 명과 변수 명을 초기에 논의 하기로 함. (협업시 코딩 컨벤션의 중요성을 느낌)
1. 팀의 특징
- 맡은 일에 진심이며, 피드백에 두려움이 없다.
- 내향형끼리 모였지만 모두가 협엽을 잘 한다.
2. 팀의 목표
- 주어진 코드의 의미를 알고 사용하자!
- 1인분 하는 개발자가 되자!
3. 팀의 약속
- 기본에 충실하자!
- 일일 마무리는 오전 2시까지
- 모르는 것은 주저말고 질문하기
- 모든 질문에 귀찮아 하지 않기
- 확실하게 알 수 있도록 공부하기
링크 : 개발구조 웹페이지
개발의 시작을 알리는 9조 조원들을 설명하여 알리고자 하는 목표를 담았습니다.
길드 소개 클릭 시, 나오는 카드와 영상 중 카드 클릭 시, 큐브 안에 5계명, 특징, 목표가 적혀있음.
핵심 기능을 위와 같이 설정한 이유는 많은 공간을 차지하여 가독성이 떨어질 수 있는 부분을 한 화면에 묶어 가독성, 디자인 요소를 잡을 수 있었기 때문.
{HTML, CSS만으로 카드를 만들고 뒤집을 수 있는 방법이 있다는 것이 신기했습니다.}
{HTML - 카드 요소 만들기}
<div class="medal">
<div class="front">
<img src="../static/img/introduce2.png" alt="로고 프론트" />
</div>
<div class="back">
<a href="./intro_guild">
<img src="../static/img/introduce.png" alt="로고 백" />
</a>
</div>
</div>
{CSS - 카드 뒤집기 효과 만들기}
.medal {
perspective: 1000px; // 뒤집는 과정에서 입체감이 보이는 효과. 1000px 만큼
}
.medal .front,
.medal .back {
position: absolute; // 부모요소 기준으로 자식 요소 배치 -> 부모요소 body // 이미지 중첩효과
backface-visibility: hidden; // 중첩된 이미지 뒷면이 안보이게 배치
transition: 1s; // 자연스러운 전환효과 (1초)
}
.medal .front {
transform: rotateY(0deg); // 앞면을 0도로 배치하여 앞면만 보이게 하기
}
.medal:hover .front {
transform: rotateY(180deg); // 마우스를 가져다대면(hover) 180도로 뒤집음
}
.medal .back {
transform: rotateY(-180deg); // 마우스를 떼면 뒷면으로 엎어져 있음
}
.medal:hover .back {
transform: rotateY(0deg); // 마우스를 가져다다면(hover) 뒷면이 보임
}
{삭제기능이 post가 아닌 delete 도 가능하다는게 마음에 드는데 기능은 post와 같지만 코드 구별이 쉬운 것같아 마음에 듭니당}
@app.route("/guest5", methods=["DELETE"])
def guest_hs_delete():
num_receive = request.form['num_give']
db.member_hs.delete_one({'num': int(num_receive)})
return jsonify({'msg': '방명록 삭제하기 완료!'})
{제가 만든페이지 전체가 다 맘에 들지만 그 중에서도 개인페이지의 방명록 부분이 부트스트랩으로 구성하지 않고 제가 직접 html과 css를 만들었기 떄문에 제일 마음에 듭니다!}
<div id="message-box" style="overflow-y:scroll; overflow-x: hidden; height:630px;">
<div id="mypost">
<div id="container"><h1 class="style-3">visitor</h1></div>
<div id="post_nick">
<input type="text" id="name" placeholder="닉네임">
</div>
<div id="post_cmt">
<textarea placeholder="응원댓글" id="comment"></textarea>
</div>
<div id="post_button" style="">
<button onclick="save_comment()" type="button">응원 남기기</button>
</div>
</div>
<div class="mycards" id="comment-list">
</div>
</div>
{저는 class와 id를 같이 쓸 수 있다는 사실을 처음 알게 해준 코드라서 마음에 듭니다.}
<style>#btnSubmit { margin: auto; display: block;}</style>
<div><button type="button" class="btn btn-dark btn-lg" id="btnSubmit" onclick="location.href=''link"> CLICK </button></div>
{게시글을 작성할 때마다 삭제 버튼이 함께 달리고, 삭제기능이 작동할 수 있도록 구현할 수 있어서 기뻤습니다.}
{#게시글을 작성할 때마다 삭제버튼이 함께 달리도록 구현함 #}
function show_submit_list() {
$.ajax({
type: 'GET',
url: '/submits',
data: {},
success: function (response) {
let rows = response['submits']
for (let i = 0; i < rows.length; i ++){
let num = rows[i]['num']
let submit_name = rows[i]['submit_name']
let job = rows[i]['job']
let submit_cmt = rows[i]['submit_cmt']
let temp_html = `<tr id="www">
<td>${submit_name}</td>
<td>${job}</td>
<td>${submit_cmt}</td>
<td><button id="right" onclick="delete_submit(${num})" type="button" class="btn btn-dark">삭제</button></td>
</tr>`
{#등록된 게시글별로 개별 삭제기능 버튼 추가됨#}
$('#submit-box').append(temp_html)
}
}
});
좋은 결과물을 서로 협업하여 만들기 위해 의견을 제시하다보니,혼자서 생각할 수 없었던 부분을 생각하기도 하고 어려움이 발생할 경우, 같이 의논하여 해결해 나갈 수 있다는 점이 좋았습니다.
나 혼자가 아닌 함께 이겨낼 수 있는 팀원 분들이 옆에 계셔서 행복했습니다.
Restful 작성 방식
벨로그/티스토리
백엔드 방명록:
가입신청 페이지,
각 페이지 알림창 (alert을 모달창으로???)