Code Monkey home page Code Monkey logo

chapter's Introduction

Welcome to Chapter

After several years of being dissatisfied with existing group event tools (Meetup, Facebook events) we decided to build our own.

This will be a self-hosted Docker container that you can one-click deploy to the cloud, then configure through an admin panel. No coding required.

Your nonprofit can sub-domain it to your website like chapter.sierraclub.org or chapter.womenwhocode.org.

You can use your own authentication tools. And all your user data will stay on your own server.

API Specification

We use Open API 3.0 to define the API structure of the application. You can see the full documentation with:

npm run speccy

Navigate to http://localhost:8001 to see API docs

Terminology

To better communicate and more easily build an API and UI, we've decided on a collection of terminology to discuss about the Chapter project in a clear way:

  • organization is a singular instance/deployment of Chapter. Example: Women Who Code at the domain chapter.womenwhocode.org.
  • chapter is a container for events, with a description and subscribers, and one or more admins who can manage it. Example: Women Who Code NYC.
  • event is a single meetup that users can RSVP to, has a specific location and time, and has organizers. Example: Women Who Code NYC - April 2019 Event.
  • user is a person who belongs to a chapter.

Tech Stack

We are planning to use the following tools:

A lot of people know these tools, and they're proven to work well at scale.

We are considering using a tool like Next.js to get up and running faster.

We will focus on building an open API first. Then developers can use the API to build their own mobile clients and voice interface clients.

Development Setup

Requirements: Node.js, Docker, internet access

Installing Node.js

Follow instructions for downloading and installing Node.js for your opreating system from the official Node.js website.

Ensure you are installing Node 10 or greater and npm 6 or greater.

Installing Docker

Click here for the Docker installation site. Scroll down to "Supported Platforms" and follow the instructions to download & install Docker Desktop for your operating system (or Docker CE for linux).

You can find more resources on Docker here:

Starting the Development Server

Open up Terminal/Powershell/bash and navigate to the directory where you want the project to live.

Clone this repository:

git clone https://github.com/freeCodeCamp/chapter

Navigate to the newly cloned repo:

cd chapter

Install dependencies:

npm install

Ensure that Docker Desktop is up and running, then run the following command:

docker-compose up

Wait for the logs to show "server started on port 8000", then navigate to localhost:8000 to view the app.

The server will automatically restart anytime you save a .ts or .js file within the server/ directory.

You can run any command within the container by prefixing it with docker-compose exec app, e.g. docker-compose exec app npm install express

Testing

Run tests

npm run test

Run tests in watch mode

npm run test:watch

Schema

a diagram illustrating the proposed schema for chapter

User stories so far

Our goal is to keep things simple and not reinvent wheels. So far we have only two user roles: participants and chapter organizers, both of which are users.

As a user

  • I can open a registration page where I can sign up with email and password.

  • I can log in with my email and password or I can log in with social login via Google.

  • I can see my account page where I can reset my password if I've registered with email and password. Otherwise I'll see a link to my Google profile.

  • I can log out.

As a future participant

  • I can use a search box on the landing page to input a city, state, or country name and it will autocomplete. I can click one of those locations.

  • When I click one of those locations, I can see the "show view" for that event's chapter, with details about the upcoming event, along with a button to RSVP.

  • I can click the "RSVP" button. When I do, I will be prompted to sign in. Then I will receive an email with a ticket and I will be added to the public list of event attendees.

  • I will receive a second email the day before the event to remind me.

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

  • I can filter all events in my location by tag/interests.

As an organizer

  • I can create a chapter.

  • I can edit details about the chapter, 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 my organization's 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.

  • I can see how many times a participant has come to the event as well as their attendance rate.

  • I can check-in attendees on the event registration desk with their email_id or chapter_id.

Roadmap

  1. Design the schema.
  2. Set up the API endpoints.
  3. Build the web client and let other developers use the API to build mobile clients and voice interface clients.

Quincy Larson is the project lead. FreeCodeCamp will start "dogfooding" this as soon as possible with several of its local study groups.

Here's an out-dated example of an app with similar functionality: The freeCodeCamp Study Group Directory.

You should join our Discord server to get connected with people interested in this project and to be aware of our future announcements.

Contributing

Take part in discussions or contribute code to this opensource codebase.

License

Copyright © 2019 freeCodeCamp.org

The content of this repository is bound by the following license(s):

  • The computer software is licensed under the BSD-3-Clause license.

chapter's People

Contributors

quincylarson avatar nik-john avatar allella avatar chrismgonzalez avatar francocorreasosa avatar scottbrenner avatar dmmulroy avatar kognise avatar timmyichen avatar vkweb avatar praveenweb avatar prestonelliott avatar rodolfo-mendes avatar rhvdbergh avatar shangeethsivan avatar email2vimalraj avatar wendelnascimento avatar lakshmipriyamukundan avatar vaibhavsingh97 avatar xarielx avatar mirzachilman avatar matjack1 avatar manoellobo avatar finisher1017 avatar lobarr avatar iansltx avatar guusy avatar accio112 avatar conr avatar

Watchers

James Cloos avatar

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.