๋ฆฌ๋ฒ์ค 1999์ ๋ชจ๋ ์ ๋ณด๋ฅผ ํ๋์! ๊ฐ์ฑ ์๋ฎฌ๋ ์ด์ ๋ถํฐ ์บ๋ฆญํฐ ์ ๋ณด, ๊ฐ์ข ๊ฐ์ด๋๊น์ง ํ ๊ณณ์์ ๋ง๋๋ณด์ธ์.
๐ Live Demo: https://www.reverse1999-simulator.com
2025.02 ์์ ํ, ๊พธ์คํ ์ ๋ฐ์ดํธ ์ค
- ํ๋ก์ ํธ ์๊ฐ
- ์ฃผ์ ๊ธฐ๋ฅ
- ๊ธฐ์ ์คํ
- ์ํคํ ์ฒ
- ์์ํ๊ธฐ
- ์ฃผ์ ํ์ด์ง
- ์ฑ๋ฅ ์ต์ ํ
- ๊ธฐ์ฌํ๊ธฐ
๋ฒํด์ ์ฌํ๊ฐ๋ฐฉ์ ๋ชจ๋ฐ์ผ ๊ฒ์ "๋ฆฌ๋ฒ์ค 1999"์ ํฌ ๋ฉ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ๊ฒ์ ํ๋ ์ด์ด๋ค์ด ํ์ํ ๋ชจ๋ ์ ๋ณด์ ๋๊ตฌ๋ฅผ ํ ๊ณณ์์ ์ ๊ณตํ์ฌ ๋ ๋์ ๊ฒ์ ๊ฒฝํ์ ์ ์ฌํฉ๋๋ค.
- ํตํฉ๋ ์ ๋ณด ํ๋ธ: ํฉ์ด์ง ๊ฒ์ ์ ๋ณด๋ฅผ ํ ๊ณณ์ ๋ชจ์ ์ ๊ทผ์ฑ ํฅ์
- ์ค์ ๋๊ตฌ ์ ๊ณต: ๊ฐ์ฑ ์๋ฎฌ๋ ์ด์ , ๊ณ์ฐ๊ธฐ ๋ฑ ์ค์ฉ์ ์ธ ๋๊ตฌ ์ง์
- ๋ชจ๋ฐ์ผ ์ต์ ํ: PWA๋ก ๊ตฌํํ์ฌ ์ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต
- ์ปค๋ฎค๋ํฐ ๊ธฐ์ฌ: ์คํ์์ค๋ก ๊ณต๊ฐํ์ฌ ์ปค๋ฎค๋ํฐ์ ํจ๊ป ๋ฐ์
- ์ค์ ํ๋ฅ ๋ฐ์: ๊ฒ์๊ณผ ๋์ผํ ํ๋ฅ ์์คํ ๊ตฌํ
- ํผํฐ ์์คํ : 60ํ ํ์ ์์คํ ์๋ฒฝ ์ฌํ
- ํต๊ณ ๋ถ์: ๋ฝ๊ธฐ ๊ฒฐ๊ณผ ์ค์๊ฐ ๋ถ์ ๋ฐ ๊ธฐ๋ก
- ๋ฐฐ๋๋ณ ์๋ฎฌ๋ ์ด์ : ๋ชจ๋ ๊ฐ์ฑ ๋ฐฐ๋ ์ง์
- ์บ๋ฆญํฐ ๊ฐ์ด๋: 53๊ฐ ์บ๋ฆญํฐ ์์ธ ์ ๋ณด ๋ฐ ํ์ฉ๋ฒ
- ์คํจ ๊ฐค๋ฌ๋ฆฌ: 99๊ฐ ์บ๋ฆญํฐ ์คํจ ๋ชจ์
- ๊ณต๋ช & ์์ง ์ธํ : ์บ๋ฆญํฐ๋ณ ์ต์ ์ธํ ๊ฐ์ด๋
- ๊ด์(Euphoria) ๊ฐ์ด๋: 29๊ฐ ๊ด์ ์ ๋ณด ๋ฐ ํ๋ ๋ฐฉ๋ฒ
- ์ฌ์ดํ๋ธ ๊ฐ์ด๋: 81๊ฐ ์์ง ์์ดํ ์์ธ ์ ๋ณด
- ๋น๊ณ ๊ฒ์: ๋ฆฌ๋ฒ์ค 1999 ํ ๋ง ๋น๊ณ
- ์บ๋ฆญํฐ ํด์ฆ: ์บ๋ฆญํฐ ๋ง์ถ๊ธฐ ๊ฒ์
- ๊ฒฝ๋ก ํด์ฆ: ๊ฒ์ ์ง์ ํ ์คํธ
- ํ ์ถ์ฒ: AI ๊ธฐ๋ฐ ํ ์กฐํฉ ์ถ์ฒ
- ์ฑ์ฅ ๊ณ์ฐ๊ธฐ: ์บ๋ฆญํฐ ์ก์ฑ ๋น์ฉ ๊ณ์ฐ
- ์บ๋ฆฐ๋: ๊ฒ์ ์ด๋ฒคํธ ์ผ์ ๊ด๋ฆฌ
- ํ๊ธ ๊ฐ์ด๋: ํจ์จ์ ์ธ ์ฌํ ์ฌ์ฉ๋ฒ
- ํจํค์ง ์์ : ํ๊ธ ํจํค์ง ๊ฐ์ฑ๋น ๋ถ์
- ์ฌ๋ฃ ํ๋ฐ: ์ก์ฑ ์ฌ๋ฃ ํ๋ ๊ฐ์ด๋
- ๋น์์ ๊ณต์: 30๊ฐ ์ธต ๊ณต๋ต ๊ฐ์ด๋
- ๋ฏธ๋ ํต์ฐฐ: ์ด๋ฒคํธ ์ ๋ณด ๋ฐ ์์ธก
- ์ฒญ์ฌ์ง ์ธํ : ์ฅ๋น ์ต์ ํ ๊ฐ์ด๋
- Framework: Next.js 15.1.7 (App Router)
- UI Library: React 19.0.0
- Language: TypeScript 5.0
- Styling: Tailwind CSS 3.4.1, Sass
- Component Library: Radix UI
- Animation: Framer Motion 12.4.3
- Icons: Lucide React
- Package Manager: npm
- Linting: ESLint 9 + Prettier 3.5.3
- Testing: Jest 29.7.0 + Testing Library
- Build: Next.js Standalone Build
- PWA: next-pwa 5.6.0
- SEO: next-sitemap 4.2.3
- Image Optimization: Next.js Image Component
- Caching: Cloudtype Edge Caching
- Hosting: Cloudtype
- Domain: Custom Domain with SSL
- Analytics: Built-in Performance Monitoring
- CDN: Cloudflare CDN
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ โ โ โ
โ Client (PWA) โโโโโบโ Cloudflare CDN โโโโโบโ Static Files โ
โ โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ โ โ โ
โ React Components โ โ Next.js Runtime โ โ Build Artifacts โ
โ โ โ (Cloudtype) โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โโโ app/ # Next.js App Router
โ โโโ (24 pages) # ์ ์ ์์ฑ๋ ํ์ด์ง๋ค
โ โโโ [dynamic]/ # ๋์ ๋ผ์ฐํ
(396๊ฐ ์ ์ ์์ฑ)
โ โโโ globals.css # ์ ์ญ ์คํ์ผ
โโโ components/ # React ์ปดํฌ๋ํธ
โ โโโ ui/ # ์ฌ์ฌ์ฉ UI ์ปดํฌ๋ํธ (Radix ๊ธฐ๋ฐ)
โ โโโ [feature]/ # ๊ธฐ๋ฅ๋ณ ์ปดํฌ๋ํธ (21๊ฐ ๋ชจ๋)
โ โโโ modals/ # ๋ชจ๋ฌ ์ปดํฌ๋ํธ
โ โโโ etc/ # ๊ณตํต ์ ํธ๋ฆฌํฐ
โโโ data/ # ๊ฒ์ ๋ฐ์ดํฐ (์ ์ JSON/TS)
โโโ lib/ # ์ ํธ๋ฆฌํฐ ํจ์
โโโ public/ # ์ ์ ์์ฐ (์ด๋ฏธ์ง, ์์ด์ฝ)
- Node.js 18.0.0 ์ด์
- npm ๋๋ yarn
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/yourusername/reverse1999_gacha_simulation.git
cd reverse1999_gacha_simulation
# ์์กด์ฑ ์ค์น
npm install
# ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev# ํ๋ก๋์
๋น๋
npm run build
# ํ๋ก๋์
์๋ฒ ์คํ
npm run start
# ์ฝ๋ ํ์ง ๊ฒ์ฌ
npm run lint
npm run format| ํ์ด์ง | ์ค๋ช | ํน์ง |
|---|---|---|
| ํ | ๋ฉ์ธ ๋ค๋น๊ฒ์ด์ | 24๊ฐ ๊ธฐ๋ฅ ์ ๊ทผ์ |
| ๊ฐ์ฑ ์๋ฎฌ๋ ์ดํฐ | ์ค์๊ฐ ๊ฐ์ฑ ์๋ฎฌ๋ ์ด์ | ์ค์ ํ๋ฅ , ํผํฐ ์์คํ |
| ์บ๋ฆญํฐ ๊ฐ์ด๋ | 53๊ฐ ์บ๋ฆญํฐ ์์ธ ์ ๋ณด | SEO ์ต์ ํ, ๊ฐ๋ณ ํ์ด์ง |
| ์คํจ ๊ฐค๋ฌ๋ฆฌ | 99๊ฐ ์คํจ ๋ชจ์ | ์ด๋ฏธ์ง ์ต์ ํ, ๋ฐ์ํ |
| ๊ณต๋ช /์์ง ์ธํ | ์บ๋ฆญํฐ๋ณ ์ต์ ์ธํ | 82๊ฐ ์บ๋ฆญํฐ ์ง์ |
| ์ฌ์ดํ๋ธ ๊ฐ์ด๋ | 81๊ฐ ์์ง ์์ดํ | ์์ธ ์คํฏ, ํ๋ ๋ฐฉ๋ฒ |
| ๊ด์ ๊ฐ์ด๋ | 29๊ฐ ๊ด์ ์ ๋ณด | ์ถ์ ์ผ์ , ํน์ง ๋ถ์ |
- 396๊ฐ ํ์ด์ง ๋ชจ๋ ๋น๋ ํ์์ ์ ์ ์์ฑ
- Edge Request 95% ์ ๊ฐ: ๋์ ์ฌ์ดํธ๋งต ์ ๊ฑฐ
- ์์ ์ ์ ํ:
revalidate: false์ค์
// Next.js ์บ์ฑ ์ค์ (next.config.ts)
{
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, stale-while-revalidate=86400"
}
]
}
]
}- WebP ํฌ๋งท ์ฌ์ฉ์ผ๋ก ํ์ผ ํฌ๊ธฐ 50% ์ ์ฝ
- Next.js Image Component ํ์ฉํ ์ง์ฐ ๋ก๋ฉ
- ์ ์ํ ์ด๋ฏธ์ง ๋๋ฐ์ด์ค๋ณ ์ต์ ํฌ๊ธฐ ์ ๊ณต
- ํจํค์ง Import ์ต์ ํ: lucide-react, radix-ui ๋ฑ
- ์ฝ๋ ์คํ๋ฆฌํ : ๋ผ์ฐํธ๋ณ ์๋ ๋ถํ
- Tree Shaking: ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ
- Service Worker: ์คํ๋ผ์ธ ์บ์ฑ
- Pre-caching: ํต์ฌ ์์ฐ ์ฌ์ ์บ์ฑ
- Background Sync: ์คํ๋ผ์ธ ์ํ ๋๊ธฐํ
- ์ด ํ์ด์ง ์: 396๊ฐ (๋ชจ๋ ์ ์ ์์ฑ)
- ์ปดํฌ๋ํธ ์: 70๊ฐ+ (์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ํ ์ค๊ณ)
- ์ง์ ๋ฐ์ดํฐ: ์บ๋ฆญํฐ 150๊ฐ+, ์คํจ 99๊ฐ, ์์ง 81๊ฐ
- ๋ฒ๋ค ํฌ๊ธฐ: ํ๊ท 150KB (์ต์ ํ๋ ๋ก๋ฉ)
- ์ฑ๋ฅ ์งํ: Lighthouse 95+ ์ ์
- SEO: ์์ ํ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ
ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ณ ์ถ์ผ์๋ค๋ฉด:
- ์ด ์ ์ฅ์๋ฅผ Fork ํด์ฃผ์ธ์
- ์๋ก์ด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํ์ธ์ (
git checkout -b feature/amazing-feature) - ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํ์ธ์ (
git commit -m '๋๋ผ์ด ๊ธฐ๋ฅ ์ถ๊ฐ') - ๋ธ๋์น์ Push ํ์ธ์ (
git push origin feature/amazing-feature) - Pull Request๋ฅผ ์์ฑํ์ธ์
- ์ฝ๋ ์คํ์ผ: ESLint + Prettier ์ค์ ์ค์
- ์ปค๋ฐ ๋ฉ์์ง: ํ๊ตญ์ด๋ก ๋ช ํํ๊ฒ ์์ฑ
- ํ ์คํธ: ์๋ก์ด ๊ธฐ๋ฅ์ ํ ์คํธ ์ฝ๋ ํฌํจ
- ๋ฌธ์ํ: README ๋ฐ ์ฝ๋ ์ฃผ์ ์ ๋ฐ์ดํธ
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์คํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
- ๋ฆฌ๋ฒ์ค 1999 ๊ฐ๋ฐํ (bluepoch): ํ๋ฅญํ ๊ฒ์ ์ ์
- ์คํ์์ค ๊ธฐ์ฌ์๋ค: ์ฌ์ฉ๋ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์๋ค
- ๋ค์ํ ๊ณต๋ต๊ธ ์ ์ด์ฃผ์ ๋ถ๋ค: ๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค.
- ๋ฆฌ๋ฒ์ค 1999์ ์ ์ ๋ถ๋ค: ๊ฐ์ฌํฉ๋๋ค.
** ๋ฌธ์๋ [email protected]์ผ๋ก ๋ถํ๋๋ฆฝ๋๋ค. ** Made with โค๏ธ for Reverse 1999 Community
๐ฎ ์ฆ๊ฑฐ์ด ๊ฒ์ ๋์ธ์! | ๐ ๋ผ์ด๋ธ ์ฌ์ดํธ ๋ฐฉ๋ฌธํ๊ธฐ