
A final college project written in Swift using Xcode and SwiftData.
Description: an iPad app application featuring a specialized keyboard designed to teach reading using the LIAM (ליע"ם) method, tailored for children and adults with special needs and communication difficulties.
Note
Includes real-time auditory feedback, image-based writing exercises, and progress tracking capabilities.

Collaborators | |
@ElenaChes | @RoeiHarfi |
![]() |
![]() |
App's "main", loads the DB and the app itself.
A screen selector.
- Displays the relevant screen according to
GlobalVars.screens
state.
Main screen's top line.
- Has the textbox and audio button.
- Displays image and confirm buttun if in image mode.
Main screen's keyboard.
- Allows typing in the top line's textbox.
- Switches between vowels (nikkud) according to
GlovalVars.board
.
Settings screen.
- Changing logged in student.
- Selecting an image for image mode.
- Changing app's color theme.
- Logging in as a teacher.
Teacher's screen.
- Adding/renaming/deleting student users.
- Opening/closing boards for students.
- Access to statistics screen & to images screen.
Statistics screen.
- Tables and graphs with data of student users.
Images screen.
- Adding new images, changing custom images' descriptions, deleting them.
Note
The app has a built in database of images with set descriptions, these images can't be changed or removed by the user
- Components used in the main screen.
- Components used in the settings, teacher, settings and images screens.
Tip
[something]View.swift
- The various screens the app has.
[something]Presets.swift
- The various components the app has.
The backend of the app, has two classes:
GlobalVars
- A singleton class storing all the global variables and backend functions, such as:screen
: dictates what screen to display (main, settings, teacher, stats, images, blank).colorSet
: used color theme (0 to 3).board
: current vowel board (0 to 5).inputText
: text in the main screen's textbox.image
: currently selected image in image mode (will be displayed on the main screen top line).imageZoom
: shows the selected image on the entire screen.
StaticData
- Static variables that don't change throughout the app's usage, such as the letters, vowels, color codes and built in image database.
SwiftData schema for a single student user:
student
: user's name.stats
: array of structs holding daily data such as total words typed, correct words, total letters that should've been typed and total typos for that day.boards
: aray of booleans indicating which boards are open/closed for the specific user.loggedIn
: whether the uses is the one currently logged in. Note: only one user can have the variable set to true at any given moment.colorSet
: user's selected color theme.
SwiftData schema for the entire custom images storage. Stores 6 arrays of image data, one per each board.
Note
All the data stored in the app is local, and it can only access data of users who use the iPad it's installed on.
Custom recordings for the "עיצור" board (board=4), used instead of the built in AVSpeechSynthesizer.
Generic aid functions or class extensions.
Stores the built in image database, vowels images, and app's icon.
App's unit and integration tests, primarily in acckpUITests.swift
.
Important
To run tests the simulator has to be logged in with a user that has access to all boards, and computer's typing language has to be on English.