Skip to content

Revamp Flutter Pakistan app to a Community App

Eric Bhatti edited this page Aug 31, 2019 · 1 revision

Open Source Community App

The goal of the project is to create a well documented and easily cloneable app for any community that wants to use the app for their management.

All colours, fonts, images, should be easily configurable so any community can use it.

Splash Screen

This will feature an image and a background solid colour, which should be configurable from a properties file when building the project.

Authentication

Users should be able to authenticate themselves using their Google Account, on successful authentication, if they haven't created a profile before they should be prompted to create profile.

Create Profile

User should be asked the following:

  • Name(required)
  • Phone Number(required)
  • Student/Professional(required)
  • Designation(skippable)
  • Organization(skippable)

Side Nav

The side nav should have the following items:

  • Home
  • Events
  • About [Community]
  • Notifications
  • My Profile
  • Log out

Home

The home screen should show a list of upcoming events only. Each list item should show the following data points:

  • Event Name
  • Event Date
  • Event Location
  • Event Feature Graphic
  • User Status for the event [UNDEFINED(Register),REGISTERED(Shortlisting Pending),SHORTLISTED(Confirm Registration),CANCELLED(Re-apply), CONFIRMED]

If the user status is UNDEFINED, the CTA text should be "Register", on tapping it the user should be redirected to the event registration form. The fields of the registration form should be fetched from the database and the form should be generated dynamically.

If the user status is REGISTERED, the CTA text should be "Shortlisting Pending", on tapping it the user should be shown a popup that their registration is pending and they will be notified when they are shortlisted.

If the user status is SHORTLISTED, the CTA text should be "Confirm Registration", on tapping it the user should be shown a popup that they have been shortlisted, and they can confirm themselves or cancel their registration. Based on the button pressed user status is updated. If a user presses confirm after 24 hours(this variable is to be configurable on per event basis), the user will be notified that their registration was cancelled

If the user status is CANCELLED, the CTA text should be "Re-apply", on tapping it their status is updated to REGISTERED.

If the user status is CONFIRMED, the CTA text should be "View Event", and it takes the user to the event details screen.

In general, when the user taps the list item the user is taken to the event details screen.

Event Details

The event details screen should have 3 tabs, first tab should be the summary, which should have the event name, date, location, feature graphic, description about the event. The second tab should be the schedule, the schedule tab should be dynamic in handling a multi day and multi track schedule. This means that the schedule will have 2 filters, for date and track. The thired tab should be a message board from the organizers where they can post different messages and links etc.

Event Details - Organizer/Volunteer

For an Organizer or Volunteer the event detail tab will show a manage event button. Tapping on this button will take them to the event management screen. This means that the event data model will have the ability to mark a user as a Volunteer or Organizer.

Event Management - Volunteer

The event volunteer can only see the list of check points configured in the event data model. The common check points could be: ATTENDANCE, LUNCH, GOODIE BAG

The volunteer can tap on any one of these, and it will open up a QR code scanner which will enable them to scan confirmed participants QR code, on successful scan, user status for the check point will be updated.

Event Management - Organizer

The event organizer can also at this stage only see the list of check points configured in the event data model. To add checkpoints update the data model.

The event organizer can see the list of participants with status as REGISTERED, so they can shortlist them. As they shortlist someone, a notification/email is sent to the person.

The event organizer can see also post content to the message board. They should post content in markdown so the message board can support rich text.