Powered by Dribdat

Realtime collaborative hackathon tracks on all platforms.

The DayOne hackathon is powered by Dribdat - an open source (MIT license) project board for splendid collaboration. Here we collect and showcase all projects from an event in one place, under shared conditions. For more information see the About page.

Other hackathons running on Dribdat include:

Dribdat is built by a dedicated team based in Switzerland with the following technologies:


Travis Coveralls Mattermost

An open source platform for data-driven team collaboration, such as Hackathons.

If you need help or advice in setting up your event, or would like to contribute to the project: please get in touch via or GitHub Issues.

For more background and references, see USAGE and ABOUT. The rest of this document has details for deploying the application.


This project can be deployed to any server capable of serving Python applications, and is set up for fast deployment to the Heroku cloud:


You can configure your instance with the following basic environment variables:

  • SERVER_URL - fully qualified domain name where the site is hosted
  • SERVER_SSL - in production, add this to make the app redirect all visitors to the HTTPS address
  • DATABASE_URL - if you are using the Postgres add-on, this would be postgres://username:password@... - in Heroku this is set automatically
  • CACHE_TYPE - in production, you can use built-in, Redis, Memcache to speed up your site (see
  • DRIBDAT_ENV - 'dev' to enable debugging, 'prod' to optimise assets etc.
  • DRIBDAT_SECRET - a long scary string for hashing your passwords - in Heroku this is set automatically
  • DRIBDAT_APIKEY - for connecting clients to the remote API
  • DRIBDAT_NOT_REGISTER - set to True to disallow creating accounts on this server

Support for Web analytics can be configured using one of the following variables:

  • ANALYTICS_FATHOM (Fathom, with optional ANALYTICS_FATHOM_SITE if you use a custom site)
  • ANALYTICS_SIMPLE (Simple Analytics)
  • ANALYTICS_GOOGLE (starts with "UA-...")

If you have a public dashboard for your analytics, you can add the link to the footer by setting it in ANALYTICS_HREF.

OAuth 2.0 support is currently available using Flask Dance (see issue #118). To authenticate your users, the following variables should be set:

  • OAUTH_TYPE - e.g. 'Slack'
  • OAUTH_ID - the Client ID of your app (e.g. from
  • OAUTH_SECRET - the Client Secret of your app
  • OAUTH_DOMAIN - (optional) subdomain of your Slack instance

Use .flaskenv or .env to store environment variables for local development.


There are a number of API calls that admins can use to easily get to the data in Dribdat in CSV or JSON format. These are linked in the About page in a running app. Additionally, the site has a See GitHub issues for development status.

Basic data on an event:

  • /api/event/<EVENT ID>/info.json
  • /api/event/current/info.json

Retrieve data on all projects from an event:

  • /api/event/<EVENT ID>/projects.csv
  • /api/event/<EVENT ID>/projects.json
  • /api/event/current/projects.json

Recent activity in projects (all or specific):

  • /api/project/activity.json
  • /api/<PROJECT ID>/activity.json

Search project contents:

  • /api/project/search.json?q=<text_query>

Use the limit query parameter to get more or less than 10 results.

If you would like to use external clients, like the chatbot, to remote control Dribdat you need to set DRIBDAT_APIKEY. The (experimental) call used to push data into projects is:

  • /api/project/push.json

For more details see

Developer guide

Install Python, Virtualenv and Pip, or Poetry to start working with the code.

You may need to install additional libraries (libffi) for the misaka package, which depends on CFFI, e.g. sudo dnf install libffi-devel

Run the following commands from the repository root folder to bootstrap your environment:

poetry shell
poetry install

Or using plain pip:

pip install -r requirements/dev.txt

By default in a dev environment, a SQLite database will be created in the root folder (dev.db). You can also install and configure your choice of DBMS supported by SQLAlchemy.

Run the following to create your app's database tables and perform the initial migration:

python db init
python db migrate
python db upgrade

Install frontend resources using Yarn:

yarn install

Finally, run this command to start the server:

FLASK_DEBUG=1 python run

You will see a pretty welcome screen at http://localhost:5000

The first user that registers becomes an admin, so don't delay!

Shell access

To open the interactive shell, run: python shell (or, using the Heroku toolchain, heroku run python shell)

By default, you will have access to the User model, as well as Event, Project, Category, Activity. For example, to promote to admin and reset the password of the first user:

u = User.query.first()
u.is_admin = True

Running Tests

To run all tests, run: python test


Whenever a database migration needs to be made. Run the following commands:

python db migrate

This will generate a new migration script. Then run:

python db upgrade

To apply the migration. Watch out for any errors in the process.

For a full migration command reference, run python db --help.

If you get errors like ERROR [alembic.env] Can't locate revision identified by 'aa969b4f9f51', usually the fix is to drop the migration history table, and again db init .. db migrate .. db upgrade. You can do this in your database client, or with a line like this in the case of Heroku:

heroku pg:psql -c "drop table alembic_version" -a my-dribdat-instance


See Contributors for a list of people who have made changes to the code, and Forks to find some other users of this project.

Mantained by @loleg and @gonzalocasas, with special thanks to the Swiss communities for Open Data, Open Networking and Open Source for the many trials and feedbacks. We are also grateful to F. Wieser and M.-C. Gasser at Swisscom for conceptual inputs and financial support of the first alpha release of this project.

This code is originally based on Steven Loria's flask-cookiecutter, which we encourage you to use in YOUR next hackathon!

Additional and :heart:-felt thanks for testing and feedback to:

08.11.2020 16:00

Hackathon finished

07.11.2020 09:00

Hackathon started

12.10.2020 08:30

Progress made

Dribdat was updated this morning.

-- oleg

27.09.2020 14:08

Team forming

oleg has joined

25.08.2020 09:36


Worked on by oleg

25.08.2020 09:34

Project started

Initialized by oleg

All attendees, sponsors, partners, volunteers and staff at our hackathon are required to agree with the Hack Code of Conduct. Organisers will enforce this code throughout the event. We expect cooperation from all participants to ensure a safe environment for everybody. For more details on how the event is run, see the Health Hack FAQ.

Creative Commons LicenceThe contents of this website, unless otherwise stated, are licensed under a Creative Commons Attribution 4.0 International License.