Skip to content

Repository files navigation

PC Optimizer

한국어 · English · 日本語 · 中文

Windows 전용 PC 최적화 데스크톱 애플리케이션


프로덕트 설명

PC Optimizer는 Windows PC의 성능을 실시간으로 모니터링하고 최적화하는 데스크톱 애플리케이션입니다. Electron + Vite + React 18 기반의 단일 창(single-window) 앱으로, 좌측 메뉴에서 기능 패널을 전환하며 사용합니다.

  • 실시간 리소스 모니터링 — CPU · 메모리 · 디스크 · 이더넷 · Wi‑Fi · GPU를 2초 주기로 수집해 차트로 표시합니다. GPU는 온도를 보고하는 장치면 온도를, 그렇지 않은 내장 GPU면 사용률을 보여줍니다.
  • 대상별 최적화 — 모니터링 중인 각 구성요소를 개별적으로 최적화합니다.
  • Windows Boost / Game Mode — ON/OFF 토글 한 번으로 즉시 적용·해제합니다.
  • Sound Boost — 볼륨 증폭과 10밴드 EQ를 제공하며, Equalizer APO를 앱에서 직접 내려받아 설치·연동합니다.
  • Fast Ping 버튼 — 우측 하단 번개 버튼을 누르면 일괄 최적화 → 일괄 가속화 → 핑 최적화를 순서대로 모두 실행합니다.
  • Delta Force Cleaner — 게임 로그·캐시를 정리합니다.
  • Updateswinget으로 설치된 소프트웨어의 실제 업그레이드 가능 여부를 확인하고 업데이트합니다.

두 가지 설계 원칙

1. 최적화 기능은 사용자 권한만으로 동작합니다. Smart Optimization · Windows Boost · Game Mode · Fast Ping은 HKCU 레지스트리, 사용자 TEMP 폴더, powercfg만 사용합니다. 관리자 권한이 필요한 동작(HKLM 쓰기, 서비스 제어, netsh 전역 튜닝, defrag/chkdsk/DISM)은 코드에서 전부 제거했습니다. 레지스트리 쓰기는 HKCU 전용이며, HKLM은 설치된 소프트웨어 목록 조회 등 읽기에만 씁니다.

다만 앱 자체는 여전히 관리자 권한으로 실행됩니다 (requestedExecutionLevel: requireAdministrator). Updates 패널의 드라이버 업데이트pnputil /update-driver를 호출하는데, 이 명령만은 승격이 필수이기 때문입니다.

2. OFF는 "Windows 기본값"이 아니라 "켜기 직전 값"으로 되돌립니다. 토글을 켜기 전에 건드릴 레지스트리 값과 전원 계획을 스냅샷으로 찍어 파일에 저장하고, OFF에서 그 값을 그대로 복원합니다. 하드코딩된 기본값을 써 넣으면, 원래 고성능 전원 계획을 쓰던 사용자가 ON→OFF 했을 때 균형 조정으로 바뀌어 버립니다 — 켜기 전엔 없던 설정을 OFF가 만들어내는 셈입니다. 켜기 전에 존재하지 않던 값은 복원 시 삭제하고, 백업에 실패한 값은 아예 건드리지 않습니다.

⚠️ 되돌릴 수 없는 동작: Windows Boost의 임시 파일 삭제와 DNS 캐시 플러시는 복원 대상이 아닙니다. 임시 파일 정리는 오래된 파일만 지우며, 앱이 시작된 뒤 생성됐거나 최근 1시간 내에 사용된 항목은 건너뜁니다.


기술 스택

영역 사용 기술
데스크톱 셸 Electron 28 (contextIsolation + sandbox 활성, nodeIntegration 비활성)
렌더러 React 18, React Router (HashRouter), Vite 5
시스템 정보 systeminformation, Windows 네이티브 명령 (WMI / typeperf / nvidia-smi 등)
레지스트리 winreg + reg CLI (HKCU 전용)
패키지 업데이트 winget (Windows Package Manager)
테스트 Vitest + React Testing Library (45개)
타입 검사 TypeScript (checkJs 점진 도입)
품질 도구 ESLint (react / react-hooks), Prettier — 경고 0
패키징 electron-builder (NSIS 인스톨러)

디렉토리 구조

