PyWhiz is an interactive learning platform designed to help students learn Python programming in a practical and structured way. Utilizing System Thinking, User-Centered Design (UCD), and UI/UX Design, PyWhiz integrates elements such as learning videos, interactive quizzes, and progress tracking to create a comprehensive learning experience.
-
User Authentication
- Users can sign up and log in using their email and password via Firebase Authentication.
- The system generates secure tokens to protect user data.
-
Access to Learning Videos
- Each module is equipped with engaging and structured learning videos categorized by difficulty level (Beginner, Intermediate, Expert).
- Users can play videos, view descriptions, and track video completion.
-
Interactive Quizzes
- After completing videos in a module, users can take interactive quizzes to assess their understanding.
-
Progress Tracking
- The system tracks the number of videos watched and displays completed modules.
- User progress is synchronized in real-time with the database.
-
Profile Updates
- Users can easily update their names and profile information.
-
Responsive Interface
- PyWhiz is built using React Native, ensuring support for mobile, tablet, and desktop devices.
Component | Technology |
---|---|
Frontend | React Native (TypeScript) |
Backend | Firebase (Firestore, Authentication) |
App Hosting | Expo |
Website Hosting | Vercel |
PyWhiz employs a System Thinking approach to integrate the following components:
- Frontend: Provides a responsive and intuitive user interface.
- Backend: Manages business logic, user authentication, and data handling.
- Database: Firebase Firestore is used to store user information, quiz results, and learning progress.
- The frontend requests module data from the backend.
- The backend processes the request and retrieves data from the database.
- Quiz answers are sent to the backend.
- The backend updates the progress in the database.
- Updated progress is displayed on the frontend.
- Profile data is sent from the frontend to the backend.
- The backend updates the database.
- Confirmation of updates is sent back to the frontend.
-
Idea and Concept
- Surveys were conducted to understand user needs.
- Resulted in user workflows and navigation concepts for PyWhiz.
-
Environment Setup
- Development environment was set up using React Native, Firebase, and Expo.
-
React Native Implementation
- Built the frontend for module lists, learning videos, interactive quizzes, and user profiles.
- Integrated the backend using Firebase Authentication and Firestore.
-
Testing & Improvements
- Comprehensive testing ensured the app operates optimally.
- Addressed issues with responsiveness, feature validation, and data load times.
-
Documentation
- The development process was documented, including UML diagrams and evaluation results.
- User authentication via Firebase Authentication.
- Access to a categorized list of learning modules.
- Video playback within each module.
- Interactive quizzes with saved scores.
- Learning progress tracking.
- User profile updates.
- Responsiveness across various devices.
- Data loading times under 3 seconds.
- User data security.
- 99.9% application uptime.
- Intuitive navigation.
- Clone the repository:
git clone https://github.com/jasonjahja/PyWhiz_App.git
- Install dependencies:
npm install
- Start the application:
npx expo start
- Access the application on your device via
- Expo Go
- Android or iOS emulator
Prepared by: Jason Jahja (18222116) Anindita Widya Santoso (18222128)