Skip to content

Commit

Permalink
release: web/dev into main (v2) (#272)
Browse files Browse the repository at this point in the history
* feat: add `Typography`, `Button` components (#17)

* feat: use absolute path

* feat: add tailwind-merge, clsx lib

* feat: font, color style type

* fix: vite absolute path setting with using path lib

* feat: add class-variance-authorithy lib

* feat: Typography with size, color props

* feat: VisuallyHidden Component for OnlyScreenReader

* fix: fix typo in text-grey-number

* feat: update color scale(grey, blueGrey scale)

* feat: add cn util with extendsTailwindMerge

* fix: use cn util at typography className

* feat: update font scale(headline-1, body-4)

* feat: Button Component with variant, color, padding

* feat: add ci workflow for web (#19)

* chore: add type check script

* feat: add testing libs to web packages

* chore: set jest config

* chore: add coverage to gitignore

* chore: add sample test code

* feat: add web ci worfklow(lint, type check, test, build)

* feat: add coverage to lint ignorePatterns

* chore: coverage to web gitignore

* feat: add icon assets and `Icon`, `AccessibleIconButton` components (#21)

* feat: add icon svg assets

* feat: add vite-svgr-plugin lib

* feat: set svgr option with typescript

* feat: Icon with type, stroke, fill

* fix: add white, black color to ColorType

* feat: AccessibleIconButton for ScreenReader

* chore: add eol to vite-env.dts

* feat: create Docker Hub push flow (#22)

* feat: create Docker Hub push flow

* feat: add Icon, Header, BottomNavigation (with @tanstack/router) (#28)

* feat: create Docker Hub push flow (#22)

* feat: create Docker Hub push flow

* feat: add `Typography`, `Button` components (#17)

* feat: use absolute path

* feat: add tailwind-merge, clsx lib

* feat: font, color style type

* fix: vite absolute path setting with using path lib

* feat: add class-variance-authorithy lib

* feat: Typography with size, color props

* feat: VisuallyHidden Component for OnlyScreenReader

* fix: fix typo in text-grey-number

* feat: update color scale(grey, blueGrey scale)

* feat: add cn util with extendsTailwindMerge

* fix: use cn util at typography className

* feat: update font scale(headline-1, body-4)

* feat: Button Component with variant, color, padding

* feat: add ci workflow for web (#19)

* chore: add type check script

* feat: add testing libs to web packages

* chore: set jest config

* chore: add coverage to gitignore

* chore: add sample test code

* feat: add web ci worfklow(lint, type check, test, build)

* feat: add coverage to lint ignorePatterns

* chore: coverage to web gitignore

* feat: add icon assets and `Icon`, `AccessibleIconButton` components (#21)

* feat: add icon svg assets

* feat: add vite-svgr-plugin lib

* feat: set svgr option with typescript

* feat: Icon with type, stroke, fill

* fix: add white, black color to ColorType

* feat: AccessibleIconButton for ScreenReader

* chore: add eol to vite-env.dts

* feat: change headline-2 with 24px font

* feat: add width, height props to icon

* fix: change design system(font, icon, svg)

* feat: Header component

* chore: change svg fill color

* feat: content layout

* feat: add @tanstack/react-router lib

* feat: set routing with tasntack router

* feat: add solid icons

* feat: add lodash.throttle lib

* feat: add usePreservedCallback

* feat: add usePreservedReference

* feat: add useThrottle

* feat: BottomNavigation

* chore: delete console log

* chore: delete un-used ignore lint

* refactor: fix bg-white to bottom navigation(using opacity when scroll up)

* feat: add transition opacity to bottom navigation

* fix: add blueGrey800 color

---------

Co-authored-by: Wonyoung Lee <[email protected]>

* feat: add `SignUpPage`  (#36)

* feat: create Docker Hub push flow (#22)

* feat: create Docker Hub push flow

* feat: add check svg

* feat: add StepTitle component for sign-up

* fix: variant to optional

* fix: content layout with className, isShowBottomNavigation

* -feat: add react-toastify lib

* feat: world static asset

* refactor: adjust sub-headline

* chore: add transition to color

* feat: Input component

* refactor: change line-height

* feat: customize toastify style, action

* feat: alert not support at click NotSupportText

* feat: solidCamera icon

* chore: delete border bottom on Header

* chore: add iconColor props to Input

* feat: add eye icons

* refactor: change icon props on Input

* feat: user input email, nickname on SignUpEmailBox

* feat: user input verifyCode on SignUpEmailVerifyBox

* feat: user input password on SignUpPasswordBox

* feat: user input profileImage on SignUpProfileImageBox

* feat: user input name on SignUpNameBox

* feat: make entry page

* feat: sign-up page

* refactor: align start, mid, end on Header

* feat: add resend email verify text

---------

Co-authored-by: Wonyoung Lee <[email protected]>

* feat: verify email format logic (#40)

* feat: isValidEmail utility function

* test: testcode for isValidEmail

* feat: verify email format when signup

* refactor: combine the two state into one(dirty, isFirstDirty)

* feat: add login user page (#42)

* chore: change route home, entry

* chore: change component hierarchy

* chore: delete skip button on SignUpNameBox

* feat: interaction hover to Button

* feat: interaction hover to Input

* feat: user email on LoginEmailBox

* feat: user password on LoginPasswordBox

* feat: user login-page

* fix: set grey-600 to title(StepTitle)

* feat: change password page

* feat: tabs component with underline animation (#50)

* refactor: parallel to ci action with cache node_modules (#44)

* refactor: parallel to ci action with cache node_modules

* chore: add eol to workflow

* chore: change import order

* chore: rename job for unity

* feat: apply lottie to MembershipEntryPage  (#52)

* feat: react-lottie lib

* feat: earth lottie json file

* chore: delete un-used image file

* feat: @types/lottie lib

* feat: apply lottie to MembershipEntryPage

* feat: tab animation to bottom navigation (#55)

* refactor: withRef to AccessibleIconButton

* feat: tab animation to icon

* chore: change default color to grey-600

* chore: change deafult color to blueGrey800

* feat: edit common component(modal, bottomsheet) (#68)

* chore: remove content layout in tab for deleting depdency

* chore: red heart icon svg

* fix: scroll issue

* feat: basic models interface(User, TimelineItem)

* chore: dummy Factory for timeline

* feat: TimelineItem ui component

* fix: change button css when outlined

* feat: modal component with react portal

* feat: animation slide up

* chore: change svg icon

* feat: BottomSheetModal when click paint emoji

* feat: separate bottom sheet (#70)

* chore: rename signup to join

* chore: temporary post edit page for testing postId

* feat: ReplyBottomSheet for handling when click reply icon

* chore: fix line-height

* feat: ViewsBottomSheet for handling when click reply views

* chore: add clip icon

* feat: ShareBottomSheet for handling when click share

* fix: toast show when click heart

* feat: AsyncBoundray, ErrorPage (#69)

* feat: add react-error-boundary lib

* feat: Asyncboundary to handle error, loading

* feat: add error page (404page)

* chore: change emoji, button color

* chore: add space between message

* chore: change version setup-node

* chore: not use cache in workflow

* chore: not use cache in workflow all

* fix: change bottom navigation icon opacity when scroll (#75)

* fix: bottom navigation icon opacity change when scroll

* fix: 500 => 200 thorttle delay

* feat: format time in timeline item box (#77)

* feat: getDiffDate utility function

* chore: set esModuleInterop

* test: testcode for getDiffDate

* feat: getDiffDateText utility function

* test: testcode for getDiffDateText

* feat: apply getDiffDateText with randomAdjustTime

* feat: open menu when click profile icon (#81)

* chore: change icon default color

* feat: extend user model

* chore: create dummy user

* feat: profile page scaffold

* chore: change icon default color

* feat: add menu modal

* feat: add dark-light mode change icon in menu

* chore: add eol in user

* feat: timeline-item-menu component (#79)

* feat: menu icons

* feat: timline-item-menu

* fix: change bottom navigation icon opacity when scroll (#75)

* fix: bottom navigation icon opacity change when scroll

* fix: 500 => 200 thorttle delay

* feat: format time in timeline item box (#77)

* feat: getDiffDate utility function

* chore: set esModuleInterop

* test: testcode for getDiffDate

* feat: getDiffDateText utility function

* test: testcode for getDiffDateText

* feat: apply getDiffDateText with randomAdjustTime

* feat: open menu when click profile icon (#81)

* chore: change icon default color

* feat: extend user model

* chore: create dummy user

* feat: profile page scaffold

* chore: change icon default color

* feat: add menu modal

* feat: add dark-light mode change icon in menu

* chore: add eol in user

* feat: menu icons

* feat: timline-item-menu

* feat: add floating button to home (#83)

* feat: useLongPress hook

* feat: FloatingButton with useLongPress, animation

* feat: scale down when tab floating button

* feat: profile page layout (#108)

* fix: overflow hidden

* chore: move earth json to src

* feat: calendar svg

* chore: limit max-width to menu modal

* chore: change semantic tag in timeline box

* refactor: change tag on ContentLayout

* chore: add menu classname in tab

* chore: add dummy background image path

* feat: usePaintAction business hook

* feat: direction interface

* feat: iconOpacity util with testcode

* refactor: use usePaintAction hook in Homepage

* refactor: scroll action to ContentLayout

* feat: profile-page

* chore: add z index to bottom

* chore: resize margin in timeline

* feat: api instance with interceptor, localStorage (#116)

* feat: add axios lib

* feat: add dotenv to gitignore

* chore: lint change for class using

* feat: add safeLocalTypeStorage

* test: storage util test-code

* chore: no-param-resassign off lint

* feat: change model with api

* feat: manage api instance with interceptor, handleResponse

* chore: add password to dummy user

* chore: calendar icon

* fix: do not show floating button on some page (#123)

* fix: do not show floating button on some page

* chore: delete useless content layout

* feat: editor, circular-progress with PostEditPage (#131)

* chore: add icon

* refactor: button disabled with color theme

* feat: api model

* chore: change earth icon

* feat: trash icon

* fix: change color system(pink, red)

* chore: delete useless content layout

* fix: change medias type, not length 1

* feat: useAutoHeightTextArea hook

* feat: helper Post for EditPost type

* feat: EditPostCancelBottomSheet for clicking back button when edit post with not-empty text or image

* feat: countByte util with test-code

* fix: fix path for favicon

* feat: CircularProgress

* refactor: header with custom node

* feat: converToMedia utility

* feat: linkRegex

* feat: post-edit page with text, image

* feat: temporal save when editing post (#132)

* feat: format to EditPaint with extracting

* test: helperPost spec

* chore: add EmptyCircle icon

* chore: default to undefined

* feat: tempSavedPost

* fix: z-index in menu-modal

* feat: handling loading, error with api (#135)

* chore: delete useless lottie

* refactor: with TimelineList

* feat: Skeleteon with TimelineList

* feat: apply skeleton in timeline list

* chore: lint-off no-unstable-nested

* fix: error message in error-page

* feat: error-with reset box

* feat: apply async boundary to timeline list

* feat: edit post-detail page with suspense (#144)

* fix: z-index with bg-white in header

* feat: MainPostBox

* feat: navigate to detail page when clicking timeline item

* feat: post-detail page

* chore: down z-index

* feat: export type usePaintAction

* feat: skeleton component for timelineitem

* chore: dummyPost with fetch

* feat: add params to profile-page

* refactor: suspense with timeline-list

* refactor: parser algorithm (shift index) (#155)

* chore: lint off no-restrcted-syntax

* refactor: algorithm with shift complex case

* chore: delete sample test

* refactor: memoize component with memo (#147)

* feat: memoize component

* fix: limit max width to post edit button

* feat: cloudinary image cdn uploading (#168)

* feat: add cloudinary libs

* feat: ImageSize type

* feat: cdn-api client

* feat: FullScreenSpinner with sizing Spinner

* feat: cloudinary image resize

* feat: add upload api to cloudianry

* feat: apply imageCdn upload in profile-image

* feat: apply cloudinary in timeline

* chore: to center in desktop view

* chore: delete useless quote

* feat: vite-plugin-environment lib

* feat: use process.env instead of import.meta

* feat: set up environment process

* feat: add quote feat in timeline item box (#178)

* feat: quote-box when user quote other post

* feat: apply quote box in web

* chore: rename item to post

* feat: lazy load image when view on screen (#186)

* feat: useLazyImage hook with intersection observer

* feat: LazyImage component

* feat: apply lazy load image in timeline item box

* feat: inspect lighthouse in web (#208)

* feat: resize user image path

* fix: delete quote in css

* feat: add react-helmet lib for meta

* feat: add meta tag in pages

* feat: use preconnect, dns-prefetch for image, font

* fet: cssMinify, sourcemap when build

* feat: robots.txt for seo

* chore: apply aria-hidden in accessible icon

* feat: not use role in button

* feat: react-helmet-async instead of react-helmet

* feat: use HelmetProvider

* feat: splitVendorChunkPlugin, target in vite

* refactor: image resize with ratio

* refactor: delete useless aria-label

* refactor: change role to button

* feat: connect api in login, join (#212)

* refactor: change api specifiaction

* fix: delete v1 keyword

* feat: improve usability with onKeyUp events

* feat: connect api in login, join

* fix: type problem because of using prev interface

* refactor: change TimelineItem interface api

* feat: search in web (#217)

* refactor: use pathname when parsing location

* feat: default pagination value

* feat: search input in serach page

* feat: createDummyUsers

* feat: UserListSkeleton for loading

* feat: extend timeline-item-list type with search

* feat: show user-list when search user

* feat: serach-result page

* chore: add eol

* chore: rename pagination for fixing typog

* chore: delete useless console

* refactor: improve keyboard interaction with using form tag (#226)

* refactor: use form tag for keyboard interaction

* fix: property name profilePath => profileImagePath

* refactor: define MAX_PASSWORD_LENGTH

* refactor: use 200x200 size when upload profile image upload

* feat: tag person when edit post in web (#227)

* feat: user-search-result type

* feat: user-search api

* feat: tag-search-user-modal compoent with tags

* feat: apply search and tag user in post edit

* feat: show nickname on tagged user

* refactor: prevent header setting icon (#228)

* fix: header-settings icon not support

* feat: not support setting click in header

* feat: connect paints, user api in web (#237)

* feat: email re-send api

* feat: define paints apis

* fix: delete onClick in button for using submit type with form tag

* feat: apply paints apis in page

* refactor: use accesstoken with localStorage

* refactor: accessToken, refreshToken AuthTokenStorage

* refactor: change interface property name

* refactor: change property name

* fix: ci error (useless console, test error by changing property)

* feat: get-my-profile api

* fix: rejectedFallback with props

* fix: step in join

* fix: change re-send api path

* refactor: create-paint with spinner

* feat: post-edit with user image

* feat: seperate default image path

* feat: seperate my-profile, user-profile

* feat: user-profile apis

* feat: profile highlight component

* fix: default image changed

* feat: react to paint

* refactor: handling error on the top

* fix: handling lint

* feat: not-support-box in chat, notification (#245)

* feat: not-support-box

* feat: apply not support box in chat, notification

* fix: change enabled condition

* chore: delete un-used if statement

---------

Co-authored-by: Wonyoung Lee <[email protected]>
  • Loading branch information
poiu694 and 210-reverof authored Feb 21, 2024
1 parent c81bf14 commit a957bae
Show file tree
Hide file tree
Showing 129 changed files with 5,541 additions and 951 deletions.
121 changes: 60 additions & 61 deletions .github/workflows/dockerhub-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,72 +12,71 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Checkout Repository
uses: actions/checkout@v2

- name: Set Environment Variables
run: |
BRANCH_NAME=$(echo $GITHUB_REF | awk -F'/' '{print $3}')
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-
- name: Set Environment Variables
run: |
BRANCH_NAME=$(echo $GITHUB_REF | awk -F'/' '{print $3}')
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'
- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-
- name: Grant execute permission for gradlew
run: chmod +x src/${{ env.BRANCH_NAME }}-service/gradlew
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'

- name: Build with Gradle
env:
USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}
- name: Grant execute permission for gradlew
run: chmod +x src/${{ env.BRANCH_NAME }}-service/gradlew

SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}

run: |
cd src/${{ env.BRANCH_NAME }}-service
./gradlew clean build -x test
- name: Build with Gradle
env:
USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}

- name: Build and Push Docker Image
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
BRANCH_NAME: ${{ env.BRANCH_NAME }}
SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}

USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}

SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}

run: |
if [ -n "$BRANCH_NAME" ]; then
DOCKERFILE_DIR="src/$BRANCH_NAME-service"
else
echo "Failed to extract branch name from GITHUB_REF."
exit 1
fi
run: |
cd src/${{ env.BRANCH_NAME }}-service
./gradlew clean build -x test
cd $DOCKERFILE_DIR
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --use
docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
docker buildx build --platform=linux/amd64,linux/arm64 -t $DOCKER_USERNAME/$BRANCH_NAME-service:latest . --push
- name: Build and Push Docker Image
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
BRANCH_NAME: ${{ env.BRANCH_NAME }}

USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}

SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}

run: |
if [ -n "$BRANCH_NAME" ]; then
DOCKERFILE_DIR="src/$BRANCH_NAME-service"
else
echo "Failed to extract branch name from GITHUB_REF."
exit 1
fi
cd $DOCKERFILE_DIR
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --use
docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
docker buildx build --platform=linux/amd64,linux/arm64 -t $DOCKER_USERNAME/$BRANCH_NAME-service:latest . --push
14 changes: 14 additions & 0 deletions src/web/.eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,19 @@ module.exports = {
"allowedInvalidRoles": ["text"],
"ignoreNonDOM": true
}], // role="text"만 예외로 허용하여 ARIA spec을 확장해서 사용합니다.
"max-classes-per-file": [
"error",
{ "ignoreExpressions": true, "max": 2 }
], // class는 최대 2개까지 사용 가능합니다.
"class-methods-use-this": "off", // this 사용에 대한 제한을 사용하지 않습니다.
"no-param-reassign": "off", // param을 reassign 할 수 있게 만듭니다.
"react/no-unstable-nested-components": [
"off",
{
"allowAsProps": true,
"customValidators": [] /* optional array of validators used for propTypes validation */
}
],// error-boundary에서 fallback을 받기위해 사용합니다.
"no-restricted-syntax": "off" // for ... of의 문법을 사용합니다.
},
};
1 change: 1 addition & 0 deletions src/web/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ dist-ssr
*.sw?

coverage
.env
5 changes: 5 additions & 0 deletions src/web/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
<head>
<meta charset="UTF-8" />
<link rel="shortcut icon" href="/assets/favicons/favicon.ico" />
<link rel="preconnect" href="https://res.cloudinary.com" crossorigin />
<link rel="dns-prefetch" href="https://res.cloudinary.com" crossorigin />
<link rel="preconnect" href="https://abs.twimg.com" crossorigin />
<link rel="dns-prefetch" href="https://abs.twimg.com" crossorigin />
<meta name="robots" content="index, follow" />
<!--추가-->
<link
rel="apple-touch-icon"
Expand Down
6 changes: 6 additions & 0 deletions src/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,19 @@
"test": "jest"
},
"dependencies": {
"@cloudinary/react": "^1.11.2",
"@cloudinary/url-gen": "^1.16.0",
"@tanstack/react-query": "^5.17.7",
"@tanstack/react-router": "^1.4.3",
"axios": "^1.6.6",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
"framer-motion": "^10.17.9",
"lodash.throttle": "^4.1.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-error-boundary": "^4.0.12",
"react-helmet-async": "^2.0.4",
"react-lottie": "^1.2.4",
"react-toastify": "^10.0.0",
"tailwind-merge": "^2.2.0"
Expand All @@ -40,6 +44,7 @@
"@types/node": "^20.10.7",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
"@types/react-helmet": "^6.1.11",
"@types/react-lottie": "^1.2.10",
"@typescript-eslint/eslint-plugin": "^6.14.0",
"@typescript-eslint/parser": "^6.14.0",
Expand All @@ -64,6 +69,7 @@
"ts-node": "^10.9.2",
"typescript": "^5.2.2",
"vite": "^5.0.8",
"vite-plugin-environment": "^1.1.3",
"vite-plugin-svgr": "^4.2.0"
}
}
Loading

0 comments on commit a957bae

Please sign in to comment.