Build easy customizable admin features for your app ✍️
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

! Please note !

This package is being replaced by the AdminPanel provider. This package will most likely not be maintained anymore.

Admin Panel ✍️

Swift Version Vapor Version Linux Build Status macOS Build Status codebeat badge codecov Readme Score GitHub license

Build easy customizable admin features for your app!


  • Admin user system with roles
  • Welcome mails
  • Reset password
  • Dashboard with easy graphs
  • SSO logins


📦 Installation

Update your Package.swift file.

.Package(url: "", majorVersion: 1)

Getting started 🚀


Create config adminpanel.json

    "name": "Nodes Admin Panel",
    "unauthorizedPath": "/admin/login",
    "loginSuccessPath": "admin/dashboard",
    "loadRoutes": true,
    "loadDashboardRoute": true,
    "profileImageFallbackUrl": "",
    "welcomeMailViewPath": "Emails/welcome",
    "resetPasswordViewPath": "Emails/reset-password",
    "autoLoginFirstUser": false,
    "ssoRedirectUrl": "",
    "ssoCallbackPath": "/admin/ssocallback",
    "roles": [
            "title": "Super admin",
            "slug": "super-admin",
            "is_default": false
            "title": "Admin",
            "slug": "admin",
            "is_default": false
            "title": "User",
            "slug": "user",
            "is_default": true

Create config mail.json

    "smtpHost": "",
    "smtpPort": "465",
    "user": "",
    "password": "",
    "fromEmail": ""

Make sure to have config app.json setup

    "name": "MY-PROJECT",
    "url": ""

The url here will be used as redirect link in invite emails fx.

Add provider

In your Config+Setup.swift (or wherever you setup your providers), make sure to add the AdminPanel provider.

import AdminPanel

// ...

private func setupProviders() throws {
    // ...
    try addProvider(AdminPanel.Provider.self)

Seed data

Add the seeder command to your Config+Setup.swift (or wherever you setup your commands):

addConfigurable(command: AdminPanel.Seeder.init, name: "seeder")

Next, add it to your Config/droplet.json file, like this:

"commands": [

Finally, run the command in your terminal (remember to build the project first):

vapor run seeder

UI package


  • node.js > v4.0
  • npm > v3.0
  • bower > 2.0

With brew

brew install node
brew install npm
brew install bower
npm install -g gulp


  • Copy the files from Sources/AdminPanel/gulp (of this repo) to the ROOT of your project
  • Copy the files from Sources/AdminPanel/Resources (of this repo) to the Resources folder in your project
  • Copy the files from Sources/AdminPanel/Public/favicon.ico (of this repo) and the favicon folder to the Public folder in your project
  • Run npm install > bower install > gulp build

Read more




Using views from packages (for development)

drop.view = LeafRenderer(
    viewsDir: Droplet().workDir + "/Packages/AdminPanel-0.5.4/Sources/AdminPanel/Resources/Views"

🏆 Credits

This package is developed and maintained by the Vapor team at Nodes. The package owner for this project is Steffen.

📄 License

This package is open-sourced software licensed under the MIT license