Skip to content

mikamai/event-manager-backend

Repository files navigation

Mikamai Event Manager

Mikamai's event management system, used by us as well as many communities around the world to gather and meet up. Publicly available at https://meetable.it.

Design

Event Manager is a Phoenix application that exposes a GraphQL API for managing events and participations.

Authentication and Authorization rely on two OAuth 2.0 protocols, OpenID Connect 1.0 and User-Managed Access 2.0. OpenID is used for authenticating users and give them access to their own events and participations through OAuth 2.0 scopes, while UMA 2 is used to manage sharing permission over a group of users (for example, multiple organizers managing a group).

Any compatible provider should work, but the public instance for Meetable uses Keycloak, so this is what it is most tested against.

Quickstart

Docker Compose

Supporting services such as PostgreSQL and Keycloak can be started as Docker containers.
Simply running docker-compose up -d will start them in background and expose port 5432 for Postgres and 8080 for Keycloak. The application is preconfigured to use them.

Run

Classic Phoenix procedures:

# Install dependencies
mix deps.get

# Prepare the database schema

mix ecto.migrate

# Start the app

mix phx.server

The app will be available on port 4000.

GraphQL Clients

The recommended GraphQL client to use when developing the API is Insomnia, as it has first class support for both GraphQL and OAuth 2.0.

Other good clients are GraphQL Playground and Altair, but you need to manually provide OAuth 2.0 tokens as the Authorization header, with Bearer scheme.

If you don't wish to install a desktop application, or there are none available for your system, a web version of GraphQL Playground is available at https://localhost:4000/graphql/explorer.

Grafical Clients

The official web client for Meetable is available on GitHub.

Contributing

Read our Code of Conduct and our Contribution Guide for more information about how to get involved.

License

Mikamai Event Manager
Copyright (C) 2019 MIKAMAI S.R.L.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Releases

No releases published

Packages

No packages published

Languages