PHPackages                             nubs/bizgolf-ui - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. nubs/bizgolf-ui

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

nubs/bizgolf-ui
===============

A codegolf web interface using the Bizgolf library.

02[4 issues](https://github.com/nubs/bizgolf-ui/issues)PHP

Since Feb 6Pushed 10y ago1 watchersCompare

[ Source](https://github.com/nubs/bizgolf-ui)[ Packagist](https://packagist.org/packages/nubs/bizgolf-ui)[ RSS](/packages/nubs-bizgolf-ui/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Bizgolf-ui
==========

[](#bizgolf-ui)

A codegolf web interface using the [Bizgolf](https://github.com/nubs/bizgolf) library. See that library for more about what code golf capabilities are available.

Features
--------

[](#features)

This web interface currently supports PHP 5.5 submissions only for any of the holes provided by Bizgolf. User registration and login is provided for user's submitting scores.

### Homepage

[](#homepage)

The homepage includes a list of all the holes included for the hosted event and an overall scoreboard for the event.

[![Homepage](docs/screenshots/homepage.png)](docs/screenshots/homepage.png)

### Holes

[](#holes)

Each hole has its own page where the hole's requirements are specified, including:

- a description of what is expected from the hole,
- constraints on the hole including the name of the constant where input is optionally given and the trim that is applied to the result before validation,
- and a sample program that passes the hole's validation and could be used as a basis for a solution or for local validation.

Also on the hole details page is a scoreboard including all of the users with passing submissions ordered by score with the shortest submissions first and a list of recent submissions, both passing and failing, including the lengths of the submissions.

[![Hole Details](docs/screenshots/hole.png)](docs/screenshots/hole.png)

### Users

[](#users)

Each user has their own page with a list of their top submissions and a total score for them across all of the holes.

[![User Details](docs/screenshots/user.png)](docs/screenshots/user.png)

### Submitting Files

[](#submitting-files)

When logged in, there is a form for uploading submissions on each hole's page.

[![Submitting Files](docs/screenshots/submit.png)](docs/screenshots/submit.png)

### Submissions

[](#submissions)

When logged in, any references to the authenticated user's submissions becomes a link to view the submission details. This is particularly useful for failing submissions in order to track down what is not working.

[![Authenticated Hole Details](docs/screenshots/hole-authenticated.png)](docs/screenshots/hole-authenticated.png)

Here is an example failure, where the submitted file used a lowercase `w` where it should have used an uppercase `W`. Included on this page is:

- the source code (including a raw form where it is NOT utf-8 encoded);
- the output of the submission, the expected output, and the difference of the two;
- the stderr output;
- the value of the constant for the submission;
- the exit status from executing the submission;
- the length of the submission in bytes.

[![Submission Details](docs/screenshots/submission.png)](docs/screenshots/submission.png)

Requirements
------------

[](#requirements)

The web interface is written in PHP and uses some features from PHP 5.4, so older versions of PHP will not work. Dependencies are managed using [Composer](http://getcomposer.org). The [Bizgolf](https://github.com/nubs/bizgolf) library is the primary dependency and it depends on [Docker](http://www.docker.io).

For storing configuration and user data, [Mongo](http://www.mongodb.org) is used. You will need to install the mongo pecl extension and configure Bizgolf-ui to point at a mongo database as described below.

The mcrypt PHP extension is also needed for the encrypted cookies.

Installation
------------

[](#installation)

Using composer the project can be installed, along with its php dependencies, using the below command:

```
composer create-project --stability=dev nubs/bizgolf-ui
```

Configuration
-------------

[](#configuration)

Two environment variables need to be set to configure the application. `COOKIE_SECRET_KEY` needs to be set to a private and secure string that is used to encrypt the cookies used to store user authentication. `MONGOHQ_URL` needs to be a url pointing to a mongo database, e.g. `mongodb://user:pass@example.com:10000/dbname`.

Hosting
-------

[](#hosting)

For testing, php's builtin webserver can work:

```
COOKIE_SECRET_KEY='your secret here' MONGOHQ_URL='mongodb://localhost:27017' php --server localhost:8000 --docroot public
```

A better setup for production hosting would be apache or nginx. For example, here is an apache virtual host config as an example:

```

    ServerName bizgolf
    DocumentRoot "/srv/http/bizgolf-ui/public"
    SetEnv COOKIE_SECRET_KEY "your secret here"
    SetEnv MONGOHQ_URL "mongodb://localhost:27017"

        Order Allow,Deny
        Allow from all
        FallbackResource /index.php

```

Contributing
------------

[](#contributing)

Any changes, suggestions, or bug reports are welcome to be submitted on github. Pull requests are welcome!

License
-------

[](#license)

bizgolf-ui is licensed under the MIT license. See [LICENSE](LICENSE) for the full license text.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/43e7568db49cb140fe4deef1e585de0874e2a962a1140662003a5c070f536879?d=identicon)[nubs](/maintainers/nubs)

---

Top Contributors

[![nubs](https://avatars.githubusercontent.com/u/57673?v=4)](https://github.com/nubs "nubs (6 commits)")

### Embed Badge

![Health badge](/badges/nubs-bizgolf-ui/health.svg)

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

###  Alternatives

[fntneves/laravel-transactional-events

Transaction-aware Event Dispatcher for Laravel

3202.6M2](/packages/fntneves-laravel-transactional-events)[ipinfo/ipinfo

The official PHP library for IPinfo, the most reliable, accurate, and in-depth source of IP address data available anywhere. We process terabytes of data to produce our custom IP geolocation, company, carrier and IP type data sets. Visit our developer docs at https://ipinfo.io/developers.

2891.2M11](/packages/ipinfo-ipinfo)[craftcms/plugin-installer

Craft CMS Plugin Installer

283.3M4](/packages/craftcms-plugin-installer)[typo3/cms-recordlist

TYPO3 CMS Recordlist - Lists database records in the TYPO3 backend module (Web&gt;List).

178.0M48](/packages/typo3-cms-recordlist)[broadway/uuid-generator

UUID generator for broadway/broadway.

202.1M11](/packages/broadway-uuid-generator)

PHPackages © 2026

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