Code Monkey home page Code Monkey logo

fbla-app's Introduction

Hello ๐Ÿ‘‹, I use Ruby on Rails to reinvent Nonprofit Fiscal Sponsorship! I love anything tech/business and work as an Engineering Manager at Hack Club building financial tools ๐Ÿฆ to help people run nonprofit organizations!

๐Ÿ—“๏ธ I'm helping organize RailsConf 2024!

Mark your calendars for May 7th - 9th, 2024. I hope to see you there!

Linkedin โ€ข Website โ€ข Email

๐Ÿ‘€

fbla-app's People

Contributors

dependabot[bot] avatar garyhtou avatar georgezhang02 avatar hoodedpitohui avatar s-hliao avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

fbla-app's Issues

Navigation

Screens

  • Announcements
  • Chapter
  • Opportunities
  • Profile (would this just be the profile picture of the user?)

Web App for developers/super admins to manage the backend

Summary

A simple web app with strong authentication to allow developers/super admins to manage the Firebase database without actually using the firebase console.

Intended Outcome

Use cases:

  • Creating a State Chapter.
  • Pruning old, unused chapters
  • Other maintenance/troubleshooting features.

How will it work?

Probably a React web app with a backend API on Node.js with Express and the Firebase Admin SDK.

Deferred Deep link auto fills Chapter join code

Summary

Create a deferred deep link that allows new members to:

  • Download the app if not already installed
  • Autofill their chapter join code when joining a chapter

Intended Outcome

The deep link information should still be "held" when is the user needs to download the app.

Deferred deep links are more complex than default deep links. They can direct users to the App or Play Store if the user does not have the app installed (or to another location, such as the appโ€™s website for more information), and then open the original page that user was directed to.
--
https://www.adjust.com/blog/dive-into-deeplinking/

How will it work?

https://docs.expo.io/workflow/linking/

[Screen] Opportunities

Summary

A mostly static screen with information about opportunities

Intended Outcome

Display information about the following using a list of cards.

  • Competitive Events
    • Link to national's website
    • Link for chapter's competitive events sign up form
  • BAAs
    • List of objectives
  • CSAs
    • List of objectives

Each card would probably have a cover image, title, and short description. When you click on the card, it brings you to its respective screen with more information.

How will it work?

All of this information should be stored in Firebase. This will allow us to easily update information without needing to push out an update.

Chapter Join Codes

Summary

Allow for generation and usage of chapter join codes.

Intended Outcome

  • A chapter join code needs to be generated on the creation of a chapter.
  • This code will be displayed to the user creating the chapter (make it easy to copy/share).
  • This code should also be easily accessible to chapter admins under chapter settings.

How will it work?

@HoodedPitohui will figure this out!

[Screen] Profile

Summary

Allow users to update their own profile settings.

Intended Outcome

  • Change name
  • Change profile picture
  • Change password (if authenticated with Firebase Email & Password).
  • Notification settings

How will it work?

Either stored in Firebase user auth or database

State Chapters

Summary

Allow for State Officers/Advisers to send out announcements to all chapters within their state.

Intended Outcome

This will allow State Officers/Advisers to easily communicate with their state's members through the app.

  • Announcements from a state chapter will be broadcasted/displayed in all chapters within their state.
  • Announcements from State Chapters should be differentiated from announcements by the local chapter.

How will it work?

  • The structure of State chapters is the same as normal chapters.
  • Since each email address may only be associated with one chapter, State Officers/Advisers must have a decided email address for this state chapter (such as their association email). (They may use another email address to join another chapter)
  • State Officers/Advisers will use the normal chapter joining process to join their state chapter.
  • Announcements from a state chapter will be displayed to all chapters within their state. Announcements from State Chapters should be differentiated from announcements by the local chapter.
  • Each local chapter should be assigned to a state at the time of its creation.

Chapter Join Code - Potential Missing Chapter

With the current way the chapter join code generation and saving works, I think there is a potential for a chapter to "go missing".

