HHS Library Mobile App Development
By David McAllister and Eric Cheng
The Homestead High School Library App is designed to provide a mobile interface that works alongside a stable backend database structure to provide users with information about available books, their holds, and their checkouts. Additionally, it implements a scanner that connects to web APIs in order to allow users to discover and hold books with their phone cameras. The app was developed in conjunction with Homestead High School's library to ensure our app would be useful in a real world situation.
This application was programmed entirely in Apple's Swift language. The backend was coded with a mix of MySQL and PHP.
- Robust backend relational database to store information
- Book barcode scanner using RESTful APIs to generate book information
- Well commented database access code
- Checkout with your phone for ease of access
- Intelligent keyword search algorithm to look for books
- Hold system that lets you reserve a book to pick up later
- Customized map with genre pins to identify book locations
- Bug reporting to enable continuous development
- Smart resource management to reduce database calls and memory leaks
- Facebook integration to allow for a social aspect to our application
- Backend: Integrating with the school's database manager, Destiny, was much more complicated than expected. We ended up hosting a parallel database that synced with the existing solution through RESTful APIs on a daily basis (code not included in this repository)
- New stack: This was the first major app development project either of us had engaged in, which entailed a lot of debugging and problem-solving associated with learning any new stack
- Approval: Getting administrative approval was a complex process. As a result, the code is under a shared non-commercial ownership between the school district and us, the developers.
- Marketing: Getting a student body of 2400 student on-board with a new tech solution was a large endeavor. Ultimately, we produced a sizzle-reel cinematic trailer that we distributed on snapchat and instagram, reaching over 1800 students. Video: https://youtu.be/bl76ojGNM3M
The following are the best ways to test HHS Library given your access to certain devices.
Mac OS Computer
Download XCode from the Mac App Store and create a free developer account on Apple's Developer Portal
- XCode is a large download so you can test HHS Library on your personal Apple device with TestFlight in the meantime.
Once you are done downloading XCode, consult the Installation and Use section of this ReadMe.
To view the code
-Mac OS -XCode -Alternative Swift IDE (i.e. AppCode for Mac OS, text editor like Atom or SublimeText on Windows)
To run the application on your computer
-Mac OS -XCode -Developer signing
Installation and Use
A step by step series of how to run our project assuming prerequisites are met.
- Open Xcode and select "Open another project..."
- Locate the submission folder and enter the MAD folder inside, clicking on the white MAD.xcworkspace file
- After clicking open, click on the uppermost blue MAD file. You may see some red errors.
- Change the provisioning profile to your own developer account.
- It may say “Failed to create provisioning profile.”
- Edit the bundle identifier by adding a number to the end and click “Try Again.”
- You can now view all the classes and storyboards that go into the application.
- [Make sure xcode is opening a simulator of a valid and modern iPhone.]
- To directly download the app onto your phone, plug your own phone into the computer and select your phone to download the app on your phone. You may have to approve the application on your iPhone.
- After the application opens, log in with school id “1234567” and password “test.”
- Feel free to browse the app! The scanner portion of the app only works on an actual phone where a camera can be accessed.
- You can log in with facebook within the Onboarding Pages or the Profile Page. Please use the following login information to see how our app uses facebook friend systems to enhance user experience.
- Email: firstname.lastname@example.org
Password: fblaJudgeLogin Onboarding Page On First Launch
Below is an example barcode to be used with the scanner.
You can also scan any book not found in the library to pull up information about it from online api's.
We encourage you to try this out with books around your house!
- If you ever run into any issues, submit a bug report at the bottom of the "My Books" page.
Database is a relational MySQL database running the InnoDB engine. It uses various foreign key checks to ensure the integrity of the data and eliminate potential errors in database calls. You can see our design schema here
This application is supported by a server side script, so any user just has to connect with their account (made with the library when they join the school)
- MySQL server hosted with bluehost.com
- PHP access code hosted with bluehost.com
- Swift code for UI and implementation
- CocoaPods for library dependency management
- Lottie by Airbnb for in-app animations
- Adobe Photoshop CC for app graphics
- XCode Integrated Development Environment
- Eric Cheng - Database Structure and Backend - Eric-Cf
- David McAllister - UI design and API functionality - mcallisterdavid
This project is licensed under the GNU Lesser General Public License v3.0 - see the LICENSE.md file for details
- Thanks to Stanford Mobile App Development course for iOS app development learning resources
- Thanks to Mr. Kuramoto, the San Mateo Library branch manager, for answering our questions about library operations
- Thanks to Mr. Shelby, former computer engineer, for giving us feedback on user testing
- Special thanks to Mrs. Amity Bateman for answering our questions on what features Homestead High School wanted most from a library app
- Book information and cover images powered by Google Books, labeled within the app consistent with their API usage policies
- Facebook logo used for application graphics with explicit permission from the Facebook Brand Resource Center
- Google logo used for application graphics in accordance with trademark usage guidelines available here
- The App Store, iOS, iPhone, iPad, XCode, and Swift are all registered trademarks of Apple Inc.
- Photo of Homestead High School cafeteria and horse statue provided by the Homestead High School Epitaph
- "Boxing day sale background" image designed by Freepik
- "Safety lock logo" image designed by Freepik
- "Colorful books pack" image designed by Freepik
- All other images and icons are completely original