PHPackages                             maxime-rainville/recipe-admin - 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. [Admin Panels](/categories/admin)
4. /
5. maxime-rainville/recipe-admin

ActiveSilverstripe-recipe[Admin Panels](/categories/admin)

maxime-rainville/recipe-admin
=============================

Starting point for a admin only SilverStripe project.

0.0.0(6y ago)2241[1 PRs](https://github.com/maxime-rainville/recipe-admin/pulls)BSD-3-ClausePHP

Since Jul 8Pushed 3y agoCompare

[ Source](https://github.com/maxime-rainville/recipe-admin)[ Packagist](https://packagist.org/packages/maxime-rainville/recipe-admin)[ RSS](/packages/maxime-rainville-recipe-admin/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (6)Versions (4)Used By (0)

SilverStripe recipe-admin
=========================

[](#silverstripe-recipe-admin)

`recipe-admin` is a SilverStripe recipe designed for "portal" projects that only need to use the "administration" part of SilverStripe to manage DataObjects:

What does the recipe do?
------------------------

[](#what-does-the-recipe-do)

- Strips out CMS functionality,
- Set the administration area as the default route,
- Add a generic login screen so you don't have style your own,
- Showcase generic DataObject that you can be copied and adapted for your purpose,
- Showcase how to set up default groups,
- Showcase a generic report.

[![Screen shot of recipe-admin](/docs/screenshot.png "Screen shot of recipe-admin")](/docs/screenshot.png)

[View a short video of a recipe-admin project](https://youtu.be/J-H9SbvNQFo)

Getting started
---------------

[](#getting-started)

Add recipe-admin to your composer file.

```
# If starting a brand new project
composer create-project maxime-rainville/recipe-admin your-project-folder

# If you already have a composer file
composer require maxime-rainville/recipe-admin
```

Rename `.env-sample` to `.env` and adjust the settings according to your environment.

From here, just follow the normal set up steps for a SilverStripe project.

What to do next?
----------------

[](#what-to-do-next)

The recipe comes with some simple examples to help you get started quickly. But you will need to tweak the example code to your use case.

### Set up your DataObjects

[](#set-up-your-dataobjects)

Two basic DataObjects are included in the basic recipe: Dog and Breed. Both of them come with sample code illustrating how to:

- define basic relations
- set basic validation rules
- define basic permissions.

Copy or rename these DataObject to suit your use case.

### Define an ModelAdmin controller

[](#define-an-modeladmin-controller)

Dog and Breed can be managed via the "DogAdmin" `ModelAdmin`. Rename `DogAdmin` and adjust it to reference your own DataObjects.

### Set the default area in the Model

[](#set-the-default-area-in-the-model)

Recipe-admin is configured to have a default administration area. This will be the first screen your users will see after login into your portal.

By default this points to `DogAdmin`. Update `app/_config/routes.yml` to point to your own `ModelAdmin`

```
SilverStripe\Admin\AdminRootController:
  url_base: 'a'
-  default_panel: DogAdmin
+  default_panel: YourCustomAdmin
```

### Define some default data

[](#define-some-default-data)

`recipe-admin` comes with some default records. This pre-populates your project with some data with your first `dev/build`. When setting up a new environment, this allows you to quickly get started without having to load a database snapshot.

Adjust `app/_config/default-records.yml` to reflect your own DataObjects.

### Define some default groups

[](#define-some-default-groups)

`recipe-admin` ships with a simple `DataExtension` showing you how do define default groups. Adjust the groups and permission define `app/_config/default-records.yml` to reflect your own DataObjects.

### Create some reports for your users

[](#create-some-reports-for-your-users)

`BreedReport` shows you how you can create a custom report to allow your user to get refine view of their data.

If your users don't need this data, simply delete `BreedReport` and the "Report" panel will be hidden.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

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 ~0 days

Total

2

Last Release

2498d ago

Major Versions

0.0.0 → 1.0.0-beta12019-07-08

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1168676?v=4)[Maxime Rainville](/maintainers/maxime-rainville)[@maxime-rainville](https://github.com/maxime-rainville)

### Embed Badge

![Health badge](/badges/maxime-rainville-recipe-admin/health.svg)

```
[![Health](https://phpackages.com/badges/maxime-rainville-recipe-admin/health.svg)](https://phpackages.com/packages/maxime-rainville-recipe-admin)
```

###  Alternatives

[silverstripe/cms

The SilverStripe Content Management System

5163.4M1.3k](/packages/silverstripe-cms)[silverstripe/recipe-cms

SilverStripe recipe for fully featured page and asset content editing

212.4M185](/packages/silverstripe-recipe-cms)[plastyk/dashboard

An extendable dashboard for Silverstripe

2243.0k2](/packages/plastyk-dashboard)

PHPackages © 2026

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