Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: ci/cd 테스트 #41

Open
wants to merge 46 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
a6668a8
feat: 강의시간표 api 연동 (#27)
jeewonMoon Jul 30, 2024
bd14642
feat: 로그인 api 연동 (#29)
zhy2on Jul 30, 2024
73f9cf3
feat: 사이드바, 탭 메뉴 연결 (#30)
jeewonMoon Jul 30, 2024
1c3115b
feat: 관심과목 담기 페이지 구현 (#32)
zhy2on Jul 31, 2024
fdb71bd
feat: 토큰, 수강 신청 관련 기능 구현 (#33)
jeewonMoon Aug 1, 2024
a7b9df0
feat: 상단바 시간 추가 (#36)
jeewonMoon Aug 1, 2024
3ab93e3
fix: 토큰 관련 오류 해결 (#39)
jeewonMoon Aug 2, 2024
39b0f3b
feat: 수강신청 관련 modal, 연결 (#37)
Anhye0n Aug 3, 2024
a2aebba
fix: 타입 에러 해결 (#42)
Anhye0n Aug 3, 2024
c9ae412
Revert "fix: 타입 에러 해결 (#42)" (#43)
Anhye0n Aug 3, 2024
611beed
refactor: 2학기 시간표 업데이트 (#47)
Anhye0n Aug 3, 2024
3ca5527
fix: 수강신청 검색구분 버그 해결 (#46)
jeewonMoon Aug 3, 2024
27dfaeb
fix: waiting 모달 progress bar 수정, modal창 종료 시점 수정 (#51)
Anhye0n Aug 3, 2024
7d2a95e
feat: 수강신청 시작 버튼 추가 (#52)
Anhye0n Aug 3, 2024
7154a7c
chore: lint 경고 및 오류 수정 (#53)
jeewonMoon Aug 3, 2024
99e1377
refactor: 수강신청 페이지 리팩토링 (#54)
zhy2on Aug 4, 2024
e1735a1
refactor: 강좌조회 페이지 리팩토링 (#56)
zhy2on Aug 4, 2024
bcf4f34
refactor: 수강신청 시작 버튼 로직 리팩토링 (#59)
zhy2on Aug 4, 2024
5f85484
feat: 조회 결과 없음 처리 (#63)
jeewonMoon Aug 4, 2024
afc0cdb
feat: 수강신청 실패 추가 (#66)
Anhye0n Aug 4, 2024
5496920
feat: ErrorModal 추가 (#68)
Anhye0n Aug 4, 2024
4ace49a
feat: 에러 모달 처리 (#69)
jeewonMoon Aug 5, 2024
aa5950c
fix: 관심과목 필터 버그 해결 (#73)
jeewonMoon Aug 5, 2024
5f0cd30
개선 사항 #71 (#74)
Anhye0n Aug 5, 2024
00944af
chore: 구글 애널리틱스 설정 (#76)
Anhye0n Aug 5, 2024
d5b8f30
fix: 조회 문제 해결
Anhye0n Aug 6, 2024
531a4b4
fix: 관심 과목 검색 문제 해결
Anhye0n Aug 6, 2024
a19a2ff
refactor: 사이트 유사도 수정 (#78)
Anhye0n Aug 8, 2024
eaf84fc
refactor: 코드 정리 (#80)
jeewonMoon Aug 8, 2024
83fe383
fix: 학번 타입 에러 수정 (#82)
Anhye0n Aug 8, 2024
0ce9a5b
refactor: 디자인 수정 (#84)
Anhye0n Aug 8, 2024
74854fb
refactor: 관심과목 담기 api 사용 리팩토링 (#85)
zhy2on Aug 9, 2024
4d12e5d
refactor: 로딩 모달 시간 수정 (#87)
Anhye0n Aug 12, 2024
4c52500
refactor: 개인 정보 수집 안내 수정 (#89)
Anhye0n Aug 15, 2024
7e2a70a
fix: delete 페이지 navigate 설정 (#90)
Anhye0n Aug 15, 2024
bf62dad
design: 모바일 화면 개선 (#91)
jeewonMoon Sep 6, 2024
5032c90
perf(TS-13): 강의 목록 렌더링 속도 개선 (#92)
jeewonMoon Sep 11, 2024
35615d2
feat(TS-23): 에러 페이지 생성 (#93)
jeewonMoon Sep 12, 2024
c427d93
docs(TS-15): 리드미 추가 (#94)
jeewonMoon Sep 22, 2024
5f886f7
fix: import 오류 해결 (#95)
jeewonMoon Sep 23, 2024
e477756
refactor: 로그인 페이지 입력창 스타일 수정 (#96)
surra7 Jan 4, 2025
d759d09
refactor: 매크로 이미지 페치 로직 간소화 (#97)
zhy2on Jan 8, 2025
1669b85
chore: env 세팅 (#98)
Anhye0n Jan 8, 2025
e57d6fa
feat(TS-31): 날짜 설정 모드 추가 (#100)
surra7 Jan 10, 2025
9ba4e1a
feat(TS-29): 제한 시간 기능 추가 (#99)
jeewonMoon Jan 11, 2025
be5b683
fix(TS-39): 새로고침 시 page not found 에러 해결
jeewonMoon Jan 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ module.exports = {
"semi": ["error", "always"],
"no-duplicate-imports": "error",
"no-console": ["warn", { "allow": ["warn", "error", "info"] }],
"no-unused-vars": "warn",
"no-unused-vars": "off",
"no-multiple-empty-lines": "error"
},
}
5 changes: 5 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ jobs:
with:
node-version: '20'

- name: .env setting
run: |
echo "VITE_BASE_URL=${{secrets.VITE_BASE_URL}}" >> .env.production
echo "VITE_GTM_ID=${{secrets.VITE_GTM_ID}}" >> .env.production

- name: Install dependencies
run: npm ci

Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,8 @@ dist-ssr
*.njsproj
*.sln
*.sw?

.env*

# Local Netlify folder
.netlify
205 changes: 184 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,193 @@
# React + TypeScript + Vite
# Tutorial-Sejong

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
<div align="center">
<img width="50%" src="https://github.com/user-attachments/assets/b724bb30-bb52-4a03-8f5c-31d546cabfb8">
<br>
Tutorial-Sejong은 실제와 유사한 환경에서 수강 신청 연습할 수 있다면 많은 도움이 될 것 같아 만들게 된 서비스 입니다.
<br>
수강신청이 처음이거나 오랜만 또는 연습이 필요한 세종대 학우들을 위해 최대한 세종대학교 학사시스템 UI와 비슷하게 제작했습니다.
</div>

Currently, two official plugins are available:
## 목차

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
<b> 1. [개요](#개요)</b>
<br>
<b> 2. [주요 기능](#주요-기능)</b>
<br>
<b> 3. [팀 소개](#팀-소개)</b>
<br>
<b> 4. [기술스택](#기술스택)</b>
<br>
<b> 5. [화면](#화면)</b>
<br>
<b> 6. [디렉토리 구조](#디렉토리-구조)</b>

## Expanding the ESLint configuration
## 개요

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
<b>개발 기간:</b> 2024.07~204.09
<br>
<b>배포 주소:</b> https://tutorial-sejong.com/
<br>
<b>프론트 깃허브 주소:</b> https://github.com/tutorial-sejong/cr-frontend
<br>
<b>백엔드 깃허브 주소:</b> https://github.com/tutorial-sejong/cr-backend

- Configure the top-level `parserOptions` property like this:
## 팀 소개

<table>
<thead>
<tr>
<th colspan="3">Tutorial-Sejong</th>
</tr>
</thead>
<tbody>
<tr>
<td>안정현</br> <a href="https://github.com/Anhye0n">깃허브</a><br/> </td>
<td>오지현</br> <a href="https://github.com/zhy2on">깃허브</a><br/> </td>
<td>문지원</br> <a href="https://github.com/jeewonMoon">깃허브</a><br/> </td>
</tr>
</tbody>
</table>

## 주요 기능

### 💡2024년 2학기 시간표 검색

- 해당 학기에 맞는 시간표로 업데이트 됩니다.

### 💡관심 과목 담기

### 💡수강신청

- 신청 시 10% 확률로 수강 여석이 없을 수 있습니다.
- 시작 후 35초가 지나면 모든 과목의 수강 여석이 마감됩니다.

## 기술스택

### 프론트엔드

<img src="https://img.shields.io/badge/vite-646CFF?style=for-the-badge&logo=vite&logoColor=white"> <img src="https://img.shields.io/badge/react-61DAFB?style=for-the-badge&logo=react&logoColor=black"> <img src="https://img.shields.io/badge/typescript-3178C6?style=for-the-badge&logo=typescript&logoColor=white"> <img src="https://img.shields.io/badge/styledcomponents-DB7093?style=for-the-badge&logo=styledcomponents&logoColor=white">
<img src="https://img.shields.io/badge/reduxtoolkit-764ABC?style=for-the-badge&logo=redux&logoColor=white"> <img src="https://img.shields.io/badge/githubactions-2088FF?style=for-the-badge&logo=githubactions&logoColor=white">

### 백엔드

<img src="https://img.shields.io/badge/java-007396?style=for-the-badge&logo=java&logoColor=white">
<img src="https://img.shields.io/badge/spring boot-6DB33F?style=for-the-badge&logo=spring boot&logoColor=white">
<img src="https://img.shields.io/badge/spring security-6DB33F?style=for-the-badge&logo=Spring Security&logoColor=white"> <img src="https://img.shields.io/badge/MariaDB-003545?style=for-the-badge&logo=mariadb&logoColor=white" />

### 협업 툴

<img src="https://img.shields.io/badge/github-181717?style=for-the-badge&logo=github&logoColor=white"> <img src="https://img.shields.io/badge/notion-000000?style=for-the-badge&logo=Notion&logoColor=white"> <img src="https://img.shields.io/badge/jira-0052CC?style=for-the-badge&logo=jira&logoColor=white">

## 화면

<details>
<summary>화면 접기/펼치기</summary>
<div markdown="1">

### 로그인

<img src="https://github.com/user-attachments/assets/baba38ff-0306-441f-83bd-0bf1e4810b0d">
- 회원가입 없이 임의 학번으로 로그인
<br>
- 동일한 학번과 비밀번호로 접속 시 관심과목 등 데이터 유지

### 시간표 검색

<img src="https://github.com/user-attachments/assets/20b5eee1-a3a1-436b-8e21-6ef737530e5a">

### 관심과목 담기

<img src="https://github.com/user-attachments/assets/9725af7c-c3a2-4489-9ad5-b50efc428e23">

### 수강신청

<img src="https://github.com/user-attachments/assets/da3a3709-5bd7-48a4-ab59-4bdcb406d048">
- 헤더의 시간에 맞춰 시작
<br>
- 시작 버튼을 눌러야 검색 가능
<img src="https://github.com/user-attachments/assets/ff47df6e-ec37-4923-b854-c7f5bacbd341">
- 랜덤으로 매크로 방지 이미지 생성
<img src="https://github.com/user-attachments/assets/285808f2-102b-491a-8aea-75cfe88171c7">
- 시작 버튼을 누르고 35초가 지났거나 10%의 확률로 실패
<img src="https://github.com/user-attachments/assets/a36c196a-acc1-47b5-8d8a-7e75d38e60c5">
- 확인 버튼 누를 시 수강 신청 실패로 간주, 새로고침
</div>
</details>
<br>

## 디렉토리 구조

```js
export default {
// other rules...
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
}
```
cs-frontend
├─ .eslintrc.cjs : lint 규칙
├─ .prettierrc : prettier 설정
├─ index.html
├─ package-lock.json
├─ package.json
├─ README.md
├─ src
│ ├─ apis
│ │ ├─ api : api 요청/응답 코드 폴더
│ │ │ ├─ auth.ts : 로그인 및 인증 관련 코드
│ │ │ └─ course.ts : 강의 및 수강신청 관련 코드
│ │ └─ utils : 인스턴스 / 공통 함수 폴더
│ ├─ App.tsx
│ ├─ assets
│ │ ├─ data
│ │ │ └─ filter.ts : 필터 옵션 데이터
│ │ ├─ img : 아이콘이나 로고 등 필요한 이미지 폴더
│ │ └─ types : 자주 쓰이는 타입 분리 폴더
│ ├─ components
│ │ ├─ common : 여러 곳에서 쓰이는 컴포넌트 폴더
│ │ │ ├─ FilterButton.tsx : 검색, 조회 등 필터 적용 버튼
│ │ │ ├─ FilterInput.tsx
│ │ │ ├─ Modal
│ │ │ │ ├─ handlers
│ │ │ │ │ └─ handler.tsx
│ │ │ │ ├─ AntiMacroCodeModal.tsx : 매크로 모달
│ │ │ │ ├─ EnrollmentInfoModal.tsx : 수강인원 등 강의 정보 모달
│ │ │ │ ├─ ErrorModal.tsx
│ │ │ │ ├─ InfoModal.tsx : 수강신청 모달
│ │ │ │ ├─ LoadingModal.tsx
│ │ │ │ └─ WaitingModal.tsx : 접속 대기 모달
│ │ │ ├─ SelectBox.tsx : 필터 드롭다운
│ │ │ └─ Table : 강의 목록 테이블
│ │ ├─ CourseRegister : 수강신청 탭
│ │ ├─ DeleteAccount
│ │ ├─ Header
│ │ │ ├─ ...
│ │ │ └─ TopNav.tsx : 타이틀
│ │ ├─ LectureList : 시간표 검색 탭
│ │ ├─ LoginForm
│ │ ├─ Menubar : 사이드바
│ │ ├─ ProtectedRoute.tsx : 사용자 인증 여부에 따른 접근 제한
│ │ ├─ TabMenu
│ │ └─ Wishlist : 관심과목 탭
│ ├─ custom.d.ts : svg 관련 설정 파일
│ ├─ main.tsx
│ ├─ pages
│ │ ├─ DeleteAccount.tsx
│ │ ├─ index
│ │ │ ├─ Home.tsx
│ │ │ ├─ Login.tsx
│ │ │ └─ NotFound.tsx : 에러 페이지
│ │ └─ Maintenance.tsx : 리뉴얼 중 페이지
│ ├─ store : 리덕스 툴킷 관련 폴더
│ │ ├─ hooks
│ │ │ └─ index.ts
│ │ ├─ modules
│ │ │ ├─ ...
│ │ │ └─ errorSlice.ts : 에러 모달에 띄울 정보 저장
│ │ └─ store.ts
│ ├─ styles : 공통 스타일
│ ├─ utils
│ │ ├─ randomUtils.ts : 랜덤 학번 및 숫자 생성
│ │ └─ scrollToTop.ts : 페이지 이동 시 스크롤 초기화
│ └─ vite-env.d.ts
├─ tsconfig.app.json
├─ tsconfig.json
├─ tsconfig.node.json
└─ vite.config.ts

- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
```
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>수강신청</title>
<title>Tutorial Sejong</title>
</head>
<body>
<div id="root"></div>
Expand Down
8 changes: 8 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[build]
command = "npm run build"
publish = "dist"

[[redirects]]
from = "/*"
to = "/index.html"
status = 200
Loading
Loading