Giter VIP home page Giter VIP logo

sogongsogong-front's Introduction

Contributors Forks Stargazers Issues


Logo

Sogong Sogong (소공소공)
Anonymous Communication Platform for Small Business to solve the UN's SDGS No.8.

Explore the notion (Only In Korean)
View Demo · Report Bug & Request Feature · Back-End Readme


Table of Contents
  1. Introduction
  2. Getting Started
  3. Usage
  4. Structure
  5. Contributing
  6. Contact

Introduction

Summary

Sogong Sogong is an Android application which communicate anonymously.

  • Meaning of Sogong Sogong : Sogong Sogong is a combination of Korean words which means whisper(pronounced as SOGON) and abbreviation of small business owners (pronounced as SOsang-GONGin).
  • Target : Sogong Sogong is for ==small business owner and prospective entrepreneurs.== So they can talk about many things that you haven't told anyone and anywhere. The things can be stories about sales concern, rude customers and even franchise's abuse of power. Also the application supports used market that allow store transactions.
  • Effection : Because Sogong Sogong guarantees complete anonymity, it refreshes an atmosphere of small business, full of absurdity and COVID 19. And through used market, it supports easy-trade on online unlike people did legwork in the past.

Flow Chart

See Flow Chart at the following Link!

Tech Stack(Front-End)


Getting-Started

Prerequisites

To run Sogong Sogong App

  • Android 6.0(Marshmallow) at least
  • Not support iOS.

To edit file

  • Latest version of Android Studio
  • Kotlin 1.6.10

Installation

Follow the below instructions!

  1. Download the app.
  2. Participate in small and medium-sized communities through membership registration
  3. You can communicate with more diverse operators by authenticating your business number.
  4. Share your questions, hardships, and good tips.
  5. You can find out what you're interested in through hashtag.

Let's be together at Sogong Sogong, a communication channel only for small business owners!


Usage

This section explains the guidelines for how to use Sogong Sogong

* The pictures down below may differ from the actual design.
  1. In Sogong Sogong, you need business license number to sign in.
    If you don't have it, you can skip this process.
    However, service doesn't support some functions compared to members who have certified.
    Don't worry! You can regist it later.

  2. At the main page, there are several information, posts for you!
    And bottom navigation means main page, board list, notification and settings in order.

  3. If you want to enter boards to see posts, you can enter to them by touching at second bottom navigation.
    And then, see the details of post by just clicking the part.

  4. On the detail of post page, you can store it by clicking icons in your 'Liked Post' and 'Clippings'.
    In addition, you can write comments anonymously.

  5. When you want to post something, please click the floating icon at the bottom named 'Post'.
    On the writing page, you need to choose post-hashtags and write contents.
    Post-hashtags can be selected up to two from two categories.
    And posts are anonymous like comments.

  6. Please click the icon 'Sogong Sogong Board' at the second page, if you want to get official information.

  7. If you want to find posts, you can find them by hashtags in two ways.
    The first is through the search bar at the main page, second one is through 'Hastag Board' at the board list.

  8. To check new notification, you can enter through third bottom naviagtion.

  9. You can change application settings in 'My Page' at the bottom navigation on the far right.


Structure

Front-End

Directory structure

Directory sturcture could be changed.

OPEN

