ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Elearn Prepa: A Comprehensive Mobile Learning Platform for Exam Preparation
Elearn Prepa is a React Native mobile application that provides an interactive and personalized learning experience for students preparing for competitive exams. The platform offers a rich set of features including course content, quizzes, exercises, flashcards, and past exam papers, all accessible through an intuitive mobile interface.查看完整 README ↗Elearn Prepa is a React Native mobile application that provides an interactive and personalized learning experience for students preparing for competitive exams. The platform offers a rich set of features including course content, quizzes, exercises, flashcards, and past exam papers, all accessible through an intuitive mobile interface.
The application leverages modern mobile development technologies to deliver a seamless learning experience with features like real-time progress tracking, personalized learning paths, interactive quizzes with instant feedback, and offline content access. Built with Expo and React Native, it provides a native experience across iOS and Android platforms while maintaining a single codebase.
.
├── app/ # Main application screens and navigation
│ ├── (app)/ # Protected app routes requiring authentication
│ │ ├── (catalogue)/ # Shop and payment screens
│ │ ├── learn/ # Learning content and course screens
│ │ └── profile/ # User profile and settings
│ ├── (auth)/ # Authentication related screens
│ └── (callbacks)/ # Payment and external service callbacks
├── components/ # Reusable UI components
│ ├── shared/ # Shared components across screens
│ └── ui/ # Basic UI elements and primitives
├── contexts/ # React contexts for state management
├── hooks/ # Custom React hooks
├── lib/ # Core libraries and service integrations
├── services/ # Business logic and API services
├── types/ # TypeScript type definitions
└── utils/ # Utility functions and helpers
npm install -g expo-cli)# Clone the repository
git clone <repository-url>
cd elearn-prepa
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration
# Start the development server
npx expo start
// Configure Supabase authentication in lib/supabase.ts
const supabaseUrl = process.env.SUPABASE_URL
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY
const supabase = createClient(supabaseUrl, supabaseAnonKey, {
auth: {
storage: ExpoSecureStore,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
},
})
// Import necessary hooks and components
import { useAuth } from '@/contexts/auth'
import { useUserInfo } from '@/contexts/useUserInfo'
// Use authentication in your components
function MyComponent() {
const { user, signIn, signOut } = useAuth()
const { lastCourse, toDayXp } = useUserInfo()
// Component logic
}
import { useQuizContext } from '@/contexts/quizContext'
function QuizComponent() {
const {
currentQuestion,
handleAnswerSelect,
handleNextQuestion
} = useQuizContext()
return (
// Quiz UI implementation
)
}
import { useCourseProgress } from '@/hooks/useCourseProgress'
function CourseProgress({ courseId }) {
const { progress, markSectionAsComplete } = useCourseProgress(courseId)
// Progress tracking implementation
}
// Check if session exists
const { data: { session } } = await supabase.auth.getSession()
if (!session) {
// Redirect to login
}
try {
await initiatePayment(amount)
} catch (error) {
console.error('Payment error:', error)
// Handle specific error cases
}
The application follows a unidirectional data flow pattern with React Context for state management and SWR for data fetching.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Supabase │ │ React │ │ UI │
│ Database │◄────┤ Contexts │◄────┤ Components │
└──────────────┘ └──────────────┘ └──────────────┘
▲ ▲ ▲
│ │ │
│ │ │
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Services │ │ Hooks │ │ Actions │
│ │◄────┤ │◄────┤ │
└──────────────┘ └──────────────┘ └──────────────┘
Key interactions:
Cette application implémente un agent de mise à jour automatique qui gère les mises à jour OTA (Over-The-Air) via Expo Updates.
UpdatesContext (contexts/UpdatesContext.tsx)
UpdateBottomSheet (components/shared/UpdateBottomSheet.tsx)
UpdatesManager (components/shared/UpdatesManager.tsx)
L'agent est intégré dans la chaîne des providers de l'application :
<UpdatesProvider>
<UpdatesManager />
{/* Rest of the app */}
</UpdatesProvider>
L'agent utilise les paramètres suivants :
Updates.reloadAsync()Pour utiliser les mises à jour dans vos composants, utilisez le hook useAppUpdates :
import { useAppUpdates } from '@/hooks/useAppUpdates';
function SettingsScreen() {
const { hasUpdate, isChecking, checkNow, applyUpdate } = useAppUpdates();
return (
<TouchableOpacity
onPress={hasUpdate ? applyUpdate : checkNow}
disabled={isChecking}
>
<Text>{hasUpdate ? 'Appliquer la mise à jour' : 'Vérifier les mises à jour'}</Text>
</TouchableOpacity>
);
}
L'agent fonctionne sur iOS et Android et utilise la configuration Expo Updates déjà présente dans app.json :
{
"runtimeVersion": {
"policy": "appVersion"
},
"updates": {
"url": "https://u.expo.dev/7d5dd0db-20aa-4d48-8efe-e66031ebf960"
}
}
__DEV__) et dans Expo Go