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)
```

PHPackages © 2026

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