├── README.md
├── app/
│   ├── proguard-rules.pro
│   ├── google-services.json
│   │── .gitignore 
│   ├── build.gradle
│   └── src/
│            ├── androidTest/java/com/gdsc/sogongsogong/
│            ├── test/java/com/gdsc/sogongsogong/
│            └── main/
│                     ├── AndroidManifest.xml
│                     ├── res/
│                     └── java/com/gdsc/sogongsogong
│                             ├── App.kt
│                             ├── MainActivity.kt
│                             ├── NavViewModel.kt
│                             ├── SplashActivity.kt
│                             └── data/
│                                     └── entity/
│                                             ├── BoardReport.kt
│                                             ├── Hashtag.kt 
│                                             ├── Noti.kt 
│                                             └── Post.kt
│                                     └── remote/
│                                             ├── Api.kt
│                                             ├── ApiService.kt
│                                             └── datasource/
│                                                     ├── PostRemoteDataSource.kt
│                                                     └── PostRemoteDataSourceImpl.kt
│                             └── util/
│                                     └── FlowExtension.kt
│                             └── di/
│                                     └── dispatcher/
│                                             ├── DispatcherProvider.kt
│                                             └── DispatcherProviderImpl.kt 
│                                     └── module/
│                                             ├── DataSourceModule.kt
│                                             └── DispatcherModule.kt
│                             └── fake/
│                                     ├── FakeFactory.kt
│                                     └── SimpleApi.kt
│                             └── ui
│                                     └── base
│                                             ├── BaseActivity.kt
│                                             ├── BaseFragment.kt
│                                             ├── BaseViewHolder.kt
│                                             └── BaseViewModel.kt
│                                     └── board
│                                             ├── BoardActivity.kt
│                                             ├── BoardAdapter.kt
│                                             └── BoardViewModel.kt
│                                     └── boardlist
│                                             └── BoardListFragment.kt
│                                     └── home
│                                             ├── HomeBoardAdapter.kt
│                                             ├── HomeFragment.kt
│                                             └── InformationAdapter.kt
│                                     └── join
│                                             └── JoinActivity.kt
│                                     └── notification
│                                             └── NotificationFragment.kt
│                                     └── post
│                                             ├── PostImageAdapter.kt
│                                             └── PostImagePagerAdapter.kt
│                                     └── search
│                                             └── BoardSearchActivity.kt
│                                     └── setting
│                                             ├── SettingsContentsAdapter.kt
│                                             ├── SettingFragment.kt
│                                             └── SettingViewModel.kt
│                                     └── writepost
│                                            └── WritePostActivity.kt
├── .gitignore
├── build.gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

Screen structure

  • Screen can be divided in Main screen and Bottom navigation.

Back-End


Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create.
Any contributions you make are greatly appreciated.

  1. Request Feature yourself
  2. Fork the Project
  3. Create your Feature Branch (git checkout -b feature/#{IssueNumber})
    • ex) feature/#1
  4. Commit your Changes (git commit -m 'Issue #{IssueNumber} feat: Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/#{IssueNumber})
  6. Open a Pull Request

Contact


sogongsogong-front's People

Contributors

cha-ji avatar cyun-404 avatar chodakk avatar

Stargazers

 avatar jihun kim avatar

sogongsogong-front's Issues

POST Activity 수정

To Do

  • 상단 앱바는 앱바 사용하지 않고 텍스트뷰(뒤로가기) + 텍스트뷰(소공소공게시판) 텍스트뷰(...) 처럼 이어붙이기
  • 소공소공 아이콘 적용 (drawable/ic_sogongsogong)
  • 댓글과 대댓글은 이중 리사이클러뷰를 사용할 것이며 (item_comment.xml) (item_reply.xml) 생성할 것.

POST(글쓰기) 화면 구성

To Do

  • 앱바 구성(navigation 등록)
  • 업종 및 종목 dropdown 생성
  • 내용 입력 edittext 생성
  • 사진 추가버튼 생성

게시글 불러오는 기능 구현

To Do

  • 백엔드에 GET 요청을 보내는 함수명은 fetch로 약속한다.
  • 특정 페이지를 요청해 n개의 게시물을 받아온다.(페이지) vs 현재 보이는 마지막 게시글을 기준으로 n 개의 게시물을 받아온다. (무한스크롤)
    • 일단 둘 다 구현한다.

board activity 제작

스크린샷 2022-03-19 오후 1 10 48

To Do

  • 상단 action bar 적용
  • board list fragment에서 이동할 수 있도록 제작

각종 Navigation 설정

To Do

  • MainActivity에서 Bottom Navigation Bar 추가
  • layout 구성(디자인은 하지 않는다)
  • hash, information TextView를 클릭하면 해당 게시판으로 화면 이동 (navigation graph 사용)

로그인 화면 기반

To Do

  • TODO주석 작성
  • 파일 구조, 함수 구조만 고려할 예정

비고

  • 프로토타입이 완성되지 않았기 때문에 xml 파일은 대충 할거임
  • model이 완성되지 않았기 때문에 로직도 대충 작성될듯
  • Single Activity를 추구하지만 로그인 전체 과정을 JoinActivity를 만들어 MainActivity와 별개로 사용할 것임.

실행 에러

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gdsc.sogongsogong, PID: 2747
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gdsc.sogongsogong/com.gdsc.sogongsogong.MainActivity}: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity

  • 리소스 id를 잘못설정한건지 bottom navigation 설정하다가 오류가 났는데 꽤나 오래 삽질중입니다 허허

사업자 등록 페이지

