{"id":13557641,"url":"https://github.com/fossasia/open-event-server","last_synced_at":"2025-05-13T17:07:51.748Z","repository":{"id":31704458,"uuid":"35270176","full_name":"fossasia/open-event-server","owner":"fossasia","description":"The Open Event Organizer Server to Manage Events https://test-api.eventyay.com","archived":false,"fork":false,"pushed_at":"2025-01-24T01:05:30.000Z","size":112209,"stargazers_count":3004,"open_issues_count":129,"forks_count":1893,"subscribers_count":48,"default_branch":"development","last_synced_at":"2025-04-23T23:07:32.278Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://api.eventyay.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fossasia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-08T09:16:19.000Z","updated_at":"2025-04-22T19:21:23.000Z","dependencies_parsed_at":"2023-01-14T19:45:31.799Z","dependency_job_id":"8877ed6b-d848-4929-8311-7cf44a015154","html_url":"https://github.com/fossasia/open-event-server","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Fopen-event-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Fopen-event-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Fopen-event-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fossasia%2Fopen-event-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fossasia","download_url":"https://codeload.github.com/fossasia/open-event-server/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250528728,"owners_count":21445516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:04:27.868Z","updated_at":"2025-04-23T23:08:08.208Z","avatar_url":"https://github.com/fossasia.png","language":"Python","funding_links":["https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/"],"categories":["Python","Software","Apps","HarmonyOS","others","Productivity Tools","Polls and Events","\u003ca id=\"tag-internet\" href=\"#tag-internet\"\u003eInternet\u003c/a\u003e"],"sub_categories":["Polls and Events","CRM","Windows Manager","Media Servers","Video Streaming"],"readme":"# Open Event Server\n\n![Open Event Server](/docs/images/open-event-server.png)\n\n[![GitHub release](https://img.shields.io/github/release/fossasia/open-event-server.svg)](https://github.com/fossasia/open-event-server/releases/latest)\n[![Build Status](https://travis-ci.org/fossasia/open-event-server.svg?branch=development)](https://travis-ci.org/fossasia/open-event-server)\n[![CircleCI Build Staus Badge](https://img.shields.io/circleci/build/github/fossasia/open-event-server?label=CircleCI%20Build)](https://www.circleci.com/gh/fossasia/open-event-server)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/f5036c0e23b44270ad24397e338b8412)](https://www.codacy.com/gh/fossasia/open-event-server/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=fossasia/open-event-server\u0026amp;utm_campaign=Badge_Grade)\n[![Codecov branch](https://codecov.io/gh/fossasia/open-event-server/branch/development/graph/badge.svg?style=flat-square)](https://codecov.io/gh/fossasia/open-event-server)\n[![Gitter](https://img.shields.io/badge/chat-on%20gitter-ff006f.svg?style=flat-square)](https://gitter.im/fossasia/open-event-server)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n[![Mailing List](https://img.shields.io/badge/Mailing%20List-FOSSASIA-blue.svg)](https://groups.google.com/forum/#!forum/open-event)\n[![Twitter Follow](https://img.shields.io/twitter/follow/eventyay.svg?style=social\u0026label=Follow\u0026maxAge=2592000?style=flat-square)](https://twitter.com/eventyay)\n\n\u003e **The Open Event Server enables organizers to manage events from concerts to conferences and meet-ups.**\n\nIt 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**.\n\nThe **Open Event Server** exposes a well documented [JSON:API Spec](http://jsonapi.org/) Compliant `REST API` that can be used by external services *(like the Open Event App generators and the frontend)* to access \u0026 manipulate the data.\n\n**API Documentation:**\n- Every installation of the project includes **API docs**, (e.g. here on the test install [https://open-event-api.herokuapp.com](https://open-event-api.herokuapp.com)).\n-  A hosted version of the **API docs** is available in the `gh-pages` branch of the repository at [http://dev.eventyay.com/api/v1](http://dev.eventyay.com/api/v1)\n\n## Communication\n\n* Please join our **[mailing list](https://groups.google.com/forum/#!forum/open-event)** to discuss questions regarding the project.\n\u003e https://groups.google.com/forum/#!forum/open-event\n\n* Our chat channel is on **[Gitter](https://gitter.im/fossasia/open-event-server)**\n\u003e [gitter.im/fossasia/open-event-server](https://gitter.im/fossasia/open-event-server)\n\n## Demo Version\n\nA demo version is automatically deployed from our repositories:\n* Deployment from the `master` branch - **[open-event-api.herokuapp.com](https://open-event-api.herokuapp.com/)**\n* Deployment from the `development` branch - **[open-event-api-dev.herokuapp.com](https://open-event-api-dev.herokuapp.com/)**\n\n## Installation\n\nThe Open Event Server can be easily deployed on a variety of platforms. Detailed platform-specific installation instructions have been provided below.\n\n\n1. [Installation Instructions](/docs/installation/basic.md)\n1. [Vagrant Installation](/docs/installation/vagrant.md)\n1. [Deployment on Google Compute Engine](/docs/installation/google.md)\n1. [Deployment on Google Container Engine (Kubernetes)](/docs/installation/gce-kubernetes.md)\n1. [Deployment on AWS EC2](/docs/installation/aws.md)\n1. [Deployment on Digital Ocean](/docs/installation/digital-ocean.md)\n1. [Deployment with Docker](/docs/installation/docker.md)\n1. [Deployment on Heroku](/docs/installation/heroku.md)\n\n\nOne-click Heroku deployment is also available:\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n\n## Technology Stack\n\nPlease get familiar with the components of the project in order to be able to contribute.\n\n### Components\n\n* Database - [PostgreSQL](https://www.postgresql.org)\n* Web framework - [Flask](http://flask.pocoo.org)\n* App server - [uWSGI](https://github.com/unbit/uwsgi)\n* Web Server - [NGINX](https://www.nginx.com)\n\nNote that open-event-server **works with Python 3.8** at the moment.\n\n### External Service Dependencies\n\n#### OAuth Social Authentication\n\nOAuth is used to get information from Facebook and Google accounts, that enables users to sign in with their respective credentials:\n 1. Google - https://accounts.google.com/o/oauth2/auth\n 2. Facebook - https://graph.facebook.com/oauth\n\n#### Twitter\n\nTwitter feed integration is provided in the public event pages.\n\nRequired keys can be obtained from [https://dev.twitter.com/overview/documentation](https://dev.twitter.com/overview/documentation)\n\n#### Instagram\n\nIt is possible to extend the functionality and offer images from Instagram in the event service.\n\nRequired keys can be obtained from [https://www.instagram.com/developer/authentication/](https://www.instagram.com/developer/authentication/).\n\n#### Google Maps\n\nGoogle maps is used to get information about location (info about country, city, latitude and longitude).\n\nRequired keys can be obtained from [https://developers.google.com/maps/documentation/javascript/get-api-key](https://developers.google.com/maps/documentation/javascript/get-api-key).\n\n#### Media Storage - Local/Amazon S3/Google Cloud\n\nMedia (like audio, avatars and logos) can be stored either Locally, on Amazon S3 or on Google Storage.\n\n1. [Amazon S3 Setup Instructions](/docs/general/amazon-s3.md)\n1. [Google Cloud Setup Instructions](https://cloud.google.com/storage/docs/migrating#defaultproj)\n\n#### Emails - SMTP/Sendgrid\n\nThe server can send emails via SMTP or using the sendgrid API.\n\n1. SMTP can be configured directly at `admin/settings`\n2. Obtaining [Sendgrid API Token](https://sendgrid.com/docs/User_Guide/Settings/api_keys.html).\n\n#### Heroku API\n\nIf the application is deployed on Heroku, we use the heroku API to obtain the latest release and also to display the heroku.\n\nThe required token can be obtained from [https://devcenter.heroku.com/articles/authentication](https://devcenter.heroku.com/articles/authentication).\n\n#### Payment Gateways\n\nFor ticket sales the service integrates payment gateways:\n 1. Stripe - [Obtaining Keys](https://support.stripe.com/questions/where-do-i-find-my-api-keys).\n 2. Paypal - [Obtaining Credentials](https://developer.paypal.com/docs/classic/lifecycle/ug_sandbox/).\n\n## Data Access\n\n#### Import \u0026 Export\n\n**Import:**\n\nOpen Event server supports multiple formats as a valid source for import.\n\n- A **zip archive** with JSON (matching the API structure) and binary media files. Read more about this [here](/docs/general/import-export.md).\n- The **Pentabarf XML** format is also supported as a valid import source. ([Sample file](https://archive.fosdem.org/2016/schedule/xml)).\n\n**Export:**\n\nThe event data and the sessions can be exported in various formats.\n- A **zip archive** with JSON (matching the API structure) and binary media files. Read more about this [here](/docs/general/import-export.md).\n- The **Pentabarf XML** format. ([Sample file](https://archive.fosdem.org/2016/schedule/xml)).\n- The **iCal** format. ([Sample file](https://archive.fosdem.org/2016/schedule/ical)).\n- The **xCal** format. ([Sample file](https://archive.fosdem.org/2016/schedule/xcal)).\n\n\n## Roles\n\nThe system has two kinds of role type.\n\n1. System roles are related to the Open Event organization and operator of the application.\n2. Event Roles are related to the users of the system with their different permissions.\n\nRead more [here](/docs/general/roles.md).\n\n## Development\n\n### Initial setup\n\n#### Python and Poetry installatioon\n\nWe use Python 3.8. If your operating system does not provide Python 3.8 out of the\nbox, it is best installed using [`pyenv`](https://github.com/pyenv/pyenv/).\n\nFor Mac users, see [here](https://opensource.com/article/19/5/python-3-default-mac) for more info.\n```bash\n$ brew install pyenv\n$ pyenv init # follow instructions to add run commands to your environment\n```\nAfter editing your environment file, reload your shell and navigate to this repo, then install `3.8.17` to be used locally:\n```bash\n$ pyenv install 3.8.17\n$ cd ...your../open-event-server/\n$ pyenv local 3.8.17\n```\nNow the Python version should automatically change when used within open-event-server.\n\n\nWe also expect [poetry](https://python-poetry.org/) being available.\n\n#### Package setup\n\nChange into the `open-event-server` directory, and execute the following commands:\n\nActivate Python 3.8.17 locally\n```bash\n$ pyenv local 3.8.17\n```\n\nInstall dependencies using poetry\n```bash\n$ poetry install --with dev\n```\n\nActivate the pre-commit hook\n```bash\n$ poetry run pre-commit install\n```\n\nWith that every git commit will be checked/formatted with various tools before\nbeing actually committed. \n\n\n### Development Mode\n\nTo enable development mode (development Flask config), set `APP_CONFIG` environment variable to \"config.DevelopmentConfig\".\n\n```\nexport APP_CONFIG=config.DevelopmentConfig\n```\n\n### Model updates \u0026 migrations\n\nWhen writing changes to models. Use migrations.\n\n```\n # To generate a migration after doing a model update\n python3 manage.py db migrate\n\n # To sync Database\n python3 manage.py db upgrade\n\n # To rollback\n python3 manage.py db downgrade\n```\n\nWhen checking in code for models, please update migrations as well.\n\n### API documentation\n\nThe api is documented using [api blueprint](https://apiblueprint.org/). First, generate the description/blueprint `.apib` file using:\n\n```bash\nnpx aglio --input docs/api/api_blueprint_source.apib --compile --output docs/api/api_blueprint.apib # generate the description .apib file\n\n```\n\nLocal changes to the description can be viewed using e.g. the [apiary gem](https://help.apiary.io/tools/apiary-cli/):\n\n```bash\ngem install apiaryio # dependency\napiary preview --path docs/api/api_blueprint.apib # opens browser with generated file\n```\n\n### Testing\n\nClone the repo and set up the server according to the steps listed. Make sure you have installed [Poetry](https://python-poetry.org/docs) and all the dependencies required for testing by running\n\n```\n# Install Poetry\ncurl -sSL https://install.python-poetry.org | python -\nsource ~/.profile\n\n# Install Python dependencies\npoetry install\n\n# Activate project's virtual environment\npoetry shell\n```\n\n#### Running unit tests\n\n* If you have docker installed and want to run tests faster, run\n\n```shell script\n./scripts/test_db.sh\n```\n\nAnd set appropriate value of `TEST_DATABASE` in `.env`\n\n```shell script\nTEST_DATABASE_URL=postgresql://test@localhost:5433/test\n```\n\n* Then go to the project directory and run the following command:\n```\npytest tests/\n```\n\n#### Running robot framework tests\n* Make sure you have FireFox installed\n* Start your local flask server instance.\n* Go to the project directory and Run the tests by using the following command.\n\n```\nrobot -v SERVER:{server_name} -v SUPERUSER_USERNAME:{super_user_email_here} -v SUPERUSER_PASSWORD:{super_user_password} tests/robot\n```\n\nChange all the parameters inside `{}` as per your local server. The final command would look like:\n```\nrobot -v SERVER:localhost:5000 -v SUPERUSER_USERNAME:test@opev.net -v SUPERUSER_PASSWORD:test_password tests/robot\n```\n* Once the tests are completed, a report and a log would be generated at `report.html` and `log.html` respectively in your root directory.\n\n### Pre-commits guide\n\nGit hook scripts are useful for identifying simple issues before submission to code review.\n\n#### Install the git hook scripts:\n* run pre-commit install to set up the git hook scripts\n```sh\n$ pre-commit install\npre-commit installed at .git/hooks/pre-commit\n```\n* now pre-commit will run automatically on git commit!\n\n#### For configuration, [Click Here](https://pre-commit.com/)\n\n## Logging\n\nCertain 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](/docs/general/logs.md).\n\n## Internationalization (i18n)\n\n[![Translation status](https://hosted.weblate.org/widgets/open-event/-/multi-blue.svg)](https://hosted.weblate.org/engage/open-event)\n\nOpen Event is being translated using Weblate, a web tool designed to ease translating for both developers and translators.\n\nIf you would like to contribute to the translation of Open Event, you need to [register on this server](https://hosted.weblate.org/accounts/register/).\n\nOnce you have activated your account just proceed to the [translation section](https://hosted.weblate.org/projects/open-event/).\n\n## Contributions, Bug Reports, Feature Requests\n\nThis 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](https://github.com/fossasia/open-event/tree/master/docs/dev-handbook) in order to get a basic understanding of the ecosystem.\n\n## Branch Policy\n\nWe have the following branches :\n * **development**\n\t All development goes on in this branch. If you're making a contribution, please make a pull request to _development_.\n\t 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.)\n\n * **master**\n   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).)\n * **gh-pages**\n   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.\n\n## Release Policy\n\nThe 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.\n\n## Contributions Best Practices\n\n**Commits**\n* Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)\n* 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 )\n* 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 )\n* 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.\n\n**Feature Requests and Bug Reports**\n* When you file a feature request or when you are submitting a bug report to the [issue tracker](https://github.com/fossasia/open-event-server/issues), make sure you add steps to reproduce it. Especially if that bug is some weird/rare one.\n\n**Join the development**\n* 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 :wink: 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.)\n* 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.\n* 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.\n\n## License\n\nThis project is currently licensed under the **[GNU General Public License v3](LICENSE)**.\n\n\u003e To obtain the software under a different license, please contact [FOSSASIA](http://blog.fossasia.org/contact/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossasia%2Fopen-event-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffossasia%2Fopen-event-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffossasia%2Fopen-event-server/lists"}