ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
명지대 소프트웨어 아카데미(SAT) 과제 업로드 및 공지 사이트의 프론트엔드입니다. 학생은 공지사항/과제를 확인하고 과제를 제출하며, 관리자는 공지·과제를 등록하고 회원가입 승인, 회원 관리, 제출 현황을 관리합니다. • React 19 + Vite (Rolldown 기반 Vite 8) • react-router-dom 7 (BrowserRouter) • axios (공통 인스턴스 + 인터셉터) • 순수 CSS (프레임워크 없이 디자인 토큰 기반 커스텀 스타일) • JWT accessToken 방식. 로그인 성공 시 accessToken, memberId, role을 localStorage에 저장하고 `AuthREADME 전문 보기 ↗
명지대 소프트웨어 아카데미(SAT) 과제 업로드 및 공지 사이트의 프론트엔드입니다. 학생은 공지사항/과제를 확인하고 과제를 제출하며, 관리자는 공지·과제를 등록하고 회원가입 승인, 회원 관리, 제출 현황을 관리합니다.
src/
api/
axiosInstance.js # 공통 axios 인스턴스 (baseURL, 토큰 인터셉터, 에러 정규화)
authApi.js # 회원가입 / 로그인 / 로그아웃
memberApi.js # 내 정보 조회/수정, 비밀번호 변경, 회원 탈퇴
adminMemberApi.js # 관리자 - 전체 회원 조회/상세/권한 변경
noticeApi.js # 공지사항 CRUD
noticeAttachmentApi.js # 공지 첨부파일 업로드/다운로드(S3 presigned URL)
assignmentApi.js # 과제 CRUD, 제출/재제출/제출물 삭제
assignmentAttachmentApi.js # 과제 첨부파일 업로드/다운로드
adminSubmissionApi.js # 관리자 - 과제 제출 현황 조회
context/
AuthContext.jsx # 로그인 상태(user, accessToken) 전역 관리, login/logout/updateUser
components/
AppLayout.jsx / .css # 헤더 + 사이드바 + 콘텐츠를 감싸는 공통 레이아웃
Header.jsx / .css # 상단 헤더 (햄버거 버튼, 로고, 내 정보, 로그아웃)
Sidebar.jsx / .css # 좌측 메뉴 (햄버거 클릭 시 열리는 슬라이드 드로어)
BrandPanel.jsx / .css # 로그인/회원가입 화면 좌측 브랜딩 패널
ProtectedRoute.jsx # 로그인/권한(role) 여부에 따라 접근 제어하는 라우트 가드
pages/
LoginPage.jsx / SignupPage.jsx / AuthPage.css
DashboardPage.jsx / .css # 로그인 후 홈
NoticeListPage.jsx / NoticeDetailPage.jsx / NoticeWritePage.jsx
AssignmentListPage.jsx / AssignmentDetailPage.jsx / AssignmentWritePage.jsx
MyPage.jsx / .css # 마이페이지 (내 정보 수정, 비밀번호 변경, 회원 탈퇴)
AdminApprovalsPage.jsx / .css # 관리자 - 회원가입 승인
AdminMembersPage.jsx / .css # 관리자 - 전체 회원 관리(권한 변경)
AdminSubmissionsPage.jsx / .css # 관리자 - 과제 제출 현황
AdminWritePage.css # 공지/과제 작성 화면 공유 스타일
utils/
validators.js # API 명세서 필드 검증 규칙 (프론트 사전 검증용)
App.jsx # 라우팅 전체 정의
main.jsx / index.css
npm install
.env 파일에 백엔드 주소 설정
VITE_API_BASE_URL=http://<백엔드-서버-주소>:8080
npm run dev
npm run build
npm run preview
npm run lint
accessToken, memberId, role을 localStorage에 저장하고 AuthContext가 전역 상태로 관리합니다.axiosInstance.js가 요청마다 저장된 토큰을 헤더에 실어 보내고, 응답은 ApiResponse<T> 래퍼({ success, message, data })를 벗겨서 돌려주며 에러를 { status, message, raw } 형태로 정규화합니다.memberId와 GET /members/me의 id가 서로 다른 필드명이라, AuthContext.login()에서 id: userInfo.id ?? userInfo.memberId로 정규화해 어느 경로로 로그인 상태가 만들어지든 user.id를 일관되게 사용할 수 있게 했습니다.ProtectedRoute가 로그인 여부와 role(ADMIN/STUDENT)에 따라 페이지 접근을 제어합니다.| 경로 | 화면 | 접근 |
|---|---|---|
/signup, /login | 회원가입 / 로그인 | 비로그인 |
/ | 대시보드 | 로그인 사용자 |
/mypage | 마이페이지 | 로그인 사용자 |
/notices, /notices/:noticeId | 공지 목록 / 상세 | 로그인 사용자 |
/assignments, /assignments/:assignmentId | 과제 목록 / 상세(제출) | 로그인 사용자 |
/admin/approvals | 회원가입 승인 | ADMIN |
/admin/members | 회원 관리 | ADMIN |
/admin/submissions | 과제 제출 현황 | ADMIN |
/admin/notices/new, /admin/notices/:noticeId/edit | 공지 작성/수정 | ADMIN |
/admin/assignments/new, /admin/assignments/:assignmentId/edit | 과제 등록/수정 | ADMIN |
평소에는 사이드바가 화면 밖에 숨어 있다가, 헤더 좌측 햄버거 버튼을 누르면 드로어(slide-in)로 펼쳐집니다. 배경(backdrop) 클릭, 메뉴 항목 선택, Esc 키 중 어떤 방식으로도 닫히며, PC/모바일에 동일하게 적용됩니다.
request(JSON Blob) + files 파트로 구성된 multipart/form-data 요청으로, 다운로드는 백엔드에서 발급받은 S3 presigned URL로 진행합니다.SATLMS_API_명세_수정본.pdf(39개 엔드포인트) 기준으로 프론트 코드를 전수 대조했고, 아래 항목을 추가로 구현해 반영했습니다.
memberApi.js: 내 정보 수정, 비밀번호 변경, 회원 탈퇴adminMemberApi.js: 전체 회원 조회, 회원 상세 조회, 권한 변경assignmentApi.js: 제출물 전체 삭제 (deleteSubmission) — 기존 코드에 주석으로만 언급되고 실제 구현이 빠져 있던 부분MyPage), 관리자 회원 관리(AdminMembersPage) 신규 추가LoginPage.jsx의 상태 메시지 매핑 재확인.env의 VITE_API_BASE_URL을 운영 서버 주소로 교체 (현재 vercel.json 기준 Vercel 배포)