If two users were to create a chapter at the same time, this could happen:

  • User 1: Gets codeList from firestore
    • codeList = ["12345", "67890", "13579"];
  • User 2: Gets codeList from firestore
    • codeList = ["12345", "67890", "13579"];
  • User 1: Generates random code and sets new codeList to firestore
    • randomCode = "16323";
    • codeList_in_firestore = ["12345", "67890", "13579", "16323];
  • User 2: Generates random code and sets new codeList to firestore
    • randomCode = "15926";
    • codeList_in_firestore = ["12345", "67890", "13579", "15926];

User 2 pushing their codeList to firestore will override any codes generated by other users between the time User 2 gets the list and sets the list.

Although it is unlikely that it would happen, it is possible.

Reset Chapter Join Codes

Summary

Allow chapter admins to reset their chapter join code.

Intended Outcome

  • Under chapter settings, chapter admins will be able to generate a new chapter join code. This will invalidate the old code.
  • The old code should go not back into the pool of available codes. Once a code has been assigned to a chapter, it should never be used anywhere else.
    Why?
    Let's say Chapter A is using the code 90735 for the 2019-2020 school year. They had shared their code with their members and posted it on their school's announcement board. At the end of the school year, they decide to reset their code for the upcoming 2020-2021 school year. Their new code is now 29762.
    A few days later, Chapter B is created, they happen to receive the code 90735 (which was placed back into the pool of available codes after Chapter A had reset their code). Some Chapter A members may attempt to use their old code (90735) to join the chapter. This will result in Chapter A members joining Chapter B's chapter.

[Screen] Announcements

Summary

Announcements system for local and state chapters with push notification and comments.

Intended Outcome

Allow local chapters (and state chapters) to easily connect with and send information to their members.

How will it work?

Inspired by Facebook posts
A vertical list with cards of posts (with the following information):

  • Title
  • Message Body
  • Date/Time of post
  • Author of post
  • Comments

The creation of a will cause a push notification to members within the chapter.

Announcements from State Chapters should be differentiated from those written by local chapter admins. (more info)

Use pagination to prevent loading all posts at once!!

Permissions

Chapter Admin

  • Can create announcements
  • Can edit their own announcements (icon button on the top right of header)
  • Can disable/enable comments per post
  • Can delete comments

Chapter Member

  • Can see all announcements from their local chapter and state chapter.
  • Can comment (if enabled)

Push Notifications

Summary

Push notifications for major events.

Intended Outcome

Allows for important information to be instantly communicated to members.

These following events will cause a push notification

  • Creation of Announcement (both local and state chapters)
  • Creation of Events (both local and state chapters)
  • Deletion of or change in an event (both local and state chapters)
  • Member joins chapter (only admins will receive this)

How will it work?

https://docs.expo.io/push-notifications/overview/
https://docs.expo.io/push-notifications/using-fcm/

Note: push notification for Android and iOS have different processes.

Authentication Providers (Google + Facebook)

Summary

Allow for authentication through Google and Facebook.

Intended Outcome

The sign-up / sign-in screens will allow for authentication through Google and Facebook. It will use classic "Sign up/in with Google/Facebook" buttons.

Example:

How will it work?

  • expo-google
  • expo-facebook
  • Make sure the auth information/token is relayed to Firebase.

Events for State Chapters

Summary

Allow for State Chapter events to be displayed to all chapters within their state.

Intended Outcome

This will allow State Chapters to share statewide events such as SLC, workshops, deadlines, etc.

How will it work?

  • Events from a state chapter will be displayed in the chapter's events calendar of all chapters within their state. Events from State Chapters should be differentiated from events by the local chapter (maybe using color-coded dots from Google Calendar).

[Screen] Chapter

Summary

Chapter screen for basic chapter information and chapter settings for chapter admins.

Intended Outcome

A place where members and easily find upcoming chapter events and basic chapter information.

How will it work?

Chapter Information

full-screen scrollable popup (icon button on header)

Information displayed:
  • Chapter name
  • Chapter social media links
  • Chapter Officers
  • Member list
  • List everyone and their role (admin/member)

Permission

Chapter AdminChapter Member
  • Edit Chapter Name (text input)
  • Edit Chapter social media links (text input)
  • Edit Chapter Officers (select from a list of chapter members with text field for Position)
  • View (and copy) Chapter join code
  • Reset Chapter join code
  • Manage Members
    • Kick members
    • Ban members
    • Promote members to admin / Demote admins to member
    • Kick all members except admins (to reset at end of year)
  • View Chapter name
  • View Chapter social media links
  • View Chapter Officers
  • View Member List
    • List everyone and their role (admin/member)

Chapter Events

Calendar with:
  • Event Name
  • Event Date
  • Event Location (such as an address, room number, zoom link, etc.)
  • Description (Rich text editor preferred)

Permission

Chapter AdminChapter Member
  • Create chapter events
  • Edit all chapter events
  • View all chapter events

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.