DuckDuckGo Community Platform
This is the source code for the DuckDuckGo Community Platform at duck.co
Requires perl 5.16.3 (or higher) and:
To install these on Debian / Ubuntu:
apt-get install cpanm build-essential libgd2-xpm-dev libssl-dev git libcurl4-gnutls-dev libxml2-dev imagemagick perl-doc postgresql libpq-dev
To proceed with installation, you will also need Dist::Zilla
cpanm -i Dist::Zilla
To install community-platform's Perl dependencies, go to its directory and run:
dzil authordeps --missing | cpanm dzil listdeps --missing | grep -v abstract | cpanm
This will take some time. You can add
--notestto the cpanm command to speed things up, but this may result in fires later.
Before running the dev server, we need a database schema.
The default is to use SQLite if no DSN configuration environment variables are found, e.g.
export DDGC_DB_DSN='dbi:Pg:database=ddgc'; export DDGC_DB_USER='ddgc'; export DDGC_DB_PASSWORD='yourdbpass';
To run the dev environment deployment script, your postgres user requires the following permissions:
ALTER USER ddgc CREATEDB; ALTER USER ddgc LOGIN;
This script deploys the schema and populates it with a test / dev data set:
You can also roll over any existing schema with the
For the flags to work, you need to generate their sprites. This process has to be repeated everytime the country flags are changed.
Community platform's generated static files, media uploads, caches, duckpan packages etc. live in
To launch the development web server:
This, by default, launches a plack server bound to port 5001 with DBIC and Catalyst console debugging enabled with Plack debug panels in rendered output.
It watches the
lib/directory and restarts if there are any changes written. It supports the following options:
Front end elements (js, css...) in
src/are managed by node.js / grunt.
To launch a task to rebuild static files when they change, use
The following accounts are created by
testone An admin, who is native German but also speaks English.
testtwo A normal user who speaks Spanish with public profile.
testthree A translation manager who speaks English, Arabic, and German.
testfour An admin, who speaks German, Spanish, and English.
testfive A normal user without public profile, who speaks Russian and English.
Additionally there are also test1 to test40 all without any setup.
Any random password will suffice, as a separate service is used to provide authentication in production.
This software is licensed under Perl 5 dual license: either GPLv1 or later, or, at users' choice, Artistic 1.0. We welcome contributions to this software under the same licensing terms.
The project is built using other software packages and creative content: