ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기JohnHasmie/manajemen-sekolah-vue
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
KamilEdu Web — Vue 3 port of the Flutter mobile app
Vue 3 + Vite + TypeScript + Tailwind CSS + Pinia web app that mirrors the
KamilEdu school-management Flutter app.
The Flutter codebase organizes screens by feature, with admin / teacher /
parent / staff variants of each feature. This Vue port follows the same
rule — satu implementasi, tiga role (one implementation, three role
consumers). Shared components live in src/components/; views are
grouped by role under src/views/.
Current state: foundation + login flow complete. The login screen
(Frame A from the Flutter design) supports:README 전문 보기 ↗Vue 3 + Vite + TypeScript + Tailwind CSS + Pinia web app that mirrors the KamilEdu school-management Flutter app.
| Concern | Choice |
|---|---|
| Framework | Vue 3 (Composition API, <script setup>) |
| Build tool | Vite |
| Language | TypeScript (strict) |
| Styling | Tailwind CSS 3 + custom design tokens |
| State | Pinia + pinia-plugin-persistedstate |
| Routing | Vue Router 4 |
| HTTP | axios (with Sanctum + X-School-ID interceptors) |
| i18n | vue-i18n (id default, en fallback) |
| Font | Poppins (@fontsource/poppins) |
# 1. Install
npm install
# 2. Configure
cp .env.example .env.local
# edit VITE_API_URL and VITE_AI_API_URL to point at your Laravel backends
# 3. Run dev server
npm run dev # → http://localhost:5173
# 4. Build for production
npm run build # → dist/
npm run preview # serve dist locally for smoke test
The Flutter codebase organizes screens by feature, with admin / teacher /
parent / staff variants of each feature. This Vue port follows the same
rule — satu implementasi, tiga role (one implementation, three role
consumers). Shared components live in src/components/; views are
grouped by role under src/views/.
Current state: foundation + login flow complete. The login screen (Frame A from the Flutter design) supports:
Dashboards for admin / teacher / parent / staff are currently stubbed by
RoleHomeStub.vue. Real implementations land per the task list — see
CLAUDE.md for the working contract.
web-vue/
├── index.html
├── package.json
├── tailwind.config.ts # role colors, slate, AppSpacing tokens
├── tsconfig.app.json # @/ alias → ./src
├── vite.config.ts
├── env.d.ts
├── .env.example
├── CLAUDE.md # working contract (read this first)
└── src/
├── main.ts # bootstrap (Pinia + Router + Poppins + Tailwind)
├── App.vue # rehydrates auth on mount
├── style.css # Tailwind imports + global resets
├── router/
│ └── index.ts # role-aware guard + redirects
├── stores/
│ └── auth.ts # Pinia store mirroring Flutter AuthState
├── services/
│ └── auth.service.ts # /auth/* endpoint wrappers
├── lib/
│ ├── http.ts # axios instances + interceptors
│ └── storage.ts # localStorage wrapper
├── types/
│ ├── api.ts # Laravel envelope types
│ └── auth.ts # AuthStep, User, Role, School
├── composables/
│ └── useRoleColor.ts # ColorUtils.getRoleColor equivalent
├── components/
│ └── ui/
│ ├── Modal.vue
│ └── Toast.vue
└── views/
├── RoleHomeStub.vue # placeholder dashboard
└── auth/
├── LoginView.vue
└── components/
├── BrandBand.vue
├── FormCard.vue
├── LoginForm.vue
├── OtpForm.vue
├── SchoolPicker.vue
├── RolePicker.vue
├── ForgotPasswordModal.vue
└── HelpRequestModal.vue
Mirrors lib/core/utils/color_utils.dart:
| Token | Hex | Role |
|---|---|---|
bg-role-admin | #1E3A8A | Admin (navy) |
bg-role-teacher | #0D9488 | Guru / Wali Kelas (teal) |
bg-role-parent | #7C3AED | Wali Murid (violet) |
bg-role-staff | #B45309 | Staf (amber) |
bg-brand | #4F46E5 | Brand primary (indigo) |
Soft variants (bg-role-*-soft) are used for chip/badge backgrounds.
Use the useRoleColor(role) composable instead of hard-coding.
The app talks to two backends from the Flutter README:
VITE_API_URL. All requests carry
Authorization: Bearer <token> and X-School-ID: <id>.VITE_AI_API_URL. Same auth, separate base URL.Both are wired in src/lib/http.ts via api and aiApi instances.
Response envelope:
{ "success": true, "data": ..., "message": "..." }
extractData() unwraps the envelope; errors throw with the Indonesian
message from the backend.
Backend uses Pending / Approved / Rejected; UI shows
Menunggu / Disetujui / Ditolak. Use mapStatus() from
useRoleColor.ts at the display boundary.
| Flutter (Dart) | Vue equivalent |
|---|---|
lib/features/auth/.../login_screen.dart | src/views/auth/LoginView.vue |
AuthController + AuthState | src/stores/auth.ts (Pinia) |
auth_service.dart | src/services/auth.service.ts |
dio_client.dart | src/lib/http.ts |
color_utils.dart → getRoleColor | src/composables/useRoleColor.ts |
snackbar_utils.dart → showError/showSuccess | src/components/ui/Toast.vue |
AppBottomSheet / AppEditBottomSheet | src/components/ui/Modal.vue (sheet on mobile breakpoint) |
AppNavigator.push / pop | useRouter() from vue-router |
See CLAUDE.md for the full working contract.