To Do

  • 레이아웃 작성하기
  • spinner에 들어갈array 정리
  • rest 명세에 따라 전송 token 작성

Home Fragment 완성

스크린샷 2022-03-26 오후 3 40 07

To Do

  • 상단 핫게시물 만들기
  • 보라색 배경 만들기
  • 임시 배너 만들기
  • 로고 적용하기
  • 필요한 드로어블 넣기

해시태그 선택화면 만들기

  • 디자인 첨부예정

To Do

  • 기존 해시태그 선택부분을 스피너로 만들었는데, 그냥 뷰로 만들어놓고 새 프래그먼트로 이동시킨다.

로그인 기능 구현

To Do

  • layout 구성(디자인은 하지 않는다)
  • 소셜 로그인 기능 구현

ETC

  • 로그인의 반환값 정리해서 백엔드와 소통하기

board list fragment 제작

스크린샷 2022-03-19 오후 1 07 49

To Do

  • 위 화면 참고
  • 아이콘, 색 반영은 천천히
  • main activity의 bottom navigation(navigation/nav_graph_bottom)에서 이동할 수 있도록 설정

SimpleApi 완성

To Do

https://www.notion.so/treejin99/Rest-488a1629a9cf4a7a823790ae49ddd938
참고

body, path, query, queryMap은 수정이 필요할 수 있습니다. 후에 수정 하겠습니다,

  • Requestbody : Body로 정보 주세요! (data class로 생성해서 넘기면 편함)
  • PathVariable : 그냥 url 뒤에 /붙여서 숫자만 넘겨주세요!
  • RequestParam : url에 ?post-id=1&comment-id=1 이렇게 변수명을 지정해주셔야 해요!

이 부분은 query, body, field를 기본으로 사용하였는데 올바른 작성인지 확인이 필요합니다.

kotest 설정

To Do

  • given, when, then에 맞춰 behavior spec을 적용한다.

etc

  • mocking이 잘 되는지 점검할 것

interface 작성하기

To Do

  • 어떤 CRUD를 작성할지에 대한 Repository interface를 작성한다.
    ex)
interface UserRepository {

    fun getUserId(): User

    fun deleteUserId()
}

e.t.c.

  • 일종의 계획서로 볼 수도 있다.
  • FakeRepository를 아래처럼 임시로 구현해 UI Layer에서 테스트용으로 사용할 수 있다.
    ex)
class FakeUserRepository(val userRemoteDataSource: UserRemoteDataSource) : UserRepository {
    override fun getUserId() = listOf("홍길동")

    override fun deleteUserId() { }
}

Base 게시판 UI 구현

To Do

  • layout은 하나만 생성해 재사용한다.
  • 재사용 가능한 RecyclerView Adapter, ViewHolder를 구현한다.
  • 재사용 가능한 부모클래스 Fragment를 구현한다.

Setting Fragment 기반

To Do

  • Base 클래스 활용하는 예제 구현
  • Fragment 생성, navigation 사용 등의 예제 포함

리소스 설정

To Do

  • color.xml 피그마 반영
  • 각종 drawable 피그마 반영

Search Activity 제작

스크린샷 2022-03-19 오후 1 06 33

To Do

  • 위 화면을 참고
  • activity_search를 수정
  • home fragment에서 navigation 연결

Drawble 누락

  • develop 브랜치에 drawable이 누락되어 실행이 되지 않습니다.

hilt 라이브러리 적용

To Do

  • gradle 설정
  • setting fragment로 예시 작성

e.t.c.

  • DI(의존성 주입) 라이브러리 hilt, dagger, koin 중 hilt를 적용

not found 에러

  • activity_board_search.xml에서 에러 있습니다~
     ERROR:/Users/cha-ji/Git/GDSC/sogongsogong/app/src/main/res/layout/activity_board_search.xml:32: AAPT: error: attribute mt_placeholder (aka com.gdsc.sogongsogong:mt_placeholder) not found.
         
     ERROR:/Users/cha-ji/Git/GDSC/sogongsogong/app/src/main/res/layout/activity_board_search.xml:32: AAPT: error: attribute mt_hint (aka com.gdsc.sogongsogong:mt_hint) not found.
         
     ERROR:/Users/cha-ji/Git/GDSC/sogongsogong/app/src/main/res/layout/activity_board_search.xml:32: AAPT: error: attribute mt_speechMode (aka com.gdsc.sogongsogong:mt_speechMode) not found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.