Optimizer-Product/
├── electron/                       # Electron 백엔드 (메인 프로세스)
│   ├── main.js                     # 앱 진입점 · BrowserWindow · IPC 핸들러 등록
│   ├── preload.js                  # contextBridge로 렌더러에 안전한 API 노출
│   ├── launch.cjs                  # GUI 런처 (ELECTRON_RUN_AS_NODE 제거)
│   └── services/
│       ├── _exec.js                # 공용 프로세스 실행 유틸 (execAsync / timeout)
│       ├── cache.js                # 정적·동적 통계 캐시 (키별 TTL)
│       ├── systemStats.js          # 통합 시스템 통계 수집 (핫 패스)
│       ├── registrySnapshot.js     # 적용 직전 값 스냅샷 · 복원 (읽기 실패와 값 부재를 구분)
│       ├── optimizationState.js    # 토글 적용 여부 + 스냅샷 영속화
│       ├── gaming.js               # Game Mode 적용 / 해제
│       ├── deltaForceCleaner.js    # Windows Boost · 게임 로그 정리 · 임시 파일 정리
│       ├── fastPing.js             # 일괄 최적화 · 일괄 가속화 · 핑 최적화
│       ├── audio.js                # 사운드 부스트 / Equalizer APO 연동
│       ├── cpu.js · memory.js · disk.js · network.js · gpuOptimize.js
│       ├── updater.js · driver.js  # winget 소프트웨어 · 드라이버 업데이트
│       └── wingetParse.js          # winget 출력 파서 (순수 함수)
├── src/                            # React 프론트엔드 (렌더러)
│   ├── App.jsx                     # 라우터 · 로딩 · ErrorBoundary
│   ├── components/
│   │   ├── MainPage.jsx            # 좌측 메뉴 · 패널 컨테이너 · Fast Ping 버튼 · 진행률 토스트
│   │   ├── SmartOptimization.jsx   # 리소스 모니터 + 대상별 최적화
│   │   ├── WindowsBoost.jsx · GameMode.jsx     # ON/OFF 토글 패널
│   │   ├── SoundBoost.jsx          # 볼륨 · 10밴드 EQ · Equalizer APO
│   │   ├── DeltaForceCleaner.jsx · SoftwareUpdater.jsx
│   │   └── chart/drawChart.js      # Canvas 2D 차트 (순수 함수)
│   ├── hooks/
│   │   ├── useAppliedState.js      # 토글 상태 복원 (페이지 이동 · 앱 재시작 후에도 유지)
│   │   └── useOptimizationProgress.js  # 백엔드 단계별 진행률을 토스트로 중계
│   ├── styles/                     # 컴포넌트별 CSS + index.css (:root 디자인 토큰)
│   └── utils/errorHandler.js
├── test/                           # Vitest 단위 · 스모크 테스트
├── index.html                      # CSP · 진입 HTML
├── vite.config.js · vitest.config.js
├── tsconfig.json                   # checkJs 타입 검사 (noEmit)
├── electron-builder.yml            # NSIS 인스톨러 설정
└── package.json

기능 패널

앱은 MainPage 하나에서 좌측 메뉴로 아래 패널을 전환합니다.

메뉴 컴포넌트 설명
Smart Optimization SmartOptimization CPU / 메모리 / 디스크 / 이더넷 / Wi‑Fi / GPU 실시간 모니터링 + 대상별 최적화
Windows Boost WindowsBoost 임시 파일 정리 · 게임 모드 · Game DVR · 시각 효과 · 메모리 (ON/OFF 토글)
Sound Boost SoundBoost 볼륨 증폭 · 10밴드 EQ (Equalizer APO 자동 설치 · 연동)
Delta Force Cleaner DeltaForceCleaner 게임 로그 · 캐시 정리
Game Mode GameMode FPS · 마우스 가속 · 입력 반응속도 · 전원 계획 (ON/OFF 토글)
Updates SoftwareUpdater winget 기반 소프트웨어 업데이트 + 드라이버 목록 / 업데이트

우측 하단의 Fast Ping 버튼(번개 아이콘)은 어느 패널에서든 눌러 일괄 최적화 → 일괄 가속화 → 핑 최적화를 한 번에 실행합니다. 진행 상황은 좌측 하단 토스트에 백엔드의 실제 단계로 표시됩니다.


개발 / 빌드

npm install

# 개발
npm run dev          # Vite 개발 서버 (http://localhost:5173)
npm start            # 개발 서버 + Electron 동시 실행
npm run electron     # Electron만 실행 (dev 서버가 떠 있을 때)

# 빌드 / 배포
npm run build        # 렌더러 프로덕션 번들 (dist/)
npm run dist:win     # Windows NSIS 인스톨러 생성 (dist-installer/)

# 품질
npm run lint         # ESLint 검사
npm run lint:fix     # ESLint 자동 수정
npm run format       # Prettier 포매팅
npm test             # Vitest 단위 · 스모크 테스트
npm run typecheck    # tsc --noEmit (JSDoc + @ts-check 파일 타입 검사)

dist/, dist-installer/ 등 빌드 산출물은 저장소에 커밋하지 않습니다 (.gitignore 참고).


라이선스

MIT License. 자세한 내용은 LICENSE를 참고하세요.

About

Windows-only PC optimization desktop application. Built with Electron, Vite, and React 18 as a single-window application, it provides system resource monitoring and optimization for CPU, memory, disk, network, and GPU, along with sound boost and game mode features.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages