Community Calendar

Description: Android app meant to be a companion to the Web frontend version (which has the event creation capabilities for administrators). This app allows event viewing based on any number of criteria including date, location, tag, or keyword. An event can be searched and event details can be viewed. The event can be added to the calendar or the location can be shown in the default maps app. Logging in will also provide the capability to RSVP to an event. The search history is saved locally using Room and all of the events, logging in, and RSVP are processed via GraphQL queries to the backend.

Tech: AndroidKotlinActivitiesFragmentsRecyclerViewsGraphQLMVVMViewModelLive DataRoomApolloOkHttpEspressoChipsRxJavaPicassoKoin Dependency InjectionAuth0Google LocationMoshiNavigation GraphTransition AnimationsBottom Navigation Bar

Highlights: Group project built over the course of two months. Extensive planning including mockups, following direction from UX, user stories, technical research, and usability studies. My portion involved building out the Filter fragment dialog UI and code, implementing some of the RecyclerViews, adding action intents, ensuring the main UI matched the UX specification, pair programming, Espresso UI tests, and collaboration with my Android teammates and the other groups.

image The home activity features 4 main divisions: The search view which opens the search fragment, the featured events list which scrolls horizontally, the vertical list of events filterable by date, and the bottom navigation bar.
image Any event that is picked anywhere in the app will show this event details view of the event. All of the available attributes associated with the event are displayed here.
image When logged in, the user can RSVP to let the host know that they will attend. There is also the option to view the location on the map (an action Intent will fire) and to add the event date and time to the device calendar.
image The filter fragment animates up upon opening and back down upon closing. This is where the available tags can be chosen by clicking on a Chip or searched for. There are additional filter criteria (location, zip code, and date) which can be applied to the next search.
image The search fragment is where the power of the engine shines. Optional filters can be applied here, a keyword search can be executed, a GPS-aware location search option, and a complete history of past searches can be viewed as well as reran.
image The search results fragment will show all of the events which match the criteria selected in the search fragment.

Link: GitHub Source Code

Collage background photo by Patrick Tomasso on Unsplash