GithubHelp home page GithubHelp logo

kartset / chapter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from freecodecamp/chapter

0.0 0.0 0.0 2.08 MB

A self-hosted event management tool for nonprofits

License: BSD 3-Clause "New" or "Revised" License

TypeScript 96.99% JavaScript 2.23% Shell 0.41% Dockerfile 0.37%

chapter's Introduction

Welcome to Chapter

All Contributors

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 deployed to the cloud with a one-click and then configured by the owner. No coding required.

Your organization can host an instance of Chapter under a sub-domain of your website, such as chapter.sierraclub.org or chapter.womenwhocode.org.

All of an organization's user data will remain under their control.

Our Vision statement provides more details on the reasons for Chapter.

Terminology

To better communicate and more easily build an API and UI, the current contributors have decided on a collection of terminology to clarify discussions surrounding the Chapter project:

Term Definition Example
instance a web server deployment of the "Chapter" application, managed by an organization. a Docker container running on a web host
organization a non-profit with multiple chapters Women Who Code at the sub-domain: chapter.womenwhocode.org
chapter a container for events and users Women Who Code - New York City
event a meeting with a specific location and time to which users can RSVP Coffee And Code - BistroOne, New York City, NY - April 9, 2020
user an authenticated user who is authorized based on their role(s) Sally Gold - [email protected]
visitor an non-authenticated web browser session with view-only access to public content Anonymous Web Browser Client
owner the role of a user who can configure the "Chapter" application instance and manage administrators for an entire organization Women Who Code - Global IT
administrator the role of a user who can setup and manage chapters and organizers for an organization Women Who Code - European Administrator
organizer the role of a user who can manage a chapter's events, RSVPs, communications, and members Women Who Code - Edinburgh, Local Organizer
member the role of a user who can follow and receive notifications from a chapter and RSVP to events Women Who Code - Edinburgh, Local Member

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 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 operating system from the official Node.js website.

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

Installing Docker

See the Docker installation "Supported platforms" section 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:

npx recursive-install

If you're using local setup (no docker), make sure you add your DB credentials to .env file

Running the server:

Docker-compose (RECOMMENDED)

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

Next, seed the DB.

Natively running node in Windows/MacOS/Linux (no docker)

DISCLAIMER: This is a more hands on approach.

This is a lot lighter setup, but you need to provide your own Postgres DB. If you don't want to run one locally you can get it as a service on ElephantSQL.

After you setup the DB instance local or remote, create a database, add the DB name and credentials to .env

MAKE SURE TO SET IS_DOCKER= in .env to blank

npm run dev

Seeding the DB

Initially the DB will be empty. To seed it with sample data, run yarn db:reset.

Additional DB docs can be found in the contributing readme.

Testing

Run tests

npm run test

If you're running in docker compose prefix the command with docker-compose exec

NODE_ENV=test docker-compose exec app npm run test

Run tests in watch mode

npm run test:watch

API Specification

We use Open API 3.0 to define the API structure of the application.

You can see our full API documentation by navigating to http://localhost:8000/api/v1/docs.

Schema

Expand to view a diagram illustrating the proposed schema for Chapter.

a diagram illustrating the proposed schema for Chapter

created with DBeaver.io

User Stories

MVP

The MVP user stories are shown in the MVP Project kanban / cards and as issues marked with "MVP".

Post-MVP

We are maintaining a list of post-MVP conversations and user stories using the "Roadmap" tag.

Quincy Larson is the project lead. FreeCodeCamp will start "dogfooding" the MVP with several of its local study groups.

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

UI / UX / Design References

Contributing

License

Copyright © 2020 freeCodeCamp.org

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

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Quincy Larson

💻 📖 🤔

Tim Chen

💻 🚧 🔧

nikjohn

💻 📖 🔧

Matteo Giaccone

📦 💻 📖

Ian Littman

💻

Abrar Rauf

📖

Jonathan Chhabra

🚧 💻

Thomas Roest

💻

Scott Brenner

📖 🔧

Jim Ciallella

📖

Joel Rozen

💻

yitzhak-bloy

📖

Rob Bertram

💻

Fran Zekan

💻 🔧

Jesuloba Egunjobi

📦

Lakshmipriya

📖

Ronald van der Bergh

📖

Rodolfo Mendes

📖

Chris Gonzalez

📖

Gonzalo Gras Cantou

📖

Vivek Agrawal

📖 🔧 🎨

Kognise

💻

Wendel Nascimento

💻

Praveen Durairaju

💻

Shangeeth Sivan

📖

Conor Broderick

💻

PrestonElliott

📖 💻

VimalRaj Selvam

💻

Franco Correa

💻

Manoel

📖

Dillon Mulroy

📖

Mirza Chilman

📖

Cecilia

🤔

Sean

🎨

Madalena

🎨

Ariel Barboza

📖

Jonathan Seubert

🎨 📖

Juli Odomo

🎨

Vaibhav Singh

💻

Subroto

💻

Edward Weymouth

📖

Aryan J

💻

Ashraf Nazar

📖

Vamsi Settypalli

📖

sushmeet sunger

📖

Paul Gamble

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

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.