Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Student Performance Tracker

A React Native mobile application built with Expo that allows teachers to view student performance across different learning strands with competence level tracking.

๐ŸŽฏ Features

  • Class Performance Overview: View all students' performance organized by learning strands
  • Competence Level System: Four-level mastery key (BE, AE, ME, EE) with color-coded indicators
  • Progress Tracking: Visual progress bars showing work completion percentages
  • Search Functionality: Filter students by name across all strands
  • Responsive Design: Optimized for mobile devices with smooth navigation

๐Ÿ— Architecture

Competence Level System (Mastery Keys)

  • BE (Below Expectation) - Red - Needs significant support
  • AE (Approaching Expectation) - Yellow - Developing with some support needed
  • ME (Meeting Expectation) - Green - Consistently meets standards
  • EE (Exceeding Expectation) - Blue - Advanced mastery achieved

Learning Strands

  1. Letter Identification - Recognizing and identifying letters
  2. Letter Naming - Correctly naming letters when shown
  3. Letter Formation - Proper handwriting and letter construction
  4. Phonemic Awareness - Understanding letter sounds and phonics

๐Ÿš€ Quick Start

Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn
  • Expo app on an android phone
  • iOS Simulator / Android Emulator or physical device

Installation

##BACKEND

  1. Start the backend as per the instruction provided in https://github.com/Nyansapo-AI/fullstack-dev-takehome/tree/main.

  2. After this, follow the instructions below to run the frontend. The frontend is configured to automatically detect the host url of the computer running the application hence no need to tweak the frontend code.

  3. Clone the repository

git clone https://github.com/Daniel-Chacha/StudentPerformanceApp.git
cd StudentPerformanceApp
  1. Install dependencies
npm install
# or
yarn install
  1. Install Expo CLI globally (if not already installed)
npm install -g expo-cli
# or
npm install -g @expo/cli

Running the App

  1. Start the development server
npm start
# or
expo start

2.Run on physical device

  • Install Expo Go app from App Store/Google Play
  • Scan the QR code displayed in terminal/browser
  1. Run on specific platforms
# iOS Simulator
npm run ios
# or
expo start --ios

# Android Emulator
npm run android
# or
expo start --android

๐Ÿ› Project Structure

src/
โ”œโ”€โ”€ components/          # Reusable UI components
โ”‚   โ”œโ”€โ”€ MasteryKeyReference.js    # Competence level reference panel
โ”‚   โ”œโ”€โ”€ StrandCard.js             # Learning strand display
โ”‚   โ”œโ”€โ”€ StudentCard.js            # Individual student card
โ”‚   โ”œโ”€โ”€ ProgressBar.js            # Progress visualization
โ”‚   โ””โ”€โ”€ ClassInfo.js          #Show class details
โ”‚   โ””โ”€โ”€ CompetenceAnalysisComponent.js          #Compare performance of strands
โ”‚   โ””โ”€โ”€ StrandPerformance.js          #Show students performances in a given strand
โ”‚   โ””โ”€โ”€ StudentResults.js          #Show student results with capabilities to sort and filter 
โ”‚   โ””โ”€โ”€ buttons/          
           โ””โ”€โ”€ StudentResultsButton.js          #Reusable button  
โ”œโ”€โ”€ screens/             # Main application screens
โ”‚   โ”œโ”€โ”€ ClassOverviewScreen.js    # Class performance overview
โ”‚   โ””โ”€โ”€ HomeScreen.js   # Homepage
โ”œโ”€โ”€ utils/               # Utilities and constants
โ”‚   โ””โ”€โ”€ constants.js              # App constants and theme
โ””โ”€โ”€ styles/              # Global styles (if needed)
    โ””โ”€โ”€ globalStyles.js

๐ŸŽจ Design Decisions

Navigation

  • React Navigation v6: Stack navigator for smooth transitions
  • Deep Linking: Support for navigation with parameters
  • Header Customization: Branded headers with student names

UI/UX Design

  • Material Design Principles: Modern mobile interface patterns
  • Color-Coded System: Intuitive competence level identification
  • Progressive Disclosure: Overview โ†’ Detail information architecture
  • Responsive Layout: Adapts to different screen sizes

Performance Optimizations

  • Lazy Loading: Components render as needed
  • Optimized Lists: Efficient rendering of student lists
  • Smooth Animations: 60fps progress bar animations

๐Ÿ”ง Technical Stack

Core Technologies

  • React Native: Cross-platform mobile framework
  • Expo SDK: Development and deployment platform
  • React Navigation: Navigation library

Development Tools

  • Babel: JavaScript transpiler
  • Metro: React Native bundler
  • Expo CLI: Development toolchain

๐ŸŒ API Integration

Endpoints

  • GET /class_profile: Fetch class overview data
  • GET /students: Fetch detailed student information

Mock Data

The app includes comprehensive mock data for cases where actual data isn't available currently

  • Sample class with 5 students -Includes student metadata such as name, student id, age and gender.

Error Handling

  • Harmonious display of error message inacse data isn't available.

๐Ÿงช Testing Strategy

Manual Testing Checklist

  • App launches successfully
  • Home page displays successfully, allowing the user to select the grade.
  • Class overview displays all strands
  • Class Info. functionality works
  • Navigation to strand results works
  • Progress bars display correctly
  • Competence level colors match design

Device Testing

  • iOS Simulator
  • Android Emulator
  • Physical iOS device
  • Physical Android device

๐Ÿšจ Known Issues & Limitations

  1. API Integration: Incase of an error in the backend(json server), expo will display an error warning but the app won't crash. Charts and graphs won't be rendered. Please ensure the backend is running before running the app.
  2. Offline Support: No offline data caching implemented
  3. Push Notifications: Not implemented in current version
  4. Data Persistence: No local database storage

๐Ÿ”ฎ Future Enhancements

Short Term

  • Connect to actual backend API
  • Add pull-to-refresh functionality
  • Implement loading skeletons
  • Add unit tests

Long Term

  • Offline data synchronization
  • Export functionality (PDF reports)
  • Push notifications for progress updates
  • Advanced filtering and sorting options
  • Teacher authentication system
  • Actual Multi-class support

๐Ÿค Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ™‹โ€โ™‚๏ธ Support

For questions or support:

Happy Hunting

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages