freeCodeCamp / chapter

A self-hosted event management tool for nonprofits
BSD 3-Clause "New" or "Revised" License
1.92k stars 359 forks source link

What are some of your ideas on building an alternative to Meetup.com? #1

Closed pixelyunicorn closed 5 years ago

pixelyunicorn commented 5 years ago

Continuing the conversation from Discord!

pixelyunicorn commented 5 years ago

I feel like we should start by copying meetup's functionality (that are most familiar to organizers and attendees), then add features from there!

vunderkind commented 5 years ago

I agree. Do we have any Meetup power users onboard? Maybe a list of features for starters.

jmarchello commented 5 years ago

May not be a v1 requirement, but something that would be useful for discoverability would be a tag-like system where I can say "I'm interested in X, Y, and Z" and Organizers can say "We typically cover X, Y, and Z topics" Something like Github's Topics perhaps

keyserfaty commented 5 years ago

what the mvp looks like to me:

Zamy97 commented 5 years ago

What @QuincyLarson said just saying it in my words: Seeing what alternatives have done best and kinda mimic it into this would make it great.

socksrust commented 5 years ago

We're building https://confy.app

Its an alternative for meetup.com with the following stack:

We would love to make it open source and partner with freeCodeCamp community and offer free meetups.

QuincyLarson commented 5 years ago

@pixelyunicorn

I feel like we should start by copying meetup's functionality (that are most familiar to organizers and attendees), then add features from there!

I agree - we should start by stripping their features down to the bare essentials.

francocorreasosa commented 5 years ago

adding to @keyserfaty's list, we should implement the queue/waitlist for highly demanded events :)

mantcz commented 5 years ago

Also:

  1. allow people to cancel RSVP
  2. ability to contact members: a. all of them b. those going to the event
keyserfaty commented 5 years ago

Also:

  1. allow people to cancel RSVP

Agree

  1. ability to contact members: a. all of them b. those going to the event

Sounds like v2 to me

francocorreasosa commented 5 years ago

maybe cancel RSVP could go into a V1, it is (soft)deleting the record, contact members is definitely a v2

francocorreasosa commented 5 years ago

another thing that could go to a v2 is a meetup.com compatible API for those apps that use meetup as a data source.

(similar to those services that have an S3-compatible API for integration purposes)

https://discordapp.com/channels/633401573002969128/633401573002969132/633416435019939874

allella commented 5 years ago

Not saying an API is in the MVP, but Greenville, SC we have a simple event API tool to syndicate the Meetup.com and Eventbrite.com meetup event data to show a full tech calendar on hackgreenville.com and allow others to build apps using the open data.

Moving off Meetup.com will basically break our tool until we have a way to scrap or hit an endpoint to get the same data. So, from our own "what will break when people move" perspective, a lack of an API, or at least rich snippets that can be scraped, will break some existing community tools developed by Code For Greenville.

QuincyLarson commented 5 years ago

OK everyone - here is my bare bones description of what this tool needs to be able to do. We've already built some of this out here: https://study-group-directory.freecodecamp.org

As a future participant

I arrive at the home page.

-> System will show a search box with "[ Where do you want to attend an event? ]"

I can start typing a city, state, or country name, and it will autocomplete.

-> System will show upcoming events in/around that location.

I can click on one of the event names.

-> The system will show the "show view" for that event's group, with details about the upcoming event, along with a button to RSVP.

I can click the "RSVP" button.

-> The system will prompt me to sign in. It will send me an email with a ticket and add me to the public list of event attendees.

-> The day before the event, the system will email me again with a ticket and reminder.

-> After the event, I will automatically get emails notifying me of subsequent events.

As an organizer

I can create a group.

I can edit details about the group, including a Slack/Discord/Facebook/WeChat/WhatsApp link participants can join to discuss and coordinate events.

I can create events, and set their location and capacity.

I can cancel events.

I can email the entire list of participants.

I can ban a participant whom I believe is toxic or who has previously broken the code of conduct.

I can add a venue sponsor to the event with a link to their website as a way of thanking them for hosting.

I can add a food sponsor to the event with a link to their website as a way of thanking them for food.

keyserfaty commented 5 years ago

@allella that's cool. don't think you'll be able to replace meetup with this tool right away. sounds like an important feature but definitely not the first thing we should tackle. but sounds great for v2.

vunderkind commented 5 years ago

Great idea to have the homepage dynamically surface events tailored to IP address.

mantcz commented 5 years ago

Great idea to have the homepage dynamically surface events tailored to IP address.

That would not work for people behind VPN. I would just prefer decent search engine based on typed location.

allella commented 5 years ago

I guess I should ask if the v1, or even v2, is intended to host non-FCC groups, or if this is for the FCC universe?

francocorreasosa commented 5 years ago

@allella I guess any group, even non-coding related. @vunderkind Great idea for a v2 or v1.x 😄

nhsz commented 5 years ago

Some features we need as organizers because some venues ask for this info (meetup currently has these, fields aren't required though)

allella commented 5 years ago

Could also be v2, but organizers often will link to an organization landing page and specific event instances. Having public URLs would shortcut the "enter city", "find your group" steps if someone already knows why they are there. Also, having some structured markup, like event rich snippets, on the org and event landing pages would offer at least some basic API alternative until such time as an API could be built.

I'd be motivated to assist with the event markup and API development since I volunteer to support tools that need a way to get at the event data through a script.

francocorreasosa commented 5 years ago

@nhsz Yep I see those in a v2 probably

francocorreasosa commented 5 years ago

~Thinking about a tech stack...~

Moved to #2

allella commented 5 years ago

I'm sure all cities have different needs, but here's an idea of what we consider a "tech meetup" in Greenville, along with an API behind that holds info about all our organizations in the area, the organizers, where they post events, API endpoint keys for the event service they use.

Might be a nice v2, v3 feature to allow each city to have a similar list of all the organizations by certain tags or categories. Basically, I'd be glad to replace our homegrown orgs and events data and APIs with a service that all cities could enjoy.

Org API Events API

tazsingh commented 5 years ago

Hey, I've built a good chunk of this already. Happy to chat about what I have. The intention is to release it as OSS and would like to collaborate on efforts

pedroroutaboul commented 5 years ago

EventoL is the platform that uses the Python Community in Argentina to managing their events E.g.: PyConAr 2019

edimitchel commented 5 years ago

Mobilizon from Framasoft is a french solution that aims to replace Facebook Events and MeetUp applications by a ethic, free and open-source solution (which could be self-hosted in the future). The project has already collected more than 50000 € for the development. UX designers are already working on it, please consider this solution before recreate something else.

igorasilveira commented 5 years ago

Great idea to have the homepage dynamically surface events tailored to IP address.

That would not work for people behind VPN. I would just prefer decent search engine based on typed location.

I think it just be first location based, through the Browser location API and in case of negative response, based on typed location

vunderkind commented 5 years ago

Are we going to have a central document holding all the features we've agreed on, and what are the next steps/structure for building this?

Pardon me if these questions are naive. First time collaborating on an open-source project, ever.

itaditya commented 5 years ago

How about using GitHub as a meetup platform?

https://mobile.twitter.com/dev__adi/status/1183873754679537666

f0cus10 commented 5 years ago

How about using GitHub as a meetup platform?

Not really what it was made for.

santiagobeloqui commented 5 years ago

It should be a section of freeCodeCamp or an independent platform? Random ideas: 1) Maybe "Free Meet" or something similar could be a good name for it. 2) Maybe it should be made with the stack that people can learn in freeCodeCamp (React, Express, Mongo), so all the students can contribute to the project :)

QuincyLarson commented 5 years ago

I guess I should ask if the v1, or even v2, is intended to host non-FCC groups, or if this is for the FCC universe?

This will be a self-hosted web app that any organization (Rotary Club, Women Who Code, Sierra Club) could use to coordinate their events. Ideally it will be a one-click server deployment and will run in a docker container. And an admin will be able to configure a few settings and have all the data stored on their own database.

QuincyLarson commented 5 years ago

Are we going to have a central document holding all the features we've agreed on, and what are the next steps/structure for building this?

Pardon me if these questions are naive. First time collaborating on an open-source project, ever.

Good question. I'm working on a Readme. We can use that as our central planning document, and GitHub issues to discuss design ideas, implementation details, and answer questions.

QuincyLarson commented 5 years ago

It should be a section of freeCodeCamp or an independent platform?

This will be a self-hosted tool that any organization can use - ideally without needing to fork this repo.

  1. Maybe "Free Meet" or something similar could be a good name for it.

We can figure out a name later. I usually prefer names that do a good job of describing what the tool does (Bingo Card Generator is a good example of this.)

Canopix commented 5 years ago

this is not for the MVP but maybe in the future add a new role like 'Venue' and the organizer can post a solicitation for venues and the venus offer to them their Venue...

thegagne commented 5 years ago

I think a good model would be self-hosted for meetup owners, but then also a centralized aggregator so that as a user I can go to one site to find any local groups that choose to be aggregated.

Sites opt-in to be listed, and when new events are posted they send the title, subtitle, time and location data, and teaser image to the main site.

A big question about user accounts: per site or global?

Per site could be annoying, but global means it can be tracked and sites are not able to operate independently. I guess I’d lean towards per site on this.

Having a mobile app version is also important.

allella commented 5 years ago

The stated README direction is to roll a new solution.

I thought to aggregate the links shared in the Discord channel and Ycombinator thread about open source and commercial alternatives. These could act as a point of reference to tickle the brain for core/v1 features and future features.

Open Source

Existing FCC Project

Commercial

allella commented 5 years ago

Ideas Posted Publicly in the Discord between the start of the project and 4AM EST on Oct 15th.

All usernames below are Discord names and may not match Github names.

elmariachi111 commented 5 years ago

Hey, just copying what I wrote on Discord here. Delete / merge me if you think that's a really bad idea ;) :

I think we're facing a major problem: each effort that relies on some centralized infrastructure will lead towards the next meetup.com again. So while you for sure can improve things, come up with a splendid UX, put everything on Github you'll still end up having to pay server fees for your central application instance.

If you start to build a "hub" like system (e.g. like Mastodon, maybe even with P2P features) you'll end up explaining newbies how to get it installed and running. It's great, since no one could stop it but I think you'll still need some "central" instance to e.g. discover meetups in your area. And you for sure will need some kind of "RSVP" mechanism.

Now, what we've been wrapping our heads around for some time (and we'd LOVE to see it coming) is to build this as a Đapp, most likely on Ethereum. In our current model each event is built as smart contract, initiated by the event host. With more economy logic you could hand over, join or close events, you could even charge for them on an individual basis. The process of joining events is either a "token exchange" (each event could have its own token) or a simple persistent attendee list.

We've developed that idea during the last EthBerlinZwei Hackathon and it's called ĐOor (https://github.com/cod1ng-earth/dOor). Since it's a Đapp, it's only working correctly when opened inside an Eth wallet aware browser (metamask, Brave). We built that event system just to enable our hackathon idea: opening an events' "door" by signing a shared secret (looking for zk engineers here :D) by an attendee. The code is hackathon grade ;) https://devpost.com/software/door

Pros:

Cons:

To remedy the last point: the concept of a Gas Station Network helps to pay gas fees by event hosts upfront. If you never heard about the Eth infrastructure you can think of gas as a roughly comparable concept as "hosting fees".

klodha commented 5 years ago

A good feature will be to have QR code generation for Lunch, Goodies coupons. That way we can reduce use of paper coupons and vouchers. Those can be generated as QR codes sent to participant's email ids and can be scanned at venue using Chapter's app.

Not only that reduce the cost for organizers, but also make it easier for participants.

espipj commented 5 years ago

An important feature for me is being able to save the event directly into my calendar (on mobile). But I guess that might be v2. I'm happy to help with the development. 😊

localjo commented 5 years ago

I agree with @espipj

As a participant, I want to subscribe to a calendar of a) the events I'm attending b) all of the events in a group and c) all of the events in a geographical location

Maybe with some other variations/filters applied too. We could make some sort of API endpoint that returns a calendar format.

adeelibr commented 5 years ago

I would like to help with the dev part of this platform if possible =) the frontend part.

kelset commented 5 years ago

Another feature that from the organiser POV is quite important IMHO is the ability to add custom fields for the "customer" to fill in when obtaining a ticket/signing up for an event.

lightclient commented 5 years ago

When I first heard the news, I immediately began creating a image in my mind of what I thought a nice MeetUp replacement would look like. I thought I'd share the overall feel of the product I envisioned. I realize it is more radical than what seems to be proposed, but maybe there are some interesting insights to glean.

My ideal event organizer:

TLDR: There should be a way to host an event and have people RSVP w/o anyone needing an account

Utkarshbhimte commented 5 years ago

I think, marking attendance using QR code would be an useful feature. Helps to ensure that only the invited people are being allowed and would be faster than manual checking from a printed paper as I have seen till now.

waded commented 5 years ago

In the area of @allella and @localjo's comments about event syndication sites and APIs, I suggest part of API should be vCalendar feed of all the organization's upcoming/past events. vCalendar has good compatibility with existing calendar import/sync tools, e.g. a WordPress plugin that can display a calendar that aggregates one or more vCalendars, or a Google Calendar used to do the same.

(I would suggest that a way for participants to see all events from a particular organizer in a calendar app is different scenario... not necessarily best-served by vCalendar API, although that's sometimes how it's done.)

Related, I think it would be helpful to very clearly define the "organizer" persona... is it A) a person, perhaps with a few compatriots, that hosts a chapter site, leads/attends all events listed on that site, is responsible for future events, at the cost of hosting that instance of chapter, as part of the group's own website... OR, is it B) a person running a community events site (e.g. someone in the chamber of commerce at a small city, marketing the city by exposing as many events as possible on events.name-of-small-city.com) in redundancy with As but also providing a service to organizers who don't want to, or don't think to, host such a site.

Ideally chapter could serve both personas well, but I think it's helpful to decide which is which. I think meetup.com did not segment these well and only really serves A, not B. (meetup.com's regional search/notification features serve its own business interests, C.)

patcito commented 5 years ago

It looks like this has already all the features you're looking for, including federation https://joinmobilizon.org/en/

PrestonElliott commented 5 years ago

I think it would be beneficial to add a tag id column to the events table and add tags table, so we can add filters for specific tags. For example, if I'm interested in attending meetups for JavaScript, eSports, and hiking, I want to be able to filter all events for these specific tags and return those results.