Skip to content

AI가 분석하는 당신의 해양 환경 봉사 기록, ‘비치-컴바인(Beach-Combine)’ / Record your beach combing activities analyzed by AI

Notifications You must be signed in to change notification settings

Beach-Combine/Backend

Repository files navigation


✔️ How to Start

1) Prerequisites

  • Java 11
  • IntelliJ IDEA or eclipse
  • MySQL Workbrench
  • Redis

2) Clone

Clone this repo to your local machine using:

git clone https://github.com/Beach-Combine/Backend.git

3) Setup

  • Add env.properties in resources
    • Fill in the blank space after the equal sign with your own words
application.spring.datasource.url=jdbc:mysql://localhost:3306/beachcombine?serverTimezone=Asia/Seoul
application.spring.datasource.username=root
application.spring.datasource.password=
application.jwt.secret=
application.jwt.secret_refresh=
application.spring.cloud.gcp.storage.credentials.location=classpath:beach-combine-3770712535c0.json
application.spring.cloud.gcp.storage.project-id=
application.spring.cloud.gcp.storage.bucket=
application.spring.cloud.gcp.geocodingAPI=
application.spring.datasource.databaseAPI=
  • Add beach-combine-3770712535c0.json in resources
    • Private key issued by GCP (If you don't want to use image-related APIs, it's okay to just create a file and leave the file content empty)
  • Creating a database called beachcombine in MySQL workbrench
  • compileQuerydsl
  • Change the value of the ddl-auto variable inside application.yml from none to create only on the first execution.
  • Run BackendApplication

📲 Easy Start

For Android User

  1. Download apk file ⭐ here ⭐. (Available for Android version 12 or higher)
  2. You can use it right away by installing it on your smartphone!
  • Currently, this service is providing beta service for Busan, Korea

Tip

Our service is currently focused on Busan, South Korea. Therefore, we provide a testing feature for customers in inland areas or those who cannot visit Busan to experience the entire cleaning process.

Upon entering the home screen, users will see a Test button. When they press this button, their current location will be moved to the Busan area, allowing them to explore various features. If users move to a different location from their current position, the screen will reflect the corresponding change. Feel free to click on nearby markers to experience different feedback.

Please note that this feature is designed solely for testing purposes and is not reflected in the actual database. Therefore, no rewards will be given upon completing the entire cleaning process. Keep this in mind!

In the actual Busan sea, all features can be used without any issues. Come and enjoy Busan!


⚙️ Release Note

2023-03-31

v1.0.0 release

  • Added Main Feature(Cleaning the beach)
  • Added Community Feature
  • Added Ranking Feature
  • Added Mypage Feature

2023-06-05

v1.1.0 release

  • Added Admin Feature
  • Added Testing Feature
  • Added Notification Feature
  • Added Tutorial Feature

💡 How to use


📽 Demo Video Link

BeachCombine


🏛 Project Architecture


✅ Server Deployment Process (CI/CD using Github Actions)

Local : Gradle build, Docker build

  1. jar build : gradle build
  2. image creation : docker build -t yourAccountName/repositoryName ./
  3. push to Docker Hub : docker push yourAccountName/repositoryName

(AccoutName and RepositoryName are from Docker Hub)

Server : Deploy

  1. Pull from Docker Hub : docker pull yourAccountName/repositoryName
  2. Create image as configured in Docker-compose.yml : docker tag yourAccountName/repositoryName dockerImageName
  3. Run Docker Compose : docker-compose up

(dockerImageName should be written as the image name in Docker-compose.yml)


🛠 Tech Stacks


📁 ERD


❗ GIT Strategy

1) Git Workflow

main → develop → feature/Issue#-feature, fix/Issue#-feature, refactor/Issue#-feature

  1. Work individually on each branch local - feature/Issue#-feature
  2. After completing the task, submit a PR to remote - develop.
  3. After code review, receive approval and merge
  4. Every time a merge occurs in remote - develop, all team members pull from remote - develop to maintain the latest status

2) Commit Convention

Tag name Description
feat Commits that add a new feature
fix Commits that fix a bug
hotfix Fix an urgent bug in issue or QA
build Commits that affect build components
chore Miscellaneous commits
style Commits for code styling or format
docs Commits that affect documentation only
test Commits that add missing tests or correcting existing tests
refactor Commits for code refactoring

📑 Coding Convention

1) Naming Convention

  • Variables, functions, and class names should use camelCase.
  • For functions, use a verb followed by a noun. e.g.) getInfo()
  • Column names stored in the DB should use snake_case. e.g.) member_id
  • URL names should use kebab-case, consisting of lowercase nouns.
  • Use hyphens (-) as separators, and avoid using separators when possible. e.g.) www.example.com/user

2) Builder

  • To improve readability, builders are required instead of constructors

👥 Contributors

권보민 추서연

📎 Link

About

AI가 분석하는 당신의 해양 환경 봉사 기록, ‘비치-컴바인(Beach-Combine)’ / Record your beach combing activities analyzed by AI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published