softengsquad / studentmap

0 stars 0 forks source link

Student Map App (SETaP)

Code documentation is available here.

Team Members

Project Scope

The aim of the project is to provide University of Portsmouth students with an interactive map showing university buildings. The app allows the user to sign in with Google to display their university timetable within the app (subject to the user linking their port.ac.uk timetable with Google).

Although not yet implemented, the project aims to provide navigational features to the user, such as providing bus routes and walking paths to university buildings.

User Requirements

Strikethrough indicates user requirements that have not yet been implemented.

  1. The user should be able to view university buildings on an interactive map
  2. University buildings should be distinguishable from non-university buildings
  3. The user should be able to view supermarkets and stores on an interactive map
  4. The user should be able to filter the displayed buildings visible on the map
  5. The user should be able to select and view routes to a building from their current GPS location.
  6. The user should be able to switch between modes of transport as part of routing to a destination - the modes of transport are: walking, bus.
  7. The user should be able to see the availability of different modes of transport.
  8. The user should be able to view their timetabled university sessions on a day-by-day basis within the app.
  9. The user should be able to sync their calendar with google maps.
  10. The user should be able to see how long it will take them to get to their destination from their current GPS location.
  11. The user should be able to switch between a city map and a building map to help them find the specific room within a university building.
  12. The user should be able to favourite buildings

Elements of Implementation

External Dependencies

Dependency Purpose in project
google_maps_flutter, google_maps_flutter_android, google_maps_flutter_platform_interface Provides an interactive map and tappable building markers
google_sign_in Provides Google OAuth 2.0 connecivity
googleapis, googleapis_auth, extension_google_sign_in_as_googleapis_auth Google Calendar API connectivity
intl Provides date formatting
sqflite, sqflite_common_ffi SQLite database implementation for local storage of building information
provider Provides dependency injection within widgets
carousel_slider Provides a scrollable image carousel for building floor plans

Set up & running the project

Environment set up

  1. Install Android Studio
  2. Set up an Android emulator
  3. Install Dart & Flutter
  4. Check the output of flutter doctor for the presence of Android Studio

Running the project

  1. Clone the repository
  2. Change into the directory
  3. Run flutter run -d emulator

Main Components

The side drawer of the app features the building information tab, building search tab and the timetable/calendar tab.

Interactive Map

The interactive map provides a view of the Portsmouth and surrounding areas. The map displays university buildings, supermarkets and social buildings as markers on the map.

Tapping on a building marker opens the side panel, showing information about the building such as its address, floor plan and a button to favourite or unfavourite the building.

Timetable/Calendar

The app allows the user to sign in with Google to display their university timetable within the app (subject to the user linking their port.ac.uk timetable with Google).

The user can view their timetabled sessions for the current day, previous days or days in the future. Each timetable entry displays the name of the session, the start and end times and the building and room number.

Building Search

The search tab allows the user to find a specific building by search term. The user can also filter buildings by their type (university, supermarket, social, or all three) and also the building's favourite status.