• Stars
    star
    2,906
  • Rank 15,614 (Top 0.4 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Open Event Organizer Server to Manage Events https://test-api.eventyay.com

Open Event Server

Open Event Server

GitHub release Build Status CircleCI Build Staus Badge Codacy Badge Codecov branch Gitter Reviewed by Hound Mailing List Twitter Follow

The Open Event Server enables organizers to manage events from concerts to conferences and meet-ups.

It offers features for events with several tracks and venues. Event managers can create invitation forms for speakers and build schedules in a drag and drop interface. The event information is stored in a database. The system provides API endpoints to fetch the data, and to modify and update it. Organizers can import and export event data in a standard compressed file format that includes the event data in JSON and binary media files like images and audio.

The Open Event Server exposes a well documented JSON:API Spec Compliant REST API that can be used by external services (like the Open Event App generators and the frontend) to access & manipulate the data.

API Documentation:

Communication

  • Please join our mailing list to discuss questions regarding the project.

https://groups.google.com/forum/#!forum/open-event

  • Our chat channel is on Gitter

gitter.im/fossasia/open-event-server

Demo Version

A demo version is automatically deployed from our repositories:

Installation

The Open Event Server can be easily deployed on a variety of platforms. Detailed platform-specific installation instructions have been provided below.

  1. Installation Instructions
  2. Vagrant Installation
  3. Deployment on Google Compute Engine
  4. Deployment on Google Container Engine (Kubernetes)
  5. Deployment on AWS EC2
  6. Deployment on Digital Ocean
  7. Deployment with Docker
  8. Deployment on Heroku

One-click Heroku deployment is also available:

Deploy

Technology Stack

Please get familiar with the components of the project in order to be able to contribute.

Components

Note that open-event-server works with Python 3.8 at the moment.

External Service Dependencies

OAuth Social Authentication

OAuth is used to get information from Facebook and Google accounts, that enables users to sign in with their respective credentials:

  1. Google - https://accounts.google.com/o/oauth2/auth
  2. Facebook - https://graph.facebook.com/oauth

Twitter

Twitter feed integration is provided in the public event pages.

Required keys can be obtained from https://dev.twitter.com/overview/documentation

Instagram

It is possible to extend the functionality and offer images from Instagram in the event service.

Required keys can be obtained from https://www.instagram.com/developer/authentication/.

Google Maps

Google maps is used to get information about location (info about country, city, latitude and longitude).

Required keys can be obtained from https://developers.google.com/maps/documentation/javascript/get-api-key.

Media Storage - Local/Amazon S3/Google Cloud

Media (like audio, avatars and logos) can be stored either Locally, on Amazon S3 or on Google Storage.

  1. Amazon S3 Setup Instructions
  2. Google Cloud Setup Instructions

Emails - SMTP/Sendgrid

The server can send emails via SMTP or using the sendgrid API.

  1. SMTP can be configured directly at admin/settings
  2. Obtaining Sendgrid API Token.

Heroku API

If the application is deployed on Heroku, we use the heroku API to obtain the latest release and also to display the heroku.

The required token can be obtained from https://devcenter.heroku.com/articles/authentication.

Payment Gateways

For ticket sales the service integrates payment gateways:

  1. Stripe - Obtaining Keys.
  2. Paypal - Obtaining Credentials.

Data Access

Import & Export

Import:

Open Event server supports multiple formats as a valid source for import.

  • A zip archive with JSON (matching the API structure) and binary media files. Read more about this here.
  • The Pentabarf XML format is also supported as a valid import source. (Sample file).

Export:

The event data and the sessions can be exported in various formats.

  • A zip archive with JSON (matching the API structure) and binary media files. Read more about this here.
  • The Pentabarf XML format. (Sample file).
  • The iCal format. (Sample file).
  • The xCal format. (Sample file).

Roles

The system has two kinds of role type.

  1. System roles are related to the Open Event organization and operator of the application.
  2. Event Roles are related to the users of the system with their different permissions.

Read more here.

Development

Initial setup

Python and Poetry installatioon

We use Python 3.8. If your operating system does not provide Python 3.8 out of the box, it is best installed using pyenv.

For Mac users, see here for more info.

$ brew install pyenv
$ pyenv init # follow instructions to add run commands to your environment

After editing your environment file, reload your shell and navigate to this repo, then install 3.8.17 to be used locally:

$ pyenv install 3.8.17
$ cd ...your../open-event-server/
$ pyenv local 3.8.17

Now the Python version should automatically change when used within open-event-server.

We also expect poetry being available.

Package setup

Change into the open-event-server directory, and execute the following commands:

Activate Python 3.8.17 locally

$ pyenv local 3.8.17

Install dependencies using poetry

$ poetry install --with dev

Activate the pre-commit hook

$ poetry run pre-commit install

With that every git commit will be checked/formatted with various tools before being actually committed.

Development Mode

To enable development mode (development Flask config), set APP_CONFIG environment variable to "config.DevelopmentConfig".

export APP_CONFIG=config.DevelopmentConfig

Model updates & migrations

When writing changes to models. Use migrations.

 # To generate a migration after doing a model update
 python3 manage.py db migrate

 # To sync Database
 python3 manage.py db upgrade

 # To rollback
 python3 manage.py db downgrade

When checking in code for models, please update migrations as well.

API documentation

The api is documented using api blueprint. First, generate the description/blueprint .apib file using:

npx aglio --input docs/api/api_blueprint_source.apib --compile --output docs/api/api_blueprint.apib # generate the description .apib file

Local changes to the description can be viewed using e.g. the apiary gem:

gem install apiaryio # dependency
apiary preview --path docs/api/api_blueprint.apib # opens browser with generated file

Testing

Clone the repo and set up the server according to the steps listed. Make sure you have installed Poetry and all the dependencies required for testing by running

# Install Poetry
curl -sSL https://install.python-poetry.org | python -
source ~/.profile

# Install Python dependencies
poetry install

# Activate project's virtual environment
poetry shell

Running unit tests

  • If you have docker installed and want to run tests faster, run
./scripts/test_db.sh

And set appropriate value of TEST_DATABASE in .env

TEST_DATABASE_URL=postgresql://test@localhost:5433/test
  • Then go to the project directory and run the following command:
pytest tests/

Running robot framework tests

  • Make sure you have FireFox installed
  • Start your local flask server instance.
  • Go to the project directory and Run the tests by using the following command.
robot -v SERVER:{server_name} -v SUPERUSER_USERNAME:{super_user_email_here} -v SUPERUSER_PASSWORD:{super_user_password} tests/robot

Change all the parameters inside {} as per your local server. The final command would look like:

robot -v SERVER:localhost:5000 -v SUPERUSER_USERNAME:[email protected] -v SUPERUSER_PASSWORD:test_password tests/robot
  • Once the tests are completed, a report and a log would be generated at report.html and log.html respectively in your root directory.

Pre-commits guide

Git hook scripts are useful for identifying simple issues before submission to code review.

Install the git hook scripts:

  • run pre-commit install to set up the git hook scripts
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
  • now pre-commit will run automatically on git commit!

For configuration, Click Here

Logging

Certain information is being logged and stored in the database for future reference, resolving conflicts in case of hacks and for maintaining an overview of the system. Read more about logging here.

Internationalization (i18n)

Translation status

Open Event is being translated using Weblate, a web tool designed to ease translating for both developers and translators.

If you would like to contribute to the translation of Open Event, you need to register on this server.

Once you have activated your account just proceed to the translation section.

Contributions, Bug Reports, Feature Requests

This is an Open Source project and we would be happy to see contributors who report bugs and file feature requests submitting pull requests as well. Please report issues here https://github.com/fossasia/open-event-server/issues. It is also recommended to go through the developer handbook in order to get a basic understanding of the ecosystem.

Branch Policy

We have the following branches :

  • development All development goes on in this branch. If you're making a contribution, please make a pull request to development. All PRs must pass a build check and a unit-test check on Travis (https://open-event-api-dev.herokuapp.com - Is running off of the development branch. It is hosted on Heroku.)

  • master This contains shipped code. After significant features/bug-fixes are accumulated on development, we make a version update and make a release. (https://api.eventyay.com - Is running off of the master branch. Hosted on Google Cloud Platform (Google Container Engine + Kubernetes).)

  • gh-pages This contains the documentation website on http://dev.eventyay.com. The site is built automatically on each commit in the development branch through a script and using travis. It includes the md files of the Readme and /docs folder. It also includes javadocs.

Release Policy

The tentative release policy, for now (since there is a lot of activity and a lot of bugs), is an alpha release every Monday and Friday (since we see more activity on weekends). So, any bug-fixes will not be reflected at eventyay.com until a new release is made in the master branch.

Contributions Best Practices

Commits

  • Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)
  • Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (More info at https://github.com/blog/1506-closing-issues-via-pull-requests )
  • When you make very minor changes to a PR of yours (like for example fixing a failing travis build or some small style corrections or minor changes requested by reviewers) make sure you squash your commits afterward so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at https://davidwalsh.name/squash-commits-git )
  • When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change or a link to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker.

Feature Requests and Bug Reports

  • When you file a feature request or when you are submitting a bug report to the issue tracker, make sure you add steps to reproduce it. Especially if that bug is some weird/rare one.

Join the development

  • Before you join development, please set up the system on your local machine and go through the application completely. Press on any link/button you can find and see where it leads to. Explore. (Don't worry ... Nothing will happen to the app or to you due to the exploring ๐Ÿ˜‰ Only thing that will happen is, you'll be more familiar with what is where and might even get some cool ideas on how to improve various aspects of the app.)
  • Test the application on your machine and explore the admin area. The test deployment on Heroku will not give you access to the admin section, where you can switch on/off modules, e.g. ticketing and add keys for services, e.g. storage on S3.
  • If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely.

License

This project is currently licensed under the GNU General Public License v3.

To obtain the software under a different license, please contact FOSSASIA.

More Repositories

1

visdom

A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy.
Python
10,012
star
2

phimpme-android

Phimp.me Photo Imaging and Picture Editor https://play.google.com/store/apps/details?id=org.fossasia.phimpme
Java
2,576
star
3

susi_server

SUSI.AI server backend - the Artificial Intelligence server for personal assistants https://susi.ai
Java
2,503
star
4

susi_android

SUSI.AI Android App https://play.google.com/apps/testing/ai.susi
Kotlin
2,419
star
5

open-event-frontend

The frontend for the Open Event API Server https://test.eventyay.com
JavaScript
2,335
star
6

open-event-droidgen

Open Event Android App Generator https://github.com/fossasia/open-event-android/raw/apk/sample-apk-fossasia17-development.apk
Java
2,048
star
7

pslab-android

PSLab Android App https://play.google.com/store/apps/details?id=io.pslab
Java
2,046
star
8

susi.ai

SUSI.AI Web Client https://susi.ai
JavaScript
2,033
star
9

open-event-wsgen

Open Event Website App Generator https://sched.eventyay.com
JavaScript
2,013
star
10

open-event-attendee-android

Open Event Attendee Android General App https://github.com/fossasia/open-event-android/blob/apk/open-event-dev-app-playStore-debug.apk
Kotlin
1,947
star
11

star-me

Star FOSSASIA Repositories on Github and Support the Community
JavaScript
1,905
star
12

fossasia.org

FOSSASIA Website https://fossasia.org
Less
1,883
star
13

susi_iOS

SUSI AI iOS app http://susi.ai
Swift
1,869
star
14

loklak_search

Frontend Search for loklak server https://loklak.org
TypeScript
1,831
star
15

badgemagic-android

Badge Magic with LEDs - Android App https://play.google.com/apps/testing/org.fossasia.badgemagic
Dart
1,828
star
16

badgeyay

Attendee Badge Generator for Conferences
JavaScript
1,787
star
17

open-event-organizer-android

Open Event Mobile App for Organizers and Entry Managers https://play.google.com/store/apps/details?id=com.eventyay.organizer
Java
1,784
star
18

meilix

Beautiful Linux System https://meilix.org | APT Repo: http://meilix.fossasia.org
Python
1,772
star
19

pslab-desktop

PSLab Desktop Application https://pslab.io
JavaScript
1,763
star
20

susper.com

Susper Decentralised Search Engine https://susper.com
TypeScript
1,734
star
21

open-event

Open Event Project, Samples, Documentation and Artwork http://open-event-dev.herokuapp.com
Python
1,701
star
22

neurolab-android

NeuroLab Android https://github.com/fossasia/neurolab-android/raw/apk/neurolab-dev-debug.apk
Java
1,700
star
23

labs.fossasia.org

Projects Website for FOSSASIA http://labs.fossasia.org
CSS
1,669
star
24

query-server

Query Server Search Engines
Python
1,659
star
25

gci16.fossasia.org

FOSSASIA Google Code-In Website 2016/17 http://gci16.fossasia.org
HTML
1,652
star
26

pslab-hardware

PSLab Hardware Design and Schematics https://pslab.io
Prolog
1,642
star
27

codeheat.org

Codeheat Coding Contest Website https://codeheat.org
Less
1,628
star
28

pslab-python

Python Library for PSLab Desktop: https://pslab.io
Python
1,624
star
29

pslab-scripts

Pocket Science Lab - Scripts for Sensor Experiments
Python
1,604
star
30

susi_linux

Hardware for SUSI AI https://susi.ai
Python
1,604
star
31

flappy-svg

Flappy Bird in SVG. Play it at http://fossasia.github.io/flappy-svg/
JavaScript
1,604
star
32

gci17.fossasia.org

FOSSASIA Google Code-In Website 2017/18 https://gci17.fossasia.org
CSS
1,598
star
33

gci15.fossasia.org

FOSSASIA Google Code-In Website 2015/16 http://gci15.fossasia.org
HTML
1,596
star
34

2017.fossasia.org

FOSSASIA Summit 2017 https://2017.fossasia.org
HTML
1,580
star
35

2018.fossasia.org

FOSSASIA Summit 2018 https://2018.fossasia.org
HTML
1,577
star
36

fossasia-communities

FOSSASIA API Files of Communities in Asia
1,576
star
37

susi_skill_cms

A web application framework to edit susi skills http://skills.susi.ai
JavaScript
1,572
star
38

open-event-attendee-ios

iOS app for open event
Swift
1,570
star
39

gci14.fossasia.org

FOSSASIA Google Code-In Website 2014/15 http://gci14.fossasia.org
JavaScript
1,569
star
40

2016.fossasia.org

FOSSASIA Summit 2016 https://2016.fossasia.org
CSS
1,564
star
41

2012.fossasia.org

FOSSASIA Summit 2012 Event Site https://2012.fossasia.org
CSS
1,563
star
42

knittingpattern

A Python Library for Knitting Patterns
Python
1,562
star
43

loklak_webclient

loklak web application
JavaScript
1,553
star
44

pslab-firmware

Firmware for PSLab Open Hardware Platform https://pslab.io
C
1,550
star
45

loklak_wok_android

"loklak wok" is a harvesting peer for the loklak_server https://github.com/fossasia/loklak_wok_android/raw/apk/loklak_wok_1.2_20160201.apk
Java
1,549
star
46

directory.api.fossasia.net

Python
1,547
star
47

neurolab-hardware

Neurolab Hardware
1,541
star
48

yaydoc

Docs! Yay! http://yaydoc.org
JavaScript
1,540
star
49

2015.fossasia.org

FOSSASIA Summit 2015 Event Site https://2015.fossasia.org
CSS
1,539
star
50

susi_chromebot

SUSI.AI Chrome Extension
JavaScript
1,538
star
51

meilix-systemlock

Meilix system lock
Python
1,537
star
52

2014.fossasia.org

FOSSASIA Summit 2014 Event Site http://2014.fossasia.org
HTML
1,537
star
53

x-mario

x-mario, the gaming distro
Shell
1,534
star
54

phimpme-drupal

Phimp.me - Photo App on Drupal
PHP
1,534
star
55

knitlib

Knitting backend library for knitting machines
Python
1,532
star
56

yaydoc-artwork

Open Source Books
1,532
star
57

phimpme-wordpress

Phimp.me - Photo App on Wordpress
PHP
1,532
star
58

sg18.sciencehack.asia

UNESCO Hackathon Website at the FOSSASIA Summit Singapore https://sg18.sciencehack.asia
CSS
1,532
star
59

searss

Search to RSS tool
Python
1,531
star
60

CommonsNet

Sharing and Transparency for WiFi Networks
JavaScript
1,531
star
61

knitweb

knitting web app frontend and backend
JavaScript
1,530
star
62

meilix-generator

WebApp for generating a custom ISO image based on Meilix http://meilix.org
HTML
1,530
star
63

pslab-case

PSLab Case https://pslab.io
1,530
star
64

fossasia.net

FOSSASIA.net Website https://fossasia.net
HTML
1,530
star
65

2011.fossasia.org

FOSSASIA Summit 2011 Event Site http://2011.fossasia.org
HTML
1,530
star
66

unesco.sciencehack.asia

UNESCO Hackathon Website https://unesco.sciencehack.asia
CSS
1,530
star
67

pslab-expeyes

PSLab for ExpEYES - Science Experiments and Data Acquisition for Physics Education https://pslab.io
Python
1,529
star
68

api.fossasia.net

FOSSASIA API
JavaScript
1,529
star
69

xmario_buildscript

x-mario build script
Shell
1,529
star
70

fossasia-nodemailer

JavaScript
1,529
star
71

2023.fossasia.org

HTML
1,528
star
72

hotelxoai.com

The Open Source Hotel in the Mekong Delta in Vietnam
HTML
1,527
star
73

2010.fossasia.org

FOSSASIA Summit 2010 Event Site http://2010.fossasia.org
HTML
1,527
star
74

fossasia11-drupal

FOSSASIA 2011 Drupal Site
PHP
1,526
star
75

blog.fossasia.org

Issue Tracker for https://blog.fossasia.org
1,526
star
76

susi_smart_box

SUSI.AI Smart Box https://susi.ai
1,526
star
77

fossasia10-drupal

FOSSASIA 2010 Drupal Site
PHP
1,525
star
78

perspektive89.com

Open Source Journal Perspektive89.com
1,525
star
79

cmap.api.fossasia.net

FOSSASIA Community Map
JavaScript
1,523
star
80

feed.api.fossasia.net

PHP
1,522
star
81

loklak-webtweets

FOSSASIA Tweets with loklak http://fossasia.github.io/loklak-webtweets/
Less
1,522
star
82

foss.vn

FOSS.vn Website http://foss.vn
HTML
1,522
star
83

labyrinth

FOSSASIA Labyrinth
JavaScript
1,519
star
84

pslab-test-jig

PSLab Test Jig - Boards to test PSLab hardware https://pslab.io
1,518
star
85

jugaadfest.com

Jugaadfest in India https://jugaadfest.com
HTML
1,518
star
86

knitpat

Knitting Pattern Format
Python
1,518
star
87

susi_tweetbot

Twitter Bot for Susi http://susi.ai
JavaScript
1,517
star
88

open-event-scraper

Google spreadsheet parsing for Open Event JSON
Python
1,516
star
89

fossasia.github.io

FOSSASIA.GitHub.io
HTML
1,516
star
90

knitserver

JavaScript
1,515
star
91

open-event-next

Open Event Frontend "Next Version" with Vue.js
TypeScript
1,515
star
92

susi_skill_data

A storage place for SUSI.AI skills https://susi.ai
1,514
star
93

loklak_tweetheatmap

Heat map with tweets by search query using Loklak API and OpenLayers 3
JavaScript
1,513
star
94

sciencehack.asia

Science Hack Website http://sciencehack.asia
CSS
1,512
star
95

fossasia-artwork

Artwork related to FOSSASIA
1,512
star
96

susi_telegrambot

Susi Telegram Bot http://susi.ai
JavaScript
1,511
star
97

timeline.api.fossasia.net

JavaScript
1,511
star
98

susi_fbbot

Susi Facebook Bot http://susi.ai
JavaScript
1,510
star
99

susi_slackbot

Ask Susi Messengers http://susi.ai
JavaScript
1,510
star
100

kniteditor

Kniteditor
Inno Setup
1,509
star