PHPackages                             camdram/camdram - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. camdram/camdram

ActiveLibrary

camdram/camdram
===============

Camdram - The portal website for amateur theatre in Cambridge

20180710(7y ago)2123914[79 issues](https://github.com/camdram/camdram/issues)[43 PRs](https://github.com/camdram/camdram/pulls)GPL-2.0PHPPHP &gt;7.0.0CI failing

Since Mar 5Pushed 3d ago3 watchersCompare

[ Source](https://github.com/camdram/camdram)[ Packagist](https://packagist.org/packages/camdram/camdram)[ RSS](/packages/camdram-camdram/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (42)Versions (186)Used By (0)

Camdram
=======

[](#camdram)

[![Build status](https://github.com/camdram/camdram/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/camdram/camdram/workflows/CI/badge.svg?branch=master&event=push)[![Deployment status](https://github.com/camdram/camdram/actions/workflows/deploy-release.yml/badge.svg)](https://github.com/camdram/camdram/actions/workflows/deploy-release.yml/badge.svg)[![Code Coverage](https://camo.githubusercontent.com/ddfd8e308a8c38232a47b9d91ffcfcd07e4c8069f87ad0c2bb3055b49d8e61e1/68747470733a2f2f636f6465636f762e696f2f67682f63616d6472616d2f63616d6472616d2f6272616e63682f6d61737465722f6772617068732f62616467652e7376673f6272616e63683d6d6173746572)](http://codecov.io/github/camdram/camdram?branch=master)[![Join the chat at https://gitter.im/camdram/development](https://camo.githubusercontent.com/abe08b740a4156153736f791393ec4da6619c4be73212e75769f52edacc0e2b5/68747470733a2f2f6261646765732e6769747465722e696d2f4a6f696e253230436861742e737667)](https://gitter.im/camdram/development)

Camdram is an [open source](http://opensource.org/docs/osd) project developed by a team of volunteers for the benefit of the Cambridge amateur theatre community. We use this repository to host the code that runs Camdram and to co-ordinate our work, however we welcome anyone to contribute bugs and suggest new features.

The steps required to set up a development checkout of Camdram are detailed below. For the sake of brevity, these instructions assume that the reader is familiar with a number of technologies, such as developing on a Linux based platform, using Git and GitHub.

New releases are made on the `master` branch every so often using the GitHub interface. This automatically generates a changelog and pushes the new release into production at . The latest changes can be seen at  which always reflects the `HEAD` state of this repository.

If you encounter any problems with the instructions below, please [create a GitHub issue](https://github.com/camdram/camdram/issues/new) or send an e-mail to . We also have a [live chat hosted on Gitter](https://gitter.im/camdram/development) which you can use to quickly and informally get in touch with the development team.

Docker Installation
-------------------

[](#docker-installation)

[Docker](https://www.docker.com/get-started) is a method of isolating applications which acts as a platform for running "containers". It's a great way to get a development environment setup with minimal hassle and should work cross-platform on Windows, macOS and Linux. First you will need to install Docker using the link above, then clone the Camdram repository and build the necessary Docker images:

1. `git clone git@github.com:camdram/camdram.git && cd camdram`
2. `docker-compose build`
3. `docker-compose up`

This will automatically create and configure the full Camdram stack and start the server locally on port 8000.

Native Installation
-------------------

[](#native-installation)

The native installation is a lot more complicated than the Docker installation procedure and so we've broken it down into several steps.

### 1) Install programs

[](#1-install-programs)

You will need to install the necessary package dependencies required to run Camdram. **PHP version 8.2 or greater is required**.

#### Debian/Ubuntu and Derivatives

[](#debianubuntu-and-derivatives)

The command below can be run on recent Debian-based distros (including Ubuntu and the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10)).

```
sudo apt-get install git-core php php-cli composer php-curl php-intl php-sqlite3 php-gd php-json php-mbstring php-xml php-zip

```

#### macOS

[](#macos)

You will need to have [Homebrew](https://brew.sh/) installed. The following command *appears* (from minimal testing) to install everything required on recent versions of macOS.

```
brew install git php composer

```

Installation methods on other distros and operating systems will vary.

### 2) Create a local version of Camdram

[](#2-create-a-local-version-of-camdram)

The steps below assume that the Composer PHP package manager is installed globally on your system. If it is not available in your distro's repositories, alternate installation methods can be found at .

**Note**: some of the SQL database operations performed by the `composer` commands below are memory-intensive. Default installations of PHP tend to set the memory limit of a PHP script to a value which will undoubtedly cause fatal errors. To prevent this, find your `php.ini` file (location varies by system) and change the `memory_limit` setting, to something like `memory_limit = 1G` (a gigabyte is definitely sufficient - you may be able to get away with a lot less if you prefer). Alternatively you can call the PHP interpreter like so:

```
php -d memory_limit=1G $(which composer) etc.......

```

The command below will download and set up a Camdram checkout in a new folder called `camdram`:

```
composer create-project camdram/camdram camdram dev-master --no-interaction --keep-vcs

```

After obtaining a copy of the code, change into the newly created directory and start a local web server:

```
cd camdram
php app/console server:run

```

You should then be able to visit  in your web browser to see your personal version of Camdram's homepage.

You'll need to create an administrator account in order to get access to most of the site's features. To make this happen automatically whenever you reset the database, open `app/config/parameters.yml` and replace the line setting `default_admin_idents` with:

```
    default_admin_idents: "[ { \"name\": \"Your Name\", \"email\": \"yourcrsid@cam.ac.uk\" } ]"
```

then run

```
php app/console doctrine:fixtures:load --no-interaction

```

You should then be able to log in with Raven and have full administrator access.

### 3) Run test suite

[](#3-run-test-suite)

Camdram has a limited but growing [automated test suite](https://github.com/camdram/camdram/wiki/Running-and-creating-tests), which can be used to ensure your checkout is working and check for certain regressions after making changes. It can be executed by running:

```
./runtests

```

### 4) Create a fork

[](#4-create-a-fork)

Camdram's development model follows the standard idioms used by FOSS projects hosted on GitHub. If you are just interested in experimenting with the codebase, no further steps are necessary, but if you'd like to contribute then you will need to [create a fork](https://help.github.com/articles/fork-a-repo).

After creating a personal fork, you can repoint your checkout using the commands below.

```
git remote rename origin upstream
git remote add origin git@github.com:your-github-username/camdram.git

```

We run Camdram as a meritocracy: anyone who has a reasonable number of pull requests accepted will be given access rights to commit straight to the Camdram repository

### 5) Write some code

[](#5-write-some-code)

It is a good idea to create a "feature branch" before starting development, so that the pull request will be named appropriately:

```
git checkout -b my-cool-feature

```

Some useful tips:

- The site uses the Symfony PHP framework - [read the documentation](http://symfony.com/doc/3.4/index.html).
- Use the GitHub issue tracker to discover and discuss issues to work on. If you think you know how to do something, write the code, commit it, and submit a pull request.
- If you want to discuss how to implement a new feature or how to fix a bug, get in touch with one of the developers. It would probably be wise to get in touch before starting on any significant projects to avoid wasted effort!
- Visit  if you're not familiar with Git.
- Code should ideally conform to the style guide here: . If this is far too daunting, a poorly styled but functional improvement is better than no improvement. You can use  to (mostly) clean your code up after writing it.

Depending on the type of change, ensure it works as a logged-in and/or non-logged in visitor. You can grant administration rights to your user account (which allows you to create and modify any Camdram content) by running

```
php app/console camdram:admins --grant=youremail@domain.com

```

### 6) Submit your changes

[](#6-submit-your-changes)

- Run `git add file1.php file2.php` for each file you wish to include in the commit
- Run `git commit` and enter a message describing the changes you have made
- Run `git push` to send your changes to GitHub

It is good practice to include the relevant issue number (prefixed with a hash #) at the end of the commit message - this will cause your commit to be linked to the issue page on GitHub.

Once your changes are pushed to your Camdram fork on GitHub, you can [submit a pull request](https://help.github.com/articles/creating-a-pull-request/) to have it included in Camdram.

**Please note:** we automatically display the names of some contributors on our [development page](https://www.camdram.net/development/) as a way of saying thanks! By submitting your changes you are acknowledging that you are happy for this to happen.

### 7) Pull in other people's changes

[](#7-pull-in-other-peoples-changes)

At a later date, once your local repository has become out of sync with Github (because other people have make changes), you can run the following commands to pull in other people's changes and update your checkout:

```
git fetch upstream
git merge upstream/master

```

The following commands may need to be run after the above, if the dependencies, database schema or JS/CSS assets have changed.

```
composer install
php app/console camdram:database:refresh
php app/console camdram:assets:download

```

### 8) Read the Wiki

[](#8-read-the-wiki)

[The Wiki](http://github.com/camdram/camdram/wiki) has various pieces of information about both the current and in-development versions of Camdram. Reading through those pages can give insight into the more esoteric parts of the system. You can suggest ideas for new articles using the contact details above.

The following wiki pages detail how to create a server set-up that's more similar to the version of Camdram at :

- [Setting up for JS/CSS development](https://github.com/camdram/camdram/wiki/Webpack-setup-guide)
- [Setting up a MySQL database](https://github.com/camdram/camdram/wiki/Setting-up-a-MySQL-database)
- [External API registration](https://github.com/camdram/camdram/wiki/API-registration)
- [Setting up an Apache virtual host](https://github.com/camdram/camdram/wiki/Setting-up-an-Apache-virtual-host)

---

### Copyright

[](#copyright)

Camdram is released under version two of the [GNU General Public License](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#SEC1).

Copyright (C) 2014–2021 Members of the Camdram Web Team and other contributors.

###  Health Score

45

—

FairBetter than 92% of packages

Maintenance45

Moderate activity, may be stable

Popularity23

Limited adoption so far

Community24

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor3

3 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~33 days

Recently: every ~279 days

Total

129

Last Release

236d ago

PHP version history (9 changes)20140305PHP &gt;=5.3.3

20151013PHP &gt;=5.4.0

20161002PHP &gt;5.4.0

20180320PHP &gt;5.6.0

20180710PHP &gt;7.0.0

v2.46PHP &gt;=7.0.0

v2.67PHP &gt;=7.3

v2.95PHP &gt;=7.4

v2.98PHP ~8.2.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/ab8249979992d5deaa906ea532899db03327c5aa956dbc8363e280fe709a2d8d?d=identicon)[hoyes](/maintainers/hoyes)

---

Top Contributors

[![hoyes](https://avatars.githubusercontent.com/u/2594055?v=4)](https://github.com/hoyes "hoyes (977 commits)")[![GKFX](https://avatars.githubusercontent.com/u/5357642?v=4)](https://github.com/GKFX "GKFX (553 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (540 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (366 commits)")[![dependabot-preview[bot]](https://avatars.githubusercontent.com/in/2141?v=4)](https://github.com/dependabot-preview[bot] "dependabot-preview[bot] (305 commits)")[![ajf58](https://avatars.githubusercontent.com/u/522994?v=4)](https://github.com/ajf58 "ajf58 (190 commits)")[![CHTJonas](https://avatars.githubusercontent.com/u/17813061?v=4)](https://github.com/CHTJonas "CHTJonas (149 commits)")[![dependabot-support](https://avatars.githubusercontent.com/u/112581971?v=4)](https://github.com/dependabot-support "dependabot-support (92 commits)")[![philosophicles](https://avatars.githubusercontent.com/u/5232616?v=4)](https://github.com/philosophicles "philosophicles (69 commits)")[![dstansby](https://avatars.githubusercontent.com/u/6197628?v=4)](https://github.com/dstansby "dstansby (65 commits)")[![sigilion](https://avatars.githubusercontent.com/u/1476670?v=4)](https://github.com/sigilion "sigilion (20 commits)")[![stumo](https://avatars.githubusercontent.com/u/1047730?v=4)](https://github.com/stumo "stumo (11 commits)")[![alexbrett](https://avatars.githubusercontent.com/u/6196205?v=4)](https://github.com/alexbrett "alexbrett (6 commits)")[![dtwood](https://avatars.githubusercontent.com/u/1207240?v=4)](https://github.com/dtwood "dtwood (4 commits)")[![Intuity](https://avatars.githubusercontent.com/u/50929?v=4)](https://github.com/Intuity "Intuity (1 commits)")[![flr5](https://avatars.githubusercontent.com/u/40123687?v=4)](https://github.com/flr5 "flr5 (1 commits)")[![doismellburning](https://avatars.githubusercontent.com/u/817118?v=4)](https://github.com/doismellburning "doismellburning (1 commits)")[![jacoblever](https://avatars.githubusercontent.com/u/3071954?v=4)](https://github.com/jacoblever "jacoblever (1 commits)")[![Lucas-JT-Holt](https://avatars.githubusercontent.com/u/32484372?v=4)](https://github.com/Lucas-JT-Holt "Lucas-JT-Holt (1 commits)")[![quadraticjames](https://avatars.githubusercontent.com/u/6493915?v=4)](https://github.com/quadraticjames "quadraticjames (1 commits)")

---

Tags

cambridgedramaphpstudent-theatresymfonytheatre

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/camdram-camdram/health.svg)

```
[![Health](https://phpackages.com/badges/camdram-camdram/health.svg)](https://phpackages.com/packages/camdram-camdram)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[claroline/core-bundle

Claroline core bundle

165.5k52](/packages/claroline-core-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
