Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project Roadmap #28

Open
mirdaki opened this issue May 10, 2019 · 0 comments
Open

Project Roadmap #28

mirdaki opened this issue May 10, 2019 · 0 comments
Assignees
Labels
meta Need to talk about the project itself

Comments

@mirdaki
Copy link
Member

mirdaki commented May 10, 2019

This should help plan and explain the features and work that needs to be done for the project. It's a more organized and focused version of the use cases issue. It is a living document, so the specifics and goals will change overtime.

Goals

The back-end exists to do three things for the club:

  1. Be the single source of truth for club information (that the website, Discord bot, etc, can reference and use)
  2. Automate away recurring management tasks
  3. Reduce our dependencies on proprietary software and external services

Version 0.X

The code base has grown a bit, so it's probably best to do a little bit of refactoring and reorganizing.

Grouping items like member.rs and event.rs in something like a models folder, as well as separating out authentication stuff and other similar items will help to make navigating the code easier.

I also heavily suggestion using dependency injection (pass in things like the database connection as an argument instead of creating it in every database call). This will reduce some redundancy and make it easier to test without needing a database (by using some sort of mocking framework).

Related issues:

Version 1

The first release of the back-end should be focused on letting members easily sign in to meetings (so we wont need to use a Google form anymore).

Members should be able to go to the club website (at ufopensource.club/signin) or be able to use another client (like the Discord bot). Members don't have a traditional account (with username and password) so we only need to accept their UFL username. Once we receive the sign in, we can verify that there is a meeting going on (or is close to a meeting) and that they have previously provided other information like their GitHub handle (or have explicit chosen not to provide it). A response is sent back letting them know if it was successful and if they should provide more info. This website page follows this flow.

To achieve this, we need the following REST queries to work:

Version 2

Automated event management and syncing with external sources (Google Calendar, Facebook, Discord bot), should be the next focus. This will help to reduce the load on the Social Chair, so they won't need to worry about making multiple posts for the same event or manual adding them to the back-end.

I feel like a good architecture for this would be to have a few bots and chron jobs for each of those services run independently of the back-end. They would use the REST APIs to authenticate (just like every other client or user), so the code doesn't become too tied with any one service.

Features associated with this:

  • Google Calendar
    • Pulls in event changes from Google Calendar (including title, location, description, times, etc) into the database
    • Pushes event changes from the database (including title, location, description, times, etc) into the Google Calendar
    • Resolves inconsistencies between the database and Google Calendar
  • Facebook
    • Allow social chair to authenticate and set event announcement text and posting times for each event (or use a global schedule for posting)
    • Facebook bot creates and shares events on Facebook according to schedule
    • Facebook bot updates events on Facebook based off their information from the database
  • Discord
    • Allow social chair to authenticate and set event announcement text and posting times for each event (or use a global schedule for posting)
    • Discord bot creates and shares event announcements on Discord according to schedule

Version X

From here it's hard to see where the best use of time is. We've discussed project management, back up plans, expense tracking, documentation hosting, meeting notes, and plenty more. Tackle whatever will help the club the most.

@mirdaki mirdaki added the meta Need to talk about the project itself label May 10, 2019
@mirdaki mirdaki pinned this issue May 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Need to talk about the project itself
Projects
None yet
Development

No branches or pull requests

2 participants