$ show robertying/learnX
learnX is a React Native/Expo mobile application designed for Tsinghua University students to access the Web Learning platform (learn.tsinghua.edu.cn). It provides features such as SSO authentication, course management, assignment tracking, file handling, calendar synchronization, and course information sharing via the courseX platform. The app uses Redux for state management, React Navigation for routing, and React Native Paper for UI components, with TypeScript ensuring type safety. It includes background data synchronization and supports iOS, Android, macOS, and Windows (via WSA).
The LLM identified 5 files worth highlighting for reuse:
A reusable swipeable card component that implements action buttons (favorite, archive, hide) using react-native-gesture-handler and react-native-reanimated. It is self-contained, requiring only item data and action handlers as props, making it easily adaptable for any list-based UI.
A flexible list component that supports filtering, single/multiple selection, and drag-and-drop reordering. It encapsulates complex state management for list interactions, allowing reuse across different data types with minimal configuration.
A custom toast notification built on react-native-paper's Snackbar and enhanced with expo-haptics for tactile feedback. It provides a consistent, easy-to-use API for displaying temporary messages throughout the app.
A collection of utility functions for parsing HTML content from the Tsinghua Web Learning platform, extracting course information, notices, and assignments. These functions are isolated and solve specific parsing problems, making them adaptable for similar HTML scraping tasks.
A custom hook that integrates fuse.js for fuzzy searching. It handles the creation of a search index and provides a simple search function, enabling efficient fuzzy search capabilities in any component that needs to search through lists of items.