This project serves as the backend of a mobile application "Forword".
The backend is developed in the form of a RESTAPI.
Forword is an abbreviation of Foreign + Word
The pronounciation of this word is similar to the English word "Forward", which means to move furthur to a certain destinationWe hope that users of FORWORD could move FORWARD with their journey of learning the Korean culture, especially the language and famous places
- Decreasing foreign tourists visiting Korea, due to COVID-19
- Lack of true knowledge of the Korean culture and language of foreigners despite the increasing popularity of k-pop and k-drama
- No services available for foreigners to learn the Korean language in a beginner level
- Provides a contactless way of touring Korea
- Allows users to learn the Korean language through the introduction of famous tourist spots
To begin using this template, choose one of the following options to get started:
- Fork, Clone, or Download on GitHub
- Open the project through Intellij IDEA
To set up the database with pre-defined SQL statements, please refer to the file below:
- Java Version 11
- Spring Boot Version 2.4.3
- MySQL Version 8.0.23
//jwt
implementation 'io.jsonwebtoken:jjwt-api:0.10.5'
runtime 'io.jsonwebtoken:jjwt-impl:0.10.5'
runtime 'io.jsonwebtoken:jjwt-jackson:0.10.5'
compile 'mysql:mysql-connector-java'
compile 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile 'org.springframework.boot:spring-boot-starter-validation'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
- Duplicate check of emails
- User Registeration
- Login
- Modify / Delete User information
- Provide Today's word
- Provide 3 randomly selected tourist place everyday
- Create/ Update/ DeleteMy Word Folder
- Add / Delete to My Wordlist
- Map customization (change color of regions)
- Read placelists (in all regions, per region)
- Place Detail (detailed information & related words)
- Learn words in my wordlist(READ)
- Quiz (4Types)
- Create / Read my Quiz Result
- Create / Delete / Update My map (wishlist & have been to lists)
User Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
POST | /api/user | NO | CREATE | Create User & save access token for user - Register (ํ์๊ฐ์ ) |
GET | /api/user/{id} | YES | READ | Get information of 1 particular user (์ฌ์ฉ์ ์ ๋ณด ์กฐํ) |
PATCH | /api/user/{id} | YES | UPDATE | Update information of a particular user (์ฌ์ฉ์ ์ ๋ณด ์์ ) |
DELETE | /api/user/{id} | YES | DELETE | Delete user (์ฌ์ฉ์ ์ญ์ ) |
POST | /api/user/checkDuplicate | NO | - | Check Duplicate user by email (์ฌ์ฉ์ ์ด๋ฉ์ผ ์ค๋ณต ํ์ธ - ํ์๊ฐ์ ํ์ด์ง์์ ์ฌ์ฉํ๋ฉด ๋จ) |
POST | /api/user/login | NO | - | User Login(์ฌ์ฉ์ ๋ก๊ทธ์ธ) |
Home Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
GET | /api/home/ | YES | READ & CREATE | Get information needed in home page(ํ ํ๋ฉด์์ ํ์ํ ์ ๋ณด ์กฐํ) |
MyWordFolder (๋ด ๋จ์ด์ฅ ํด๋) Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
POST | api/myWordFolder/ | YES | CREATE | Make my word folder (๋ด ๋จ์ด์ฅ ํด๋ ์์ฑ) |
GET | api/myWordFolder/{id} | YES | READ | Get my word folder list (๋ด ๋จ์ด์ฅ ํด๋ ๋ชฉ๋ก ๋ณด๊ธฐ) |
DELETE | api/myWordFolder/{id} | YES | DELETE | Delete my word folder list(๋ด ํน์ ๋จ์ด์ฅ ํด๋ ์ญ์ ) |
PATCH | api/myWordFolder/{id} | YES | UPDATE | Modify my word folder name(๋ด ํน์ ๋จ์ด์ฅ ์ด๋ฆ ๋ณ๊ฒฝ) |
GET | api/myWordFolder/learn/{id}?page={pageNumber} | YES | READ | Learn certain words in a particular word folder (๋ด ํน์ ๋จ์ด์ฅ ํด๋์ ์๋ ๋จ์ด๋ค ํ์ตํ๊ธฐ) - With Pagination |
GET | api/myWordFolder/learnWord/{id}/{folderId} | YES | READ | Learn certain words in a particular word folder (๋ด ํน์ ๋จ์ด์ฅ ํด๋์ ์๋ ๋จ์ด๋ค ํ์ตํ๊ธฐ) - Without Pagination |
MyWord (๋ด ๋จ์ด์ฅ) Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
POST | /api/myWord/{id} | YES | CREATE | Add certain word to a particular word folder(ํน์ ๋จ์ด์ฅ ํด๋์ ํน์ ๋จ์ด ์ถ๊ฐ) |
GET | api/myWord/{id}/{wordFolderId | YES | READ | Get all wordlist in a particular word folder(ํน์ ๋จ์ด์ฅ ํด๋์ ์๋ ๋จ์ด๋ค ์ ๋ณด ์กฐํ) |
DELETE | /api/myWord/{id} | YES | DELETE | Delete a particular word in a word folder(ํน์ ๋จ์ด์ฅ ํด๋์ ์๋ ํน์ ๋จ์ด ์ญ์ ) |
Place Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
GET | /api/place/regionList/{id} | YES | READ | Get all region list (๋ชจ๋ ์ง์ญ์ ๋ํ ์ ๋ณด ์กฐํ(์ง์ญ ๋ฆฌ์คํธ ๋ฐ๊ธฐ)) |
PATCH | /api/place/regionList/{id} | YES | UPDATE | Change color of a certain region (์ด๋ค ์ง์ญ์ ์ ๋ฐ๊พธ๊ธฐ) |
GET | /api/place/region/{userId}/{id} | YES | READ | Get all place list in a certain region(ํน์ ์ง์ญ์ ๋ํ ๊ด๊ด์ง ๋ฆฌ์คํธ ์กฐํ) |
Place Detail Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
GET | /api/place/detail/{userId}/{id} | YES | READ | Get information of a certain place in both English & Korean (ํน์ ๊ด๊ด์ง์ ๋ํ ์ ๋ณด ์กฐํ (์์ด & ํ๊ตญ์ด)) |
GET | /api/place/detail/eng/{userId}/{id} | YES | READ | Get information of a certain place in English (ํน์ ๊ด๊ด์ง์ ๋ํ ์ ๋ณด ์กฐํ (์์ด)) |
GET | /api/place/detail/kor/{userId}/{id} | YES | READ | Get information of a certain place in Korean (ํน์ ๊ด๊ด์ง์ ๋ํ ์ ๋ณด ์กฐํ (ํ๊ตญ์ด)) |
GET | /api/place/word/{userId}/{id}?page={pageNumber} | YES | READ | Get all wordlist related to a certain place (ํน์ ๊ด๊ด์ง์ ๋จ์ด ๋ฆฌ์คํธ) - with pagination |
GET | /api/place/wordList/{userId}/{id} | YES | READ | Get all wordlist related to a certain place (ํน์ ๊ด๊ด์ง์ ๋จ์ด ๋ฆฌ์คํธ) - without pagination |
My Map Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
POST | api/myMap/{id} | YES | CREATE | Add place to my map(๋ด ์ง๋์ ์ฅ์ ๋ฃ๊ธฐ(wish & have been to)) |
GET | api/myMap/all/{id} | YES | READ | Get all place list in my map(๋ด ์ง๋์ ํฌํจ๋ ๋ชจ๋ ์ฅ์ ๋ณด๊ธฐ(wish & have been to)) |
GET | api/myMap/wish/{id} | YES | READ | Get place list in my map(๋ด ์ง๋์ ํฌํจ๋ ์ฅ์ ๋ณด๊ธฐ(wish ONLY)) |
GET | api/myMap/haveBeen/{id} | YES | READ | Get place list in my map(๋ด ์ง๋์ ํฌํจ๋ ์ฅ์ ๋ณด๊ธฐ(have been to ONLY)) |
PATCH | api/myMap/{id} | YES | UPDATE | Modify place information in my map(๋ด ์ง๋์ ์๋ ์ฅ์ ์์ ) |
DELETE | api/myMap/{id} | YES | DELETE | Delete place in my map(๋ด ์ง๋์ ์๋ ์ฅ์ ์ญ์ ) |
POST | api/myMap/upload/{id} | YES | CREATE / UPDATE | Create and update json file for map customization(์ง๋ ์ ๋ถ๋ถ์์ ํ์ํ json ํ์ผ ์ฌ๋ฆฌ๊ธฐ / ์ ๋ฐ์ดํธ) |
GET | api/myMap/download/{id} | YES | READ | Get json file related to map color(์ง๋ ์ ๋ถ๋ถ์์ ํ์ํ json ํ์ผ ๋ฐ๊ธฐ) |
WORD Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
GET | api/word/{wordId} | YES | READ | Get specific information of a certain word(ํน์ ๋จ์ด์ ๋ํ ์ ๋ณด ์กฐํ (HOME์ ๋จ์ด๋ ์ฐ๊ฒฐ์ ์ฌ์ฉ)) |
Quiz Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
POST | api/quiz/{id} | YES | READ | Get quiz material(ํด๋น ํด์ฆ์ ์ถ์ ๋ ๋ฌธ์ ๋ชฉ๋ก ๋ฐ ๊ฐ๊ด์ ๋ชฉ๋ก ๋ฐ์์ค๊ธฐ) |
POST | api/quiz/result/{id} | YES | UPDATE | Update quiz result(ํด์ฆ ์ข ๋ฃ ํ ํด๋น ํด์ฆ์ ๊ฒฐ๊ณผ ์๋ฒ์ ์ ๋ฐ์ดํธ) |
Profile Related Endpoints
Request Type | Path | Need Token | Method | Description |
---|---|---|---|---|
GET | api/profile/{id} | YES | READ | Get information of users attendance & quiz result for this week (์ฌ์ฉ์์ 1์ฃผ์ผ์น ์ถ์ & ๋จ์ด ์ํ ๊ฒฐ๊ณผ ์กฐํ) |
Example of Token in header
Basic Token headerAuthorization Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjExLCJuYW1lIjoiQ2luZGlhIn0.vNieUBizIAzhwpAv_J2m9GSMMUO96LTaWPLxYYOG_W8
Token for login & register & checkDuplicate (Made due to front-end request)
Authorization Bearer no_value
Explanation of Pagination
![แแ
ณแแ
ณแ
แ
ตแซแแ
ฃแบ 2021-08-21 แแ
ฉแแ
ฎ 1 01 07](https://user-images.githubusercontent.com/52744390/130309904-b6fd9b5e-5957-4863-a85f-cf13bb3fac8e.png)
- total pages: ์ด ํ์ด์ง
- total elements: ํ์ด์ง๋ค์ด์
ํ๋ ์์ดํ
์ ์ด ์
- current page: ํ์ฌ ํ์ด์ง
- current elements: ํ์ฌ ํ์ด์ง์ ์๋ ์์ดํ
์ ์
** pageNumber์ 1๋ถํฐ ์์!
- Jisoo Kim - Backend & UI design
- Chihyun Song - Front-end (Main)
- Seonho Im - External API & Data filtering & Front-end (Sub)
๐ด All Team Members
๐ข Jisoo Kim
๐ต Chihyun Song
๐ก Seonho Im