지오님이 데이터 넘겨받는 걸 어려워 하셔서 찬희님이 도와주셔서 다행히 데이터 넘겨받는 것까지는 성공하셨다고 함 그래서 그 외에 이미지 관련 노션에 적어서 업로드 함
package com.in4mation.festibook.dto.main;
import lombok.*;
import java.util.Date;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class FestivalDTO {
private int festival_no;
private String festival_category;
private String festival_name;
private String festival_contents;
private String festival_local;
private String festival_addr;
private String festival_zipcode;
private Date start_date;
private Date end_date;
private String festival_phone;
private String festival_homepage;
private String festival_office;
private double x;
private double y;
private String festival_image;
private int festival_view;
}
package com.in4mation.festibook.repository.main;
import com.in4mation.festibook.dto.main.FestivalDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface FestivalImageMapper {
List<FestivalDTO> getTop5FestivalsByViews();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.in4mation.festibook.repository.main.FestivalImageMapper">
<select id="getTop5FestivalsByViews" resultType="com.in4mation.festibook.dto.main.FestivalDTO">
SELECT festival_no, festival_name, festival_category, festival_image FROM Festival_table ORDER BY festival_view DESC LIMIT 5
</select>
</mapper>
package com.in4mation.festibook.service.main;
import com.in4mation.festibook.dto.main.FestivalDTO;
import java.util.List;
public interface FestivalImageService {
List<FestivalDTO> getTop5FestivalsByViews();
}
package com.in4mation.festibook.service.main;
import com.in4mation.festibook.dto.main.FestivalDTO;
import com.in4mation.festibook.repository.main.FestivalImageMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class FestivalImageServiceImpl implements FestivalImageService{
@Autowired
private FestivalImageMapper festivalImageMapper;
@Override
public List<FestivalDTO> getTop5FestivalsByViews() {
return festivalImageMapper.getTop5FestivalsByViews();
}
}
package com.in4mation.festibook.controller.main;
import com.in4mation.festibook.dto.main.FestivalDTO;
import com.in4mation.festibook.service.main.FestivalImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/festivals")
public class FestivalImageController {
@Autowired
private FestivalImageService festivalImageService;
@GetMapping("/top5")
public ResponseEntity<List<FestivalDTO>> getTop5FestivalsByViews() {
List<FestivalDTO> festivals = festivalImageService.getTop5FestivalsByViews();
return ResponseEntity.ok(festivals);
}
}
import React, { useEffect, useState } from "react";
import './Home.css';
import moon from '../img/main/moon.png'
import bg1 from '../img/main/bg1.png'
import bg2 from '../img/main/bg2.png'
import university_img from '../img/main/university_img.png'
import university1 from '../img/main/university1.png'
import university2 from '../img/main/university2.png'
import university3 from '../img/main/university3.png'
import famous from '../img/main/famous.png'
import cloud from '../img/main/cloud.png'
import lamp1 from '../img/main/lamp1.png'
import lamp2 from '../img/main/lamp2.png'
import lamp3 from '../img/main/lamp3.png'
import lamp4 from '../img/main/lamp4.png'
import lamp5 from '../img/main/lamp5.png'
import lamp6 from '../img/main/lamp1.png'
import lamp7 from '../img/main/lamp2.png'
import lamp8 from '../img/main/lamp3.png'
import footer_logo from '../img/login/Loginlogo.png'
import github from '../img/main/github.png'
import notion from '../img/main/Notion.png'
import 'aos/dist/aos.css';
**import axios from "axios";**
function Home() {
const [scrollY, setScrollY] = useState(0);
const [festivals, setFestivals] = useState([]);
const isMobile = window.innerWidth < 768;
useEffect(() => {
const handleScroll = () => {
setScrollY(window.scrollY);
};
window.addEventListener("scroll", handleScroll);
**let config = {
method: 'get',
maxBodyLength: Infinity,
url: 'http://localhost:8080/festivals/top5',
headers: {'Content-Type': 'application/json' }
};
axios.request(config)
.then((response) => {
console.log('festivals======>',JSON.stringify(response.data));
setFestivals(response.data);
})
.catch((error) => {
console.log(error);
});**
return () => {
window.removeEventListener("scroll", handleScroll);
};
}, []);
const lamps = [
{ img: lamp1, position: { top: '0%', left: '5%' } },
{ img: lamp2, position: { top: '0%', right: '15%' } },
{ img: lamp2, position: { top: '10%', right: '10%' } },
{ img: lamp3, position: { top: '20%', left: '15%' } },
{ img: lamp4, position: { top: '40%', right: '5%' } },
{ img: lamp5, position: { top: '50%', left: '20%' } },
{ img: lamp6, position: { top: '60%', right: '15%' } },
{ img: lamp7, position: { top: '70%', left: '10%' } },
{ img: lamp8, position: { top: '80%', right: '20%' } },
{ img: lamp1, position: { top: '15%', left: '30%' } },
{ img: lamp2, position: { top: '25%', right: '30%' } },
{ img: lamp3, position: { top: '35%', left: '20%' } },
{ img: lamp4, position: { top: '45%', right: '35%' } },
{ img: lamp5, position: { top: '55%', left: '30%' } },
{ img: lamp6, position: { top: '65%', right: '40%' } },
{ img: lamp7, position: { top: '80%', left: '5%' } },
{ img: lamp8, position: { top: '85%', right: '3%' } },
];
return (
<div className="section">
<div className="bgWrapper" style={{ '--scrollY': scrollY }} >
<img className="bg1" src={bg1} alt="bg2" style={{ top: `${scrollY * 0.5}px` }} />
<h3 className="mainText" style={{
top: `${scrollY * 1}px`,
marginRight: `${scrollY * 1.5}px`,
marginTop: `${300 + scrollY * 0.3}px`,
zIndex: 10
}}>기억하고 싶은 축제<br />Festibook과 함께 <br /> (스크롤을 내려주세요!)</h3>
{lamps.map((lamp, index) => (
<img
key={index}
className="lamp"
src={lamp.img}
alt={`Lamp ${index}`}
style={{
...lamp.position,
top: `calc(${lamp.position.top} + ${scrollY * 0.5}px)`,
animationDuration: `${2 + index % 2}s`,
}}
/>
))}
</div>
<div className="university_div">
<div className="university_text_div">
<img className="university_img" src={university_img} alt="university_img"/>
<span className="university_text"> 10월의 대학 축제</span>
</div>
<div className="university_ex">
<div className="university_festival">
<span className="university_name">조선대학교</span><br/>
<img className="university_img1" src={university1} alt="university1"/><br/>
<div>
<p className="element">
<span className="title"> 📍 일정 <br /> </span>
2023. 10. 04(수) - 2023. 10. 06(금) 18:00
<br /> <br />
<span className="title"> 📍 장소 <br /> </span>
광주광역시 동구 필문대로 309 조선대학교
<br /> <br />
<span className="title">📍 라인업 <br /> </span>
10월 4일(수) : 신스/마크툽 <br />
10월 5일(목) : 김나영/2F 신용재 X 김원주 <br />
10월 6일(금) : 프로미스나인 신용재 <br /><br />
<span className="title">📍 관련 인스타 그램 <br /> </span>
<a href="https://instagram.com/chosun_36th?igshid=MzRlODBiNWFlZA==" target="_blank" rel="noopener noreferrer">조선대학교 인스타 바로가기</a>
</p>
</div>
</div>
<div className="university_festival">
<span className="university_name">호남대학교</span><br/>
<img className="university_img2" src={university2} alt="university2"/><br/>
<div>
<p className="element">
<span className="title"> 📍 일정 <br /> </span>
2023. 10. 10(화) - 2023. 10. 12(목)
<br /> <br />
<span className="title"> 📍 장소 <br /> </span>
광주광역시 광산구 호남대길 120 호남대학교
<br /> <br />
<span className="title">📍 라인업 <br /> </span>
10월 10일(화) : 전상근 <br />
10월 11일(수) : 비와이 <br />
10월 12일(목) : 최예나 <br /><br />
<span className="title">📍 관련 인스타 그램 <br /> </span>
<a href="https://instagram.com/honam_neul_37th?igshid=MzRlODBiNWFlZA==" target="_blank" rel="noopener noreferrer">호남대학교 인스타 바로가기</a>
</p>
</div>
</div>
<div className="university_festival">
<span className="university_name">광주대학교</span><br/>
<img className="university_img3" src={university3} alt="university3"/><br/>
<div>
<p className="element">
<span className="title"> 📍 일정 <br /> </span>
2023. 10. 11(수) - 2023. 10. 12(목)
<br /> <br />
<span className="title"> 📍 장소 <br /> </span>
광주광역시 남구 효덕로 277 광주대학교
<br /> <br />
<span className="title">📍 라인업 <br /> </span>
10월 11일(수) : 하하&스컬 <br />
10월 12일(목) : 청하, 케이시 <br /><br />
<span className="title">📍 관련 인스타 그램 <br /> </span>
<a href="https://instagram.com/honam_neul_37th?igshid=MzRlODBiNWFlZA==" target="_blank" rel="noopener noreferrer">광주대학교 인스타 바로가기</a>
</p>
</div>
</div>
</div>
</div>
<div className="famous_div">
<div className="famous_text_div">
<img className="famous_img" src={famous} alt="famous_img"/>
<span className="famous_text"> 사람들이 가장 많이 눌러본 인기 축제 </span>
</div>
</div>
**<div id="contentContainer" className="contentContainer">
<div>
{festivals.map((festival, index) => (
<div key={festival.festival_no}>
<h2>Top {index + 1}: {festival.festival_name}</h2>
<img src={process.env.PUBLIC_URL + festival.festival_image} alt={festival.festivalName} />
<p> {festival.festival_category}</p>
</div>
))}
</div>
</div>**
<div className="footer">
<div className="footer-logo">
<img className="footer_logo" src={footer_logo} alt="footer_logo" />
</div>
<div className="footer-links">
<div className="info-links">
<a href="/team-introduction">조원 소개</a>
<a href="https://incredible-gem-98e.notion.site/in4mation-festibook-844ae8d62e784c8d82f374a03277f523?pvs=4">사이트 소개</a>
</div>
<div className="social-links">
<span>Link: </span>
<div className="icons">
<a href="https://github.com/GoldenPearls/festibook"><img className="github" src={github} alt="github" /></a>
<a href="https://incredible-gem-98e.notion.site/in4mation-festibook-844ae8d62e784c8d82f374a03277f523?pvs=4"><img className="notion" src={notion} alt="notion" /></a>
</div>
</div>
</div>
<div className="footer-copyright">
© 2023, Festibook의 In4mation. 모든 권리 보유.
</div>
</div>
</div>
);
}
export default Home;
화요일 새벽에 만나서 같이 합쳤다 다행히도 문제 없이 찰떡같이 붙음 ㅠㅠㅠㅠㅠ 헝헝 다행이다....
일단 성공적으로 합쳐졌고 10/18까지 한 것 = 이후 수정 사항은 금요일에 다시 합치는 걸로
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=44e85932510e66adc4073ed0e3aa2f6a&libraries=services,clusterer"></script>
이부분의
appkey=44e8
를 자기키로 바꾸기
누른 후 아래 사진의 키 값을 위 appkey= 다음에 javascript
키를 붙여주면 된다.
그 후 사이트 등록 해줘야 함
PPT
자신의 파트 혹은 전체 추가해야 할 부분 추가(토요일 발표 전에 어느정도는 PPT 완성 필요)ERD
수정 완료 필요WBS
수정 해주세요!토요일 멘토링 때 발표를 위한 논의 ppt는 미리캠퍼스를 통해 협업해서 작업
🍌 1. 나머지 파트들 오늘 내일 논의해서 파트 분배해서 토요일 발표 전까지 대충 피드백 받을 수 있을 정도로만 작업 후 이후 추가하면 됩니다!
2. 이후 들어갔으면 좋겠다가 있으면 밑에 추가해서금요일 오전 전
까지 작성 해주시면 됩니다!
3. 추가 사항이 있을 수 있으니금요일 오후
에 노션 한번씩 더 확인해주세요!
월요일
까지고 화요일 이후는 수정 사항이 있으면 안될 것 같다.<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/static/js/board/boardDetail.js"></script>
<script src="/static/js/board/scripts.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<link href="/static/css/board/de/stylesFestival.css" rel="stylesheet" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">Festibook</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/recommend">추천할수박에</a></li>
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/festival">축제/행사 소개</a></li>
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/community">너와 나의 연결 고리</a></li>
<li id="loginStatusNavItem" class="nav-item"></li>
</ul>
</div>
</div>
</nav>
<a class="navbar-brand" href="/">Festibook</a> //이미지
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Festivals</title>
<style>
/* 검색 폼 스타일 */
form {
max-width: 600px; /* 폼의 최대 너비를 조정하세요 */
margin: 0 auto; /* 가운데 정렬을 위한 마진 설정 */
display: flex; /* 요소들을 가로로 나열하기 위해 Flexbox를 사용합니다 */
}
input[type="text"] {
width: 100%; /* 입력 필드의 너비를 100%로 설정하여 폼의 가로 크기에 맞춥니다 */
padding: 10px; /* 패딩 값 조정 */
font-size: 16px; /* 폰트 크기 조정 */
flex-grow: 1; /* 입력 필드가 가능한 한 확장되도록 설정합니다 */
}
button[type="submit"] {
padding: 10px 20px; /* 패딩 값 조정 */
font-size: 16px; /* 폰트 크기 조정 */
}
/* 버튼 스타일 */
.button-container {
text-align: center;
margin-top: 20px;
}
.button-container button {
padding: 20px 40px;
font-size: 18px;
background-color: #EC7373; /* 버튼 배경색 */
color: #fff; /* 버튼 텍스트 색상 */
border: none; /* 테두리 없앰 */
border-radius: 10px; /* 버튼 테두리 둥글게 만듦 */
cursor: pointer;
}
.button-container button:hover {
background-color: #0056b3; /* 마우스 오버시 배경색 변경 */
}
/* 이미지 그리드 스타일 */
.image-grid {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 1열에 3개의 열로 그리드 설정 */
gap: 10px; /* 이미지 간격을 10px로 조정 */
justify-content: center; /* 가로 중앙 정렬 */
align-items: center; /* 세로 중앙 정렬 */
height: 90vh; /* 뷰포트 높이의 80%만큼을 사용 */
position: relative; /* 상대 위치 설정 */
}
.image-grid img {
max-width: 100%;
height: auto;
border-radius: 10px;
display: block;
margin: 0 auto;
}
/* Festival 정보 스타일 */
.festival-info {
text-align: center;
margin-top: 10px;
}
/* 추가된 스타일: 이미지와 정보를 가로로 나열 */
.festival-item {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
/* 버튼 위치 설정 */
.button-container {
position: absolute;
top: 150px;
right: 200px;
}
/* 상단 이미지 스타일 */
.header-image {
max-width: 100%;
height: auto;
}
</style>
<link href="/static/css/board/de/stylesFestival.css" rel="stylesheet" />
</head>
<body>
**<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="logo" href="/"><img src="/static/nav/logo.png" alt="상단 이미지" class="header-image">
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/recommend">추천할수박에</a></li>
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/festival">축제/행사 소개</a></li>
<li class="nav-item"><a class="nav-link" href="http://localhost:8080/community">너와 나의 연결 고리</a></li>
<li id="loginStatusNavItem" class="nav-item"></li>
</ul>
</div>
</div>
</nav>**
<!-- 상단 JPG 이미지 띄우기 -->
<!-- 상단 JPG 이미지 띄우기 -->
<img src="/static/festival_search_img/header1.jpg" alt="상단 이미지" class="header-image" style="max-height: 300px; width: 100%;">
<h1></h1>
<!-- 검색 폼 추가 -->
<form th:action="@{/festival/search}" method="get" style="display: flex; align-items: center; margin-top: 30px;">
<input type="text" name="keyword" placeholder="축제명을 입력해주세요." style="flex-grow: 1; padding: 20px; font-size: 20px; border: 1px solid #ccc; border-radius: 10px; margin-right: 10px;">
<button type="submit" style="padding: 20px 20px; font-size: 20px; background-color: #EC7373; color: #fff; border: none; border-radius: 100%; cursor: pointer; writing-mode: horizontal-tb;">검색</button>
</form>
<!-- 버튼 이동 -->
<div class="button-container">
<button id="mapButton">위치로 보기</button>
<script>
document.getElementById("mapButton").addEventListener("click", function() {
window.location.href = "http://localhost:8080/festival/map";
});
</script>
<button id="calendarButton">날짜로 보기</button>
<script>
document.getElementById("calendarButton").addEventListener("click", function() {
window.location.href = "http://localhost:8080/calendar";
});
</script>
</div>
<!-- 이미지 그리드 추가 -->
<div class="image-grid">
<div th:each="festival : ${festivals}" class="festival-item">
<!--<img th:src="${festival.festival_image}" alt="Festival Image"/>-->
<img th:src="${festival.festival_image}"
alt="Festival Image"
th:onclick="'window.location.href=\'http://localhost:8080/festivalInfo/' + ${festival.festival_no} + '\''"
style="cursor: pointer;"/>
<div class="festival-info">
<!--<p th:text="${festival.festival_no}"></p>-->
<p th:text="${festival.festival_name}"></p>
<p th:text="${festival.festival_category}"></p>
</div>
</div>
</div>
**<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/static/js/board/boardDetail.js"></script>
<script src="/static/js/board/scripts.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>**
</body>
</html>
시연 동영상 시 각자 파트에 대한 설명이 필요하다 하셔서 작성하게 됨
아이디 찾기 : 아이디 찾기에는 이름과 이메일 주소가 필요하다.
회원가입에 저장 되어있는 이름과 이메일 주소를 정확히 입력하면 팝업창으로 아이디를 전달해준다
이름또는 이메일이 다르면 입력하신 이름과 이메일로 등록된 회원 정보를 찾을 수 없다
출력한다.
비밀번호찾기:
1.비밀번호를 찾기 위해 이메일 주소를 입력해야한다.
2.입력한 이메일로 코드를 전송한다.
3.입력된 이메일로 인증코드를 받는다.
4.이메일로 받은 인증 코드를 입력후 버튼을 눌렀을때 임시비밀번호를 준다.
이때 팝업창에는 임시비밀번호를 바로변경할지 비밀번호 변경으로 가는 팝업창을 띄운다
돌아가기를 누르면 변경을 하지 않고 돌아갈수있다.
만약 이메일입력때 회원가입을 하지 않은 이메일을 입력시 없는계정의 이메일입니다.
라고 메시지를남긴다
만약 인증코드를 틀리면 인증번호가 다르다고 메시지를 남긴다.
비밀번호 변경 :
비밀번호를 변경하기 위해서는 이메일 주소 현재 비밀번호, 새로운 비밀번호를 입력 해야 한다.
올바르게 다 입력했다면 비밀번호 변경이 완료되었다는 메시지 팝업 창을 띄운다.
3중에 하나라도 안쳤다면 입력 해 달라는 메시지를 준다.
현재 비밀번호와 새로운 비밀번호가 같으면 현재 비밀번호와 바꾸려는 비밀번호가 같다고 메시지를 남긴다.
회원 탈퇴
회원 탈퇴를 진행하려면 아이디,비밀번호가 필요하다.
입력 해야 하는 정보를 입력 했을 때 성공적으로 삭제되었다고 팝업 메시지가 뜬다.
아이디가 회원 가입 한 적 없는 아이디일 때 현재 가입된 계정이 없다고 메시지가 뜬다.
현재 패스워드가 일치하지 않아도 현재 비밀번호가 틀렸다고 메시지가 뜬다.
너와 나의 메인 페이지는 우선 CRUD기능을 가지고 있고 한 페이지에 10개씩 묶어서 가독성있게 볼 수 있게 페이징 기능을 사용했다
검색 기능도 있는데 검색기능에는 아이디로 검색 글제목으로 검색 2개를 합쳐놓는 전체검색이있다.
글쓰기에는 로그인 후 이용 할 수 있는데 제목,내용,글종류를 선택하여 작성을 하면 너와 나의 연결 고리 에 업로드 된다.
만약 글쓰기에 제목,내용,글 종류를 작성을 하나라도 안 할 시 입력 해 달라고 메시지를 준다.
글쓰기 누르기 전 로그인이 안 되어 있을 시에는 로그인이 필요하다고 메시지를 준다.
너와 나의 연결 고리에서 글의 제목을 눌렀을 때 나오는 상세 페이지이다.
글을 작성한 작성자가 아닐 때 수정하기와 삭제하기 기능이 안 보인다.
글을 작성한 작성자일 때 수정하기와 삭제하기가 보인다.
1.수정하기를 눌렀을 때 원래 작성 데이터를 가져온다.
제목,내용,글 종류를 수정 할 수 있다. 수정하기를 성공 했을 때 메시지로 수정을 성공 했다는걸 알려준다.
2.삭제하기를 눌렀을 때 정말 삭제를 할껀지 팝업 메시지로 한 번 더 물어본다.
삭제 합니다를 누르면 삭제했다는 메시지와 함께 글이 삭제되면서 너와나의 연결고리 페이지로 넘어간다. 만약 삭제 팝업 메시지에서 아니요를 누르면 삭제가 되지 않는다.
댓글 기능은 댓글을 작성하고 버튼을 누르면 댓글이 작성되며 아이디,작성일,내용이 저장된다. 만약 로그인을 안하고 댓글 작성을 시도 했을 때 로그인이 필요하다고 메시지를 남긴다.
아무것도 입력을 안하고 버튼을 눌렀을 시에 내용 입력이 필요하다고 오류 메시지를 남긴다.
관리자는 회원들의 작성글,댓글을 관리 할 수 있게
회원들의 게시물,댓글을 삭제 및 수정을 할 수 있다.
관리자는 회원들의 글 쓰기 기능에서 공지사항을 쓸 수 있게
관리자 아이디로 접속하면 글쓰기에 글 종류에서 공지사항이 추가된다.
관리자도 글 쓰기에서 아무것도 입력 안하고 댓글 작성을 시도 했을 시
내용 입력이 필요하다고 오류 메시지를 남긴다.
공통점: month, week, list에서 볼 때, 축제(이벤트)를 클릭 하면, 축제 상세보기 페이지로 넘어간다.
네비게이션 바에 이런식으로 설정된 이미지로 보인다.
주민화합, 지역 특산물
의 경우 두 개 밖에 없어서 시연할 때 다른 카테고리로 시연해서 보여주는 것을 추천다른 파트는 시연 하시는 분들 파트라 3명만 적었음
멘토링 발표날... 발표하는 당사자로 굉장히 떨렸고.. 일단 목이 너무 말랐다.. 발표 당일에는 물 무조건 한통 옆에 두고 해야 할듯
차별성
인데 너무 안보인 것 같다 말씀하셨다. ⇒ 해결책 : 아이폰 6, 7, 8로 하면 스마트폰 프레임이 씌워짐 이걸 이용해서 양쪽에서 같이 보여줄 수 있게 해주자고 말씀하셨다. 밑에 처럼 진행하면 될 듯?
⇒ 해결책 : 영상 찍을 때 최대한 맞춰서 오디오가 비지 않게 하기
admin 계정
으로 하자. ⇒ 이메일이랑 비번 바꿀 것⇒ 30분~35분 발표인데 50분 발표한 점 시연에서 늦어지는 헤매는 걸 빼고 필요없는 부분을 빼서 30분에 맞추자
⇒ 해결책 : 불꽃놀이 사진이라던지 하나씩 찾아서 맞추자
⇒ 그리고 따로 들어가셨을 때 해주신 말씀 : 사진 오른쪽 위에는 조 이름이나 festibook이 들어가면 좋겠다고 하셨다.
⇒ 해결책 : 카메라 위치 변동해볼게요!
차별화
된 하이브리드 적인 것, 축제/행사, 관리자 기능, 추천 등에 대해서 좀 더 강조해야 한다고 하셨다.다행히.. 어찌저찌 완성은 할 것 같다.. 조장 나가고 멘탈 나간 채로 조장이 됐는데 조원분들도 의견 잘 내주고 잘 따라와주고 버텨주셔서 감사한 마음이다.. 그리고 좀 친해진 느낌? 다른 조는 뭔가 친하다는 느낌이 안드는데 이 조는 계속 논의하고 협의하는 게 눈에 보인다고 강사님도 말씀하셨다.
멘토분도 충분히 2등은 할 수 있다며, 개인 사비로 매니저에게 영화티켓 전달해뒀다고 팀 사기 올려주고 피드백도 많이 주셨다. 우여곡절이 많았지만 끝이 보인다. 좀만 더 힘내자!!!!