Skip to content

Repository files navigation

StudentWatch

Swift UIKit iOS | iPadOS License: MIT

StudentWatch (shipped under the display name E-Monitor) is an iPad and iPhone app for exam invigilation. A single screen lays out 16 desks with two seats each, so a proctor can give a different amount of time to any of 32 students, watch every countdown at a glance, and get an alert the moment a student's time runs out. It is aimed at teachers and exam proctors who run individually timed or accommodated exams in one room. The on-screen interface is in Turkish, and the app is at the development stage.

Features

  • Individual countdown timers for 32 students: enter the exam length in minutes and the label counts down live
  • Remaining time for every student visible at a glance
  • Alert when a student's time is up, after which that seat resets to idle
  • Per-student reset button to stop and clear a running timer
  • 16 tables of two seats, all visible on one iPad screen, with scrolling on phones, smaller iPads and narrow windows
  • Input validation (whole minutes from 1 to 1440) and deadline-based countdowns that stay correct after time in the background; timers live in memory and do not survive app termination

Tech stack

Layer What is used
Language / UI Swift 5.0, UIKit (programmatic views and Auto Layout, only LaunchScreen.storyboard)
Timing and alerts Timer.scheduledTimer, UIAlertController
Assets SF Symbols (studentdesk, arrow.counterclockwise) and asset-catalog colour sets
Dependencies None (no CocoaPods, Carthage or Swift Package Manager packages)

Getting started

Prerequisites

  • macOS with Xcode 27 or later
  • iOS or iPadOS 15.0 or later on a simulator or device (test targets require iOS 17 or later)

Installation

  1. Clone the repository and open the project.

    git clone https://github.com/CanDuru4/student-watch.git
    open StudentWatch/StudentWatch.xcodeproj
  2. Select the shared StudentWatch scheme and an iPad or iPhone simulator, or a connected device.

  3. For a device, under Signing & Capabilities replace the checked-in development team with your own and change the bundle identifier (com.CanDuru.StudentWatch) to one you own.

  4. Run (⌘R).

No API keys, .env file or environment variables are required; the app is entirely offline and stores nothing outside the running process.

Project structure

StudentWatch/
├── AppDelegate.swift              App lifecycle, scene configuration
├── SceneDelegate.swift            Builds the window, sets the classroom screen as root
├── ClassOneViewController.swift   Classroom screen: 32 timers, layout, actions
├── CountdownTime.swift            Minute validation and deadline-based remaining time
├── Assets.xcassets/               App icon and the AppColor1-3 colour sets
├── Base.lproj/LaunchScreen.storyboard
└── Info.plist
StudentWatch.xcodeproj/            Xcode project to open
StudentWatchTests/                 XCTest unit tests for countdown logic and layout
StudentWatchUITests/               XCUITest input, countdown and rotation flow
Logo/                              E-Monitor logo files and brand board
docs/assets/                       README images
CHANGELOG.md                       Version history

Testing

Run the StudentWatch scheme's tests from Xcode (⌘U). Unit tests cover minute validation, deadline-based countdowns across suspension, and the classroom layout; the UI test covers invalid input, a running countdown and rotation. There is no CI.

Screenshots

StudentWatch classroom screen on iPad

License

MIT. See LICENSE.

Author

Can Duru — canduru.net

About

iPad and iPhone app for exam proctors to run 32 individual countdown timers: Swift, UIKit

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages