Skip to content
Jeremy Zongker edited this page Jun 14, 2023 · 6 revisions

Roadmap

Events

We need a way for churches to manage events and provide multiple event calendars.

  • Events will be tied to a group. Group leaders have access to manage all events for that group.
  • We will have single events, recurring events and exceptions to those recurring events.
  • Events can have visibility settings of public of members only.

Calendars

  • We need to create a calendar component for displaying events (react-big-calendar)
  • This calendar will be shown on the group details page on B1
  • We also need a version for the page admin that can be dropped on any page and configured for any group.
  • Clicking an event will provide a details popup. This should include:
    • A photo (either from the event itself or the group photo if the event doesn't have one.)
    • A description with markdown.
    • A comments section.

Curated Calendars

  • Admins should be able to create CuratedCalendars that combine events from multiple groups.

  • Some examples would be a whole church calendar, a youth group calendar, or a small group calendar.

  • It works like a playlist. The events are still "owned" by the groups, but can be added to this curated list.

  • A church admin should be able to add a whole group to this curate list (all their events show up automatically), a recurring series or a single event.

  • Recurring exceptions do not need to be managed by the curated calendar.

  • For now, people will not mark themselves in attendance.

  • The StreamingServiceTimes should eventually become Events instead.

News Feed

When users log into B1 the first screen they should see (unless a church decides otherwise) is a news feed.

  • The things that will show up here are:
  1. Any conversations from groups they are part of
  2. Any events from their groups or from a curratedCalendar for that church.
  3. Any open tasks where they are the creator, associated with person, or assigned to person.
  • We will need some kind of weighting system for the sort order. lastUpdated will be the primary sorting mechanism. If someone posts a comment on a conversation or event, it'll be bumped to the top. However, a calendar event that is happening tomorrow should also have high importance, even if no one has commented on it in a while.
  • Users should be able to comment directly from this feed.
  • The behavior in general would be similar to facebook.
  • There are no user-level posts like a social network. Just group conversations and events.
  • New conversations and events are not created from the feed. Those are done from the group pages.
  • Comments are just text, no photos or video.

Notifications

We need real-time notifications across the authenticated portions of all apps and the mobile app.

  • There should be an alert bell with a count showing what notifications there are.
  • It should receive push notifications and not be dependent on a page refresh.
  • Ideally, I'd like a single system for all push notifications, including the live stream chat.
  • Ideally, I'd like for updates to happen real-time in various app components too. For example when a new comment is left on a post you're viewing.
  • If a additional events of the same type happens (5 additional comments on a post) and you haven't acknowledge the first notification, it should not register additional notifications.
  • You should be notified of new posts/events to groups you belong to and new comment on conversations you have participated in.

Push notifications

  • If you install the B1Mobile app, you should have the option to receive push notifications (opted-in by default)
  • Only a single push notification should be sent, until you view notifications from either the app or web site no more push notifications will be sent.

Internationalization

We need to support other languages.

  • Look into https://www.i18next.com/ for this. I'm not certain it's the right solution, but looks likely. It's built into Android as well.
  • Each church should select what language to use for their apps.
  • All of the labels, error messages and other built in text will appear in that language.
  • Any user entered content will appear in the language it's entered. We will not attempt to auto-translate it.
  • I don't think end users need the ability to select language, just churches. Otherwise content will end up being a mix-match.
  • We'll need to replace all text like "Welcome to Chums" with some type of variable like localText.chums.welcome.
  • Provide a single file (ideally JSON) for each language/app combination to define the text values of these variables. chums.en.json and chums.es.json for example.
  • We need to make sure we have some kind of intellisense for the code so we don't mess up these labels.
  • Later we need to look into other currencies for donations, but that won't be part of this stage.