Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 해당 파일을 복사해서 .env 를 만들고 실제 값을 채워주세요
# .env 는 커밋되지 않습니다 (.gitignore)

VITE_API_BASE_URL=# 백엔드 API 주소

VITE_APP_URL=# OAuth redirect_uri 조립에 사용하는 앱 주소

# Swagger 스펙(/api-docs) Basic 인증 헤더 - API 타입 자동 생성(pnpm generate:types)에 사용
# 값 생성: echo -n 'swagger계정:비밀번호' | base64 → "Basic <결과>"
SWAGGER_BASIC_AUTH="Basic <base64(user:password)>"
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ dist-ssr
*.sln
*.sw?

.env*
.env

/docs
123 changes: 63 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,73 +1,76 @@
# React + TypeScript + Vite
<div align="center">

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
# BOAZ 공식 홈페이지

Currently, two official plugins are available:
**국내 최초 빅데이터 동아리 BOAZ의 공식 홈페이지**
<br />

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
<img width="1200" height="630" alt="boaz-og" src="https://github.com/user-attachments/assets/55b80705-4850-451f-b7f0-bc3e3ae8592b" />

## React Compiler
🔗 Service link: https://www.bigdataboaz.com/

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
</div>

## Expanding the ESLint configuration
## Tech Stack

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
- **Framework**: React 19 + TypeScript
- **Build Tool**: Vite
- **Styling**: Vanilla Extract
- **Routing**: React Router v7
- **State Management**: TanStack Query
- **HTTP Client**: Axios
- **Linting**: ESLint, Prettier, Stylelint
- **Git Hooks**: Lefthook + Commitlint

```js
export default defineConfig([
globalIgnores(["dist"]),
{
files: ["**/*.{ts,tsx}"],
extends: [
// Other configs...
## Getting Started 🔥

// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
### Installation
```bash
pnpm install
```

### Development
```bash
pnpm dev
```

### Build
```bash
pnpm build
```

### Lint
```bash
pnpm lint # ESLint
pnpm lint:css # Stylelint
pnpm format # Prettier
```

### API 타입 생성
> Node.js를 사용하여 OpenAPI 3.0 및 3.1 스키마를 빠르게 TypeScript로 변환해주는 [OpenAPI TypeScript](https://github.com/openapi-ts/openapi-typescript) 라이브러리를 사용합니다.

// Other configs...
],
languageOptions: {
parserOptions: {
project: ["./tsconfig.node.json", "./tsconfig.app.json"],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
]);
```bash
pnpm generate:types
```

You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:

```js
// eslint.config.js
import reactX from "eslint-plugin-react-x";
import reactDom from "eslint-plugin-react-dom";

export default defineConfig([
globalIgnores(["dist"]),
{
files: ["**/*.{ts,tsx}"],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs["recommended-typescript"],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ["./tsconfig.node.json", "./tsconfig.app.json"],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
]);
## Project Structure
> FSD 아키텍처 layers를 적용했습니다
```
src/
├── app/ # 앱 설정 (라우팅, 프로바이더, 레이아웃)
├── pages/ # 페이지 컴포넌트
├── widgets/ # 위젯 (페이지 단위 조합 컴포넌트)
├── features/ # 기능 단위 모듈
├── entities/ # 엔티티 (도메인 모델)
└── shared/ # 공통 유틸, API, UI 컴포넌트
```

## Contributors 🌱

### 1기

| Profile | Name | GitHub | Role |
|---------|------|--------|------|
| <img src="https://github.com/yooncandooit.png" width="50" height="50" /> | yooncandooit | [@yooncandooit](https://github.com/yooncandooit) | Lead |
| <img src="https://github.com/onlyone130.png" width="50" height="50" /> | onlyone130 | [@onlyone130](https://github.com/onlyone130) | Member |
| <img src="https://github.com/ity0526.png" width="50" height="50" /> | ity0526 | [@ity0526](https://github.com/ity0526) | Member |
Binary file modified public/assets/images/activity/conference.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 72 additions & 0 deletions public/assets/images/footer/crycheesebuger-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 44 additions & 8 deletions public/assets/images/footer/hspace-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 39 additions & 14 deletions public/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -1466,6 +1466,13 @@
flex: 0 0 auto;
}

.landing-footer-logo-row {
display: flex;
align-items: center;
gap: 23px;
flex-wrap: wrap;
}

.landing-footer-heading {
margin: 0;
color: #000000;
Expand Down Expand Up @@ -2456,13 +2463,22 @@ <h2 class="section-title">함께 성장한 사람들의 목소리</h2>
<footer class="landing-footer">
<div class="landing-footer-desktop">
<section class="landing-footer-column">
<img
class="landing-footer-logo"
src="/assets/images/footer/hspace-logo.svg"
alt="BOAZ"
width="122"
height="18"
/>
<div class="landing-footer-logo-row">
<img
class="landing-footer-logo"
src="/assets/images/footer/hspace-logo.svg"
alt="BOAZ"
width="160"
height="23"
/>
<img
class="landing-footer-logo"
src="/assets/images/footer/crycheesebuger-logo.svg"
alt="크라이치즈버거"
width="115"
height="44"
/>
</div>
<a class="landing-footer-privacy-link" href="/privacy" target="_parent"
>개인정보처리방침</a
>
Expand Down Expand Up @@ -2548,13 +2564,22 @@ <h4 class="landing-footer-heading">Contact</h4>
</div>

<div class="landing-footer-mobile">
<img
class="landing-footer-logo"
src="/assets/images/footer/hspace-logo.svg"
alt="BOAZ"
width="122"
height="18"
/>
<div class="landing-footer-logo-row">
<img
class="landing-footer-logo"
src="/assets/images/footer/hspace-logo.svg"
alt="BOAZ"
width="160"
height="23"
/>
<img
class="landing-footer-logo"
src="/assets/images/footer/crycheesebuger-logo.svg"
alt="크라이치즈버거"
width="115"
height="44"
/>
</div>
<div class="landing-footer-contact">
<span class="landing-footer-contact-label">Contact</span>
<small class="landing-footer-email">boaz.bigdata@naver.com</small>
Expand Down
10 changes: 10 additions & 0 deletions redocly.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# openapi-typescript(내부 @redocly/openapi-core)가 원격 스펙을 가져올 때
# Swagger Basic 인증 헤더를 함께 보내기 위한 설정입니다.
# 실제 값은 .env의 SWAGGER_BASIC_AUTH 에서 읽어옵니다.

resolve:
http:
headers:
- matches: https://api.bigdataboaz.com/**
name: Authorization
envVariable: SWAGGER_BASIC_AUTH
Loading
Loading