Building Up GEU One from Grounds Up - Graphic Era University App
The Inspiration
As a student at Graphic Era University, I’ve always been aware of the many resources and services available on campus. However, I noticed that many of these resources were not as accessible or easy to use as they could be. The idea of creating a centralized app that could make all of these resources easily accessible to students was an exciting challenge.
I wanted to create an app that would be designed specifically for our college’s students, with their needs and preferences in mind.
As I developed the app, I took into account the specific needs of the our campus, later added more campuses, separating them from one another. This ensured that students from both campuses could access the resources they needed in a seamless and efficient way.
I’m excited to see how the app will be received by students and how it will help to improve the overall college experience. By providing easy access to resources and services, I hope to create a more cohesive and user-friendly experience for Graphians.
The Design
I decided to build the app in Kotlin and follow a Material You theme, ensuring that the app would be both powerful and user-friendly.
In designing this App, I prioritized minimalism and simplicity, keeping the end-user in mind. The app’s theme offers a clean, modern look while ensuring ease of use and functionality. The minimalistic design reduces distractions, letting the essential content take center stage.
I opted for a serverless architecture, which eliminated the need for servers, ensuring privacy and efficiency. This design choice was crucial as it allowed for seamless updates and minimal maintenance requirements. I ensured that every design element and feature served a specific purpose, reducing clutter and enhancing the overall user experience.
In essence, the Graphic Era University app maintains a perfect balance of minimalism, simplicity, and privacy while ensuring an efficient and delightful user experience.
The Development
To build the app, I used a variety of tools and services. Here’s a closer look at the development process:
Feeds
To display feed updates from the Department’s website which is WordPress based, I initially used the sitemap generated by the WordPress website, for retrieving the list of feeds. However, I soon discovered that the website had a plugin wp-json
installed, which allowed for more efficient retrieval of posts. I updated the app to use the plugin to retrieve the posts and display them in right format. I later discovered the department sites of other campuses and incorporated them into the app.
Each post opens in its own WebView, which allows for easy reading. The posts listed are cached using SQLite Databse
for faster loading and offline access. The user is notified when a new post is available, see the Real-time Notifications section for the insights.
Resources
The resources section of the app provides access to various types of materials, including events, PDFs, and web pages. To ensure that resources were easy to access and update, I used a JSON hosting service npoint.io
which can be remotely updated. This service allowed me to create separate resource endpoints for each campus, making it easy to serve resources specific to each campus, that too completely serverless.
The resources can be of different types, including event, PDF, and webpage. Event types are based on caraousel. Used various libraries to handle displaying resources, such as the Glide library for displaying images and the WebView for web pages.
Notes
The app’s notes section is generated based on a tree-like structure, obtained from parsing a notes index file. Currently All the notes are stored and served from github. The script used to create the index file also generates a related thumbnail for each PDF file, and the content is served statically. The automation script for building the tool utilizes ImageMagick
for generating thumbnails from the PDF files, and for simplicity the thumbnail links are just the PDF file links with a .jpg
extension appended.
ERP
The app’s ERP section communicates with the university’s ERP system by directly making web requests to the ERP server, ensuring secure and direct communication. The official ERP has a CAPTCHA system, which is solved by the app using Google ML-Kit
to detect the text. The text detection may fail occasionally, in which case the CAPTCHA is refreshed. The user’s session is kept same always. Every time the user opens this section, it tries to log in, and if failed, the user is logged out, for instance, in case the password has changed.
The user attachments from the ERP are stored in the local storage, ensuring that they can be viewed at a later time without downloading again. Many View-Only sections were added in the ERP section, for user’s ease-of-use. It has been tried to mimic the original ERP as much as possible, for a seamless and comfortable experience.
Real-time Notifications
The app’s feature for posting new feed updates to users is designed using a serverless approach. The app runs a cron
job from Cloudflare Workers
, which checks for new posts on the university’s WordPress website every 2 minutes
for all campuses. If new posts are found, they are sent to users using Firebase Cloud Messaging (FCM). The FCM tokens and user categories are stored in a DynamoDB Database
, which is accessible via a Lambda Functions
endpoint serving the process, ensuring that new posts are delivered as soon as they are published.
Feedback
Feedback from users is collected in a serverless approach, using Google Sheets
and the Google Apps Script
. The app allows for anonymous feedback posting, and new feedback is added to the bottom of the list. The feedback section is designed using a serverless approach to ensure that the infrastructure is cost-effective and scalable.
Volunteer Uploads
Resources and Notes can be uploaded by volunteers, thanks to the app’s serverless design. When users upload resources, they have an optional user-assigned attribution name for recognition purposes. This works the same way as the feedback, just the difference being, there is an optional user assigned attribution name
for recognition purposes on their contribution.
Results
Future Development
I am committed to continuously improving the app and expanding its features. By remaining dedicated to improvement, I am confident that the app will continue to serve as a valuable resource for students at the University.
In addition to the internal development plans, I am excited to share that the app is available as an open-source project on GitHub at https://github.com/binbard/geu-one. Members of the community are encouraged to contribute bug reports, feature suggestions, and even pull requests. By working together, we aim to foster a collaborative environment, empowering students and developers to contribute to the platform.
Your feedback is highly appreciated and you are encouraged to submit any suggestions that could help make the platform even better.
Testing
This App has been in internal testing phase for the past 2 weeks, with 20+ active users. During this time, we have taken user feedback into account and have worked to improve the app’s functionality and performance. We have fixed bugs, added new features, and made several design changes to ensure that the app is user-friendly and easy to use.
We are excited to announce that the app is now ready for public release. We believe that the app will be a valuable resource for students at Graphic Era University, providing a centralized location for accessing resources, news, and updates.
Conclusion
Building the Graphic Era University app was a fun and rewarding experience. I’m excited to see how the app can make it easier for students to access resources and stay up-to-date on the latest news and updates from the university.
One of the biggest challenges in building the app was finding the right tools and services to use. With so many options available, it was important to choose the ones that would be the most reliable, cost-effective, and easy to use.
Throughout the development process, I focused on ensuring that the app was user-friendly and easy to use. I’m confident that the app’s design and functionality will make it a valuable resource for students at the university.
Moving forward, I plan to continue improving the app and adding new features. I’m also excited to explore new ways to use the app to make resources and news more accessible to students.
Thank you for taking the time to read about my experience building the app. I hope you find the information helpful and inspiring!
Comments powered by Disqus.