당근마켓, 번개장터, 중고나라 등 중고거래 활성화가 많이 되어있다 특히나 당근마켓의 경우 자기 지역의 중심으로 직거래가 원활하게 이루어지고있다. 이런 흐름을 바탕으로 학교 내에서도 중고거래가 있을 경우, 학교에 등교하는 겸 물건을 사고팔고 할 수있다. 현재 에브리타임의 장터게시판이 있는데 이는 직관적으로 보기가 힘들고 물건이 다양하지 않음. 그래서 누군가는 상세하게 정보를 쓰는 반면 누군가는 대충올리고만다. 만약 이 사이트가 활성화 된다면 교내에서의 중고거래가 다양성도 올라가고 거래율도 상승할지도
1달정도 생각이 든다 메이트를 해보았을때 느낀바로는 그렇게 될거같다
Figma
피그마로 작업을 거의 완료하였다 세부적인 디자인 할 때 조금 시간이 걸릴수도
먼저, 필요한 DB는 유저, 물건 목록, 채팅(채팅을 어떻게 해야할지 생각)
User
Product
S-dot 네이밍
스타일 컴포넌트를 분리할때 S라는 이름으로 요약하여 구분해주는 방식이다.
스타일 파일을 분리해서 스타일들을 내보낼때 객체에 담아서 내보내고, 사용할 index파일에서 모든 요소들을 S라는 이름으로 묶어서 불러와 사용한다.
// MainPage/index.jsx
import * as S from ./styles.js;
const MainPage = () => {
return (
<S.MainPageLayout>
<S.Header>
<S.HeaderTitle>메인 페이지</HeaderTitle>
<S.HeaderNav>
<S.HeaderNavList>
// active속성을 props로 전달해서 css를 설정
<S.HeaderNavItem active>홈</S.HeaderNavItem>
<S.HeaderNavItem>메뉴1</S.HeaderNavItem>
<S.HeaderNavItem>메뉴2</S.HeaderNavItem>
</S.HeaderNavList>
</S.HeaderNav>
</S.Header>
<S.Content>
<SlideContent>
<ContentItem>1</S.ContentItem>
<ContentItem>2</S.ContentItem>
<ContentItem>3</S.ContentItem>
</SlideContent>
</S.Content>
<S.Footer>
하단 내용
</S.Footer>
</S.MainPageLayout>
)
}
// MainPage/styles.js
export const MainPageLayout = styled.div``;
export const Header = styled.header``;
export const HeaderTitle = styled.h1``;
export const HeaderNav = styled.nav``;
export const HeaderNavList = styled.ul``;
export const HeaderNavItem = styled.li`
color: ${({active}) => active ? 'blue' : '#fff'}
`;
export const Content = styled.nav``;
export const Footer = styled.footer``;
// components/SlideContent/index.jsx
export const ContentItem = ({children}) => {
return (
<ContentItemLayout>
{children}
</ContentItemLayout>
)
}
const SlideContent = (props) => {
const { children } = props;
return (
<SlideContentLayout>
{children}
</SlideContentLayout>
)
}
위와 같은 방식으로 코드를 작성하면 스타일 컴포넌트와 공통 컴포넌트의 분리가 용이해진다. 또한, MainPage의 코드를 봤을때 html의 구조를 파악하기 어려워지는 문제점은 네이밍 컨벤션을 이용해 해결할 수 있을 것 같다.
스타일 컴포넌트 네이밍 규칙을 정해서 각 태그에 맞는 컴포넌트 명을 사용한다면 html의 구조를 파악하는데 용이할 것이다.
최상위 컴포넌트 명
'컴포넌트명'Layout
각 태그들의 컴포넌트 명
div : '컴포넌트명'Box
section : '컴포넌트명'Section
ul : '컴포넌트명'List
li : '컴포넌트명'Item
p : '컴포넌트명'Paragraph
span : '컴포넌트명'Span
컴포넌트들을 묶어주는 컴포넌트 명
'컴포넌트명'Row/Col
커밋 및 브랜치 양식
커밋 메세지 구조
$ <type>(<scope>): <subject> -- 헤더
<BLANK LINE> -- 빈 줄
<body> -- 본문
<BLANK LINE> -- 빈 줄
<footer> -- 바닥 글
<type>은 해당 commit의 성격을 나타내며 아래 중 하나여야 합니다.
type | 내용 |
---|---|
feat | 새로운 기능에 대한 커밋 |
fix | build 빌드 관련 파일 수정에 대한 커밋 |
build | 빌드 관련 파일 수정에 대한 커밋 |
chore | 그 외 자잘한 수정에 대한 커밋(기타 변경) |
ci | CI 관련 설정 수정에 대한 커밋 |
docs | 문서 수정에 대한 커밋 |
style | 코드 스타일 혹은 포맷 등에 관한 커밋 |
refactor | 코드 리팩토링에 대한 커밋 |
test | 테스트 코드 수정에 대한 커밋 |
body 는 본문으로 헤더에서 생략한 상세한 내용을 작성합니다. 헤더로 충분한 표현이 가능하다면 생략이 가능합니다.
footer는 바닥글로 어떤 이슈에서 왔는지와 같은 참조 정보를 추가하는 용도로 사용합니다.
Feat: 관심지역 알림 ON/OFF 기능 추가
시군구의 알림을 각각 ON/OFF 할 수 있도록 기능을 추가함