An All-in-one Campus App which provides lots of customizable features
UniCampus
UniCampus is an all-in-one cross-platform mobile application.
All images in this README are real effects. All sensitive information, image which not created by myself are blocked. In this repo, all image files (button, icon, etc.) are replaced with uncopyrighted images.
This repo only contains my code and free assest. You are free to use it for non-commercial use, such as modifying this application for use in your university. For commercial use please ask me for permission.
Functions
Welcome dialog
When the user launches the app for the first time, there is a dialog will pop up to show some information user should know or provide a shortcut for user to jump to some function, such as import courses info.
Class schedules
There is a simple import method which enables the modifier(you) change the method easily in order to adapt different web pages. Regular expressions are recommended
Different courses are renderd different color, and the color is selcet by the name of course.
There are two pages at homepage, today and week.
User can find today and next day’s class at today, meanwhile, they can slide page to week to view this week’s class.
If there is no class today (or tomorrow), app will show a image as the following image.
If there are some classes in this week, user can find them at both page. At week page, it will like the following image.
By clicking the course block (include the grey block), user are able to change the course infomation.
Search in Library
A built-in total page browser is provided to query specific content.
After enter the title and start search, there will be a inAppWebView to view the result. If you want use users’ default browser, you could change the code , e.g. launch(xxxx.xxx/?q=${})
Customizable Subpages
You can customize information pages and information cards, or let users click on pictures that contain information.
Yellow pages
You can make changes to the Yellow Pages information so that users can quickly look up phone numbers. In the following image all phone numbers are blocked by white.
Feedback
Use Sentry for crash reporting, and users can also submit feedback manually.
Message (need server support)
This app has a prototype of instant messaging, but if you want to use this feature, you need additional server software.
Stucture of Project
Assert (./{}/)
All assert can be found at root dirctory, such as images
, fonts
, etc.
Code (./lib/)
common (./lib/common/)
Global variables.
models (./lib/models/)
Models for objects, such as course
, message
, news
,
communicate (./lib/models/communicate/)
Deprecated.
database (./lib/models/database/)
Codes for operating SQLite database which stores the courses info.
resource (./lib/resource/)
Contains
PhoneNumber
, the phone number of yellow pageclassIndexMap
, the start and end time of classcolorList
, available colors for render the schedules and a function for calculate the color by a string (course name)url
, the url for check update, semester start time and university’s website.
routes (./lib/routes/)
Routes
, the navigation of this appYellowPages
, yellow pagescommonResource
, deprecatedlibraryQuiry
, quiry books and other resources at e-libraryrootRoute
, provide the outlook of this appsettingRoute
, deprecateduniversityWebRoute
, a inAppWebView for get HTML to import courses info
pages (./lib/routes/pages/)
Main pages which could switch by bottom navigator.
settings (./lib/routes/settings/)
Deprecated.
square (./lib/routes/square/)
You can modify this pages to provide common school information.
uilts (./lib/uilts/)
classIndexUtil
, check if two cources conflict in order to enable click to swtich between two courses (some university allow students select courses at same time slice)dateCalculator
, check and calculate the week index and day indeximageLoader
, deprecatedloginUtil
, deprecated (they even want to use socket XD)notificationUtil
, create a notification channal to provide notification before class startupdateUtil
, check whether this app is ourdatedwebUtil
, parse and add course info into database
widgets (./lib/widgets/)
blurWidget
, provide a blur widgetbodyProvider
, can change content by change indexclassCard
, the card indicate the course info at today pageclassCardList
, assmble class cardsclassCube
, the cube indicate the course info at week page, and provide function to change course info and can handle conflict(user cannot add conflict courses, but if university provide conflicting courses, we can handle them)customTabBar
, a custom TabBardialog
, a dialog providerhalfDayCoursesProvider
, provide classes in a range of index and assmble them to a widgetimageButton
, a image buttonimageViewProvider
, a imageViewProviderinfoCard
, a info cardsearchBar
, a search barsubjectCalender
, deprecatedwebViewPage
, a webViewProvider
Icon of App
University icons created by Smashicons – Flaticon