freecodecamp / chapter Goto Github PK
View Code? Open in Web Editor NEWA self-hosted event management tool for nonprofits
License: BSD 3-Clause "New" or "Revised" License
A self-hosted event management tool for nonprofits
License: BSD 3-Clause "New" or "Revised" License
I am opening this issue for us to discuss the possibility of using docker-compose for the development of this project. This I think will make onboarding easier.
Fullstack dev. from Bangalore, India. Work on React, Postgres, Node, dangling a bit with Docker, K8s, Monitoring lately. Hope to contribute and learn. Godspeed!
I think to better communicate and more easily build an API and UI, we need to come up with a uniform set of terminology. Below is my (very much changable) suggestion based on what I've heard the community say the most:
(All the examples here are fictional and meaningless and probably super inaccurate)
What do you guys think of these - could they made more clear? Am I missing anything?
It would be a good idea to add in location to the project to facilitate ease of searching for users browsing for groups. This is not an exhaustive list just some quick ideas to get started with.
As a user:
As an organizer:
Postgresql does support geospatial datatypes here.
This issue has been created to house the desired MVP user stories. Please think big picture items as we are trying to roll out an MVP very quickly. There are so many great ideas that the community has voiced - let's make it easy to isolate the ones that we deem pertinent to the initial release of the app.
I've listed the ones detailed in the README below, as they seem like a good start.
Below is a basic documentation outline. Please feel free to add your feedback.
Getting Started as an Organizer
Using Chapter
Account & Notifications
Technical Issues
Policies and Community Guidelines
Backend/Architecture
An event should be visible when searching on Google or other search engines.
For this, we can add SEO compliant schemas to events such as -
https://schema.org/Event. Apart from this what are other needed SEO requirements ?
Hi all, as a Data Engineer, I believe Analytics are important to optimising and improving the features of any app - Even if it's open source. For this instance, I'd like to start discussing the possibility of adding these after an MVP has been implemented.
To protect the safety and privacy of our users, we will not gather personal data: IP Addresses, Latitude/Longitudes, etc.
We could tracking the following:
location
and/or venue
)rsvps
, events
)venue
venue
NOTE: All tracking options would be Opt-In and customisable. This means we would NOT track anything without consent from a user, under any circumstances.
As we are creating a new application that brings together a variety of people without a paywall cough Wework cough, we need to keep accessibility in mind. Having the application being at least AA WCAG 2.1 compliant would ensure we can at least reach users with some level of visual or physical impairment. By adding minimal tweaks here and there, we can reach more by removing barriers to the platform, hence "accessibility".
Accessibility is the law now - Quincy Larson
Since FCC is not owned or used federally, we can skip Section 508 but I added it below for reference if anyone is interested in seeing where it all started. If anyone has additional ideas on implementation or other helpful comments, please do share and feel free to make changes as needed.
Web Accessibility does not get enough coverage in CS or Web Dev courses, but it makes a huge difference for a lot of users online. - Roman Mikhailov
<h1>
for it's size or <div>
where <section>
,<article>
or <footer>
would be appropiate), use CSS for the resta11y Quick Tests
Axe Accessibility Chrome extension
Function Accessibility Evaluator
Toolness Accessible Color Matrix
Web Aim Color Contrast Checker
ChromeLens chrome extension - seeing through another's eyes
About Screen Readers: Narrator, AudioVox, NVDA, JAWS - prepare to be overwhelmed
Overview (with videos)
Top Questions about Accessibility
W3 Developing Tips
Google Overview on Design and UX - specifically ARIA labels
WCAG Quick Reference
Quick tips using manual testing
Continuing the conversation from Discord!
These are a few things that I haven’t seen talked about yet. Have these things been considered?
If we can go to a paid option new relic will take care of most of these things if we use a free option There are several good options. We can use terraform to create policies and alerts, as well as the creation of resources (ie: pg clusters, elastic)
If these things have already been hammered out that is great, else I’m more than happy to go into more detail and map out what I think needs to be done as far as infrastructure.
Please add guidelines and requirements for contributors.
Below I'll try to assemble a checklist of things we have to get done before shipping a semi-stable beta that's close to a finished product.
As I see it so far:
This is vastly simplified, maybe we eventually want to move to a task management solution? Anyways, I'd love feedback on what this is missing. I tried to link up some issues/PRs but I'm probably missing a lot.
From a UX perspective, we probably want to make the experience for users who just want to RSVP to events as streamlined and possible. One thing that imo should be considered is user account management. With the current design, users have to create and manage separate accounts across all Chapter instances they're signed up to. This could get tedious.
I think we should have a conversation about possible solutions to this, I'm not very experienced with decentralization in general but I think we could implement some sort of SSO. This would also enable syncing user account details and interests across instances.
One network that solves this exceptionally well is Stack Exchange - we could look into how they do this. I haven't done a lot of research but I think they use something OpenID-related.
I'm open to learn new things!
As a user I would like to be reminded of events that I signed up to when they are coming up
User Story:
[ ] Spike research smtp or other service that we can use
[ ] Implement bot that would search through all of the current upcoming meetups and alert each member ** think of scale....
[ ] Implement unsubscribe feature in the case that a user no longer wants these emails
We can simplify and smooth the auth system a lot by using something like passwordless, any thoughts on this?
I think it's important to consider the needs and desires of the people who are going to install and maintain Chapter. I'll start with a few suggestions:
As an admin
In an effort to consolidate discussion, what tech stack should we use for the back-end? Front-end? Database? REST or GraphQL? Any services we should leverage? Should we use a monorepo?
I've had great success with NestJS as a backend framework (it's based off Node) and would suggest we use that.
#TODO later
Implementation details:
Since there's been a fair amount of discussion surrounding the sponsor types, we should track those details in a separate issue before closing this. However, I do think the above implementation would be a solid start.
Implementation details:
sendEventInvite
mutation chapter/server/controllers/Events/resolver.ts
Line 259 in 8ef1db3
Hello,
are you people consider using a database migration tool? Particularly I found them very useful for apply database patches and preventing losing data. Have you considered any tool? I did a little research and found db-migrate for Node.js:
https://www.npmjs.com/package/db-migrate
Do you have any suggestions?
As a user after logging in I would like the ability to see a customized feed based on my interests, and past meetup history
User Stories
[ ] Pixel perfect landing page based on ux wireframes
[ ] Create section to view events that I am attending or groups that I am a part of
[ ] Create section to explore groups related to my interests by querying recommendation microservice
As a user I would like to arrive at a fast loading page where I can login and see other meetups
User Story:
[ ] Implement pixel perfect match for web based on wireframe provided by UX tteam
[ ] Allow user to either sign up or login
[ ] Explore feature where one can search meetups based on location
Hello team,
Please use this issue to add your ideas for future releases of Chapter. (e.g. Push notifications)
As a user I would like to be able to search for meetups near me, meetups based on my preferences, and upcoming meetups.
User Story
[ ] Design Schema
[ ] Implement architecture to handle scale(load balancer, containerization using Docker and Kubernetes)
[ ] Implement Search Functionality
[ ] Performance testing
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.
The UI exists and emails get sent, but we still need text for the email.
Depends on #814
Once that is done, we should lock this down to the approved roles and confirm via Cypress tests
The main thing to check is that requests from unauthorised users fail, but it's also helpful to confirm that the UI reflects their role.
Test should account for developer typing logic, that stop canceling the event if there are no members in the event Reference #1517 (comment)
Test should account for the mutation deletion reference #1517 (comment)
Wanted to throw this in now. I think that once we land on some decisions re: frameworks, we should publish a best practices that this repo wants to follow. It will help people like me who have not contributed to open source yet jump on board and have some clear boundaries. Also, it can morph over time as we discuss changes.
Since React requirement is locked down, may I suggest Gatsby?
While Gatsby has a vs Next page, let me add my observation:
There is "Create React App", are there other React bootstraps we should look into?
Disclosure, Somehow I was added to Gatsby organization. Might be my mis-click, someone like me?? I think I might have submitted 1-2 doc PR fixes, but I'm not really that involved with the project.
This needs UI and resolvers to handle the requests. The DB schema has user_bans already, so a given user can be banned from a specific Chapter.
Until #814 is in, we can make some progress by implementing the UI for banning users and a resolver to update the DB. After the auth PR is in, we'll need to consider if 'banned' becomes a role that denies you access or if we need to handle banned user access differently.
The main thing to check is that requests from unauthorised users fail, but it's also helpful to confirm that the UI reflects their role.
We will also need tests to confirm that banned users can no longer interact with Chapters they are banned from.
Would anyone be interested in attempting to use Next.js to build a rough prototype of this application? I've read a lot of good things about Next.js, but ultimately we will see whether it's a good fit when someone digs into it and builds out some of the core routes.
Without a standardized way of merging pull requests, this repository's commit history a bit of a mess.
The "Add swagger json" pull request (#46) implements a single feature (👍 ) but was merged as five identically-described commits (👎):
Looking at this history, I have no idea what was implemented here. The commits should have been squashed into a single commit like "Add swagger json (#46)".
Enforce "squash merging" for pull requests
For commits to the master
branch, I only care about what features were implemented - and not the commits it took to get there. This will make the commit history much cleaner, and greatly simplify the rollback/revert process.
Simply asking people to squash pull requests may not be sufficient, we should disable "merge commits" and "rebase merging" in the repository's settings page - requiring all commits to the master branch be squashed.
As a user I would like to see a clean landing page when arriving to the site
User Story:
[ ] Logo
[ ] Decide on color palette
[ ] Spike - Think about potential accessibility issues
[ ] Wireframe
This will involve localizing the components of the applicatoin be translation Ready and have support for many international languages. Recommended library for this is React-intl.
For more, see here
I'm Arsad Rahman from India , More than 5 years experience as Software Engineer - Full stack native mobile application developer (Both Android , IOS) now working independent freelancing .
My Skills :
UI/UX - Sketch App(UI Designing), Figma and Marvel (Prototyping).
Frontend - Java & XML (Android App Development) , Swift (IOS App Development).
Middleware - Node.js with Express js , PHP Webservice - Restful API .
Backend – Firebase , MySQL, Mongodb, Parse.
Blockchain - IBM Hyperledger Fabric.
Multimedia – Adobe Photoshop, Premiere Pro and After Effect,Audacity.
Looking forward into contributing this project.
Currently ES is listed in the tech stack. ES is a great tool and it's absolutely best in class for it's purpose of enabling powerful search, but as someone who has maintained a whole mess of ES clusters, it also comes with a lot of cost and complexity.
ES requires multiple nodes, it's authentication mechanisms are expensive and require enterprise licensing and there are limited SAAS hosts available. In addition, it adds significant hosting complexity (shard rebalances, kibana hosting, etc) and makes development and tests very complex, even with Docker.
If one of the goals of chapter is to be easy and free-ish for small orgs to host, then ES shouldn't be a hard requirement. It can be an upgrade to enable more powerful search for dedicated hosts, but we shouldn't design against ES as a requirement. There are several other ways to enable meaningfully powerful search, including a solid full text search capability in Postgres.
We can lower the development cliff to be involved significantly, and help enable small scale hosting of instances dramatically by leveraging alternatives, without compromising MVP features.
Why wouldn't we reconsider dropping TS. For this size I think it would that VS Code (and other editos) tooling with TS outweighs any downsides.
Hi, I think this project would benefit from a test-driven workflow, so i'm opening this issue for others to openly discuss any specific libraries/frameworks they would recommend to test code for this project.
Personally, I use Jest to unit test my Javascript (which is mainly JQuery) code at work. I know Jest or Jasmine aren't specific to a Javascript library whereas Enzyme is meant to be used with React. Both can be used together as well.
I would appreciate someone with more experience writing tests with React to chime in on this as my experience is limited! (going based off the assumption we will be using React on the front-end)
Some resources i've looked into:
Why? this project aims to be a replacement for meetup.com, that's mean the target arent just big/small group of developers. Fastify is mature now and it got express like syntax. Since the backend project would be an HTTP API why not choose the fastest mature framework?
Benefit:
Cons:
on auth, I usually use oauth2 module on WebSockets I can help develop with ws, primus, or faye module but I don't see any use case on WebSocket with this project.
Benefit:
Cons:
That's it!
I think we should discuss whether to use full native solution (Kotlin/Swift) or try Flutter for making apps. Personally, I do not think Ionic or other platforms relying on C# or JS are good for this project.
Forgive me if it has been answered somewhere, but I can’t seem to find it, but how are we going to link these meetup.com-in-a-boxes together to find events across different interests and organizations?
An aggregator microservice?
A directory page like github /awesome?
An elasticsearch server hosted by freecodecamp powered by donations?
The reason why meetup.com succeeds is because of network effects (as mentioned in the medium article), but if each chapter is an isolated db, network effects don’t happen.
This will make it easier for a user to filter the chapters by interests, i.e. sports, events. Since the current schema has description and details, a more general “category” will make it easier to find the right chapter. If the chapter wants to be a private one, a private option will be added and won’t be able to be found by filtering by category.
Solution: Add category to existing chapter table schema.
As per finalised tech stack frontend will be "React using JavaScript (not TypeScript) and CSS (not Sass)"
Would like to discuss on which packages/libraries are best suited with react echo system ?
Will use any boilerplate ?
These two almost provides readymade support for transpiring and bundling and makes app production ready from day one.
Other useful packages I would like to add:
Would like to hear community thoughts and experience with this and any other useful packages, we can include in frontend tech stack
There was a change in terminology. "Groups" are now called "chapters". The change is reflected in API and DB schema, but docs are outdated.
Discussion in #71
Whilst I like the image of the schema, it's not auto-generated on updates to the SQL script so it could be misleading.
The version there is generated by a tool called DataGrip from JetBrains which is not free.
RSS feeds would be invaluable, especially if they could be constructed from tags or categories. So I could subscribe to all of the events, or just events tagged with php. This could also be used to feed other Chapter sites.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.