ReservePress  /  Documentation  /  ReservePress Studio User Guide
Creative Studios — Tattoo, Piercing & Body Art Plugin v1.0.1 | ReservePress Studio Theme 23 pages • Full HTML + PDF

ReservePress Studio — Installation & User Guide (v1.0.1)

Full installation and studio management guide for ReservePress Studio (v1.0.1) — tailored for tattoo shops, piercing studios, and body art collectives with artist portfolios, custom session deposits, aftercare add-ons, and Front Desk walk-in tracking.

🔍
Chapter 1

1. Requirements

Before installing ReservePress Studio, confirm your server meets the following requirements: Requirement

Minimum

WordPress

6.4 or higher

PHP

8.2 or higher

MySQL / MariaDB

MySQL 5.7+ or MariaDB 10.3+

HTTPS

Required for Stripe payments (strongly recommended for all installs)

Pretty Permalinks

Must be enabled — Settings → Permalinks → any option except Plain

WP Memory Limit

128 MB minimum; 256 MB recommended

Optional: Stripe Account

Required only if you want to collect online payments or deposits. Not required for pay-in-studio (cash/card on arrival) workflows.

Chapter 2

2. Installation

Method A — Upload via WordPress Admin (Recommended)

  • Log in to your WordPress admin dashboard.
  • Go to Plugins → Add New → Upload Plugin.
  • Click Choose File and select reservepress-studio-plugin-v1.0.1.zip.
  • Click Install Now, then Activate Plugin.
  • You will be redirected to the RP Studio dashboard automatically.

Method B — FTP / File Manager

  • Extract reservepress-studio-plugin-v1.0.1.zip on your computer.
  • Upload the reservepress-studio folder to /wp-content/plugins/ via FTP or your host's file manager.
  • In WordPress admin go to Plugins → Installed Plugins.
  • Find ReservePress Studio and click Activate.

What Happens on Activation

The plugin automatically creates 9 custom database tables prefixed with wp_rpstudio_ (or your configured prefix). Three pages are created automatically: Book an Appointment (slug: book), My Appointments, and Front Desk. Custom capabilities are added to the Administrator role. No existing WordPress data is modified.

Database Tables Created

wp_rpstudio_services
wp_rpstudio_service_categories
wp_rpstudio_staff
wp_rpstudio_staff_hours
wp_rpstudio_staff_blocked
wp_rpstudio_appointments
wp_rpstudio_clients
wp_rpstudio_addons
wp_rpstudio_appointment_addons
wp_rpstudio_promotions
Chapter 3

3. First-Time Setup

Follow these steps in order after activating the plugin. Completing each step before the next ensures the booking widget works correctly from day one.

3.1 Configure General Settings

Go to RP Studio → Settings. The Settings screen is organised into tabs — open the Studio tab first and fill in:

  • Studio Name — appears in email notifications and the booking widget heading.
  • Studio Email — used as the reply-to address for client emails.
  • Phone Number — displayed in confirmation emails.
  • Theme Style Adoption — set to auto to inherit your active theme's colours and fonts automatically.
  • My Appointments URL — paste the full URL of your My Appointments page (created automatically on activation).

3.2 Add Service Categories

Go to RP Studio → Services and click Add New Category. Categories group your services in the booking widget (e.g. Traditional, Realism, Blackwork, Fine Line). This step is optional — you can add services without categories.

3.3 Add Services

Go to RP Studio → Services → Add New Service. Fill in:

  • Name — e.g. Half Sleeve, Custom Flash, Cover-Up Consultation.
  • Category — assign to a category if you created them.
  • Duration — session length in minutes.
  • Buffer Time — gap added after the session before the next slot is available.
  • Price — base price. Leave at 0 for quote-based or consultation services.
  • Deposit — optionally require a deposit (fixed amount or percentage) when Stripe is enabled.
  • Image — displayed on the Services page and in the booking widget.
  • Status — set to Active for the service to appear in the booking widget. Minimum Required

At least one active service must exist before the booking widget will load correctly. Services with Status set to Inactive are hidden from the public but remain in the database.

3.4 Add Artists

Go to RP Studio → Artists → Add New Artist. Fill in:

  • First Name / Last Name.
  • Title — e.g. Tattoo Artist, Guest Artist. Displayed on the About page.
  • Email — used for artist notification emails.
  • Bio — displayed on the About page when using the ReservePress Studio theme.
  • Photo — displayed in the booking widget artist picker and on the About page.
  • Colour — accent colour used for the artist's initial avatar when no photo is set.
  • Services Offered — check which services this artist performs. Only checked services appear for this artist in the booking flow.
  • Status — set to Active to make the artist bookable.
  • Click Save Artist to save changes.

3.5 Set Artist Hours

Go to RP Studio → Artists, click an artist's name, then click Set Hours. Configure working days and time ranges for each day of the week. The booking widget only shows available slots within these hours.

Important

Artists with no hours configured will show no available slots in the booking widget. Hours apply to the artist's local timezone as configured in WordPress Settings → General.

3.6 Create Required Pages

ReservePress Studio automatically creates three pages on activation. Confirm they exist in WordPress → Pages and that their slugs match exactly.

Page Title

Slug

Content / Notes

Book an Appointment

book

Contains [rpstudio_booking] shortcode automatically. This is your main booking page.

My Appointments

my-appointments

Contains [rpstudio_my_appointments] shortcode. Clients view and manage their bookings here.

Front Desk

front-desk

Staff-facing interface. No shortcode needed — the plugin handles this page directly.

After confirming the pages, go to RP Studio → Settings → Studio and confirm the My Appointments URL field is set correctly.

Chapter 4

4. Shortcodes

All shortcodes can be added to any WordPress page, post, or widget area. They automatically enqueue the required CSS and JavaScript. No additional setup is needed beyond placing the shortcode in your content.

Dual prefix support

The plugin registers both rpstudio_ and rpstudio_ prefixes for all shortcodes. Either prefix works identically. The rpstudio_ prefix is recommended for new installs.

4.1 Booking Widget

[rpstudio_booking]
[rpstudio_booking service_id="3"]
[rpstudio_booking staff_id="2" title="Book with Alex"]

The primary booking shortcode. Renders a fully interactive 6-step booking flow:

  • Step 1: Select Design (service)
  • Step 2: Choose an Artist (or Any available artist)
  • Step 3: Choose Date
  • Step 4: Choose Time
  • Step 5: Enter Details
  • Step 6: Payment (if Stripe enabled) → Confirmation

Attribute

Default

Description

service_id

0

Pre-select a service by ID. Widget skips Step 1 if set.

staff_id

0

Pre-select an artist by ID. Widget skips Step 2 if set.

title

Book an Appointment

Heading displayed at the top of the widget.

4.2 Services Grid

[rpstudio_services]
[rpstudio_services columns="2" category_id="1"]
[rpstudio_services show_price="false" show_book_button="true"]

Displays a responsive grid of active services with name, price, description, and a Book a Session button. Attribute

Default

Description

category_id

0

Filter by service category ID. Shows all categories if omitted.

columns

3

Number of columns in the grid (1–4).

show_price

true

Show or hide the service price.

show_book_button

true

Show or hide the Book a Session button.

4.3 Single Service

[rpstudio_service id="5"]

Displays a single service by its ID — name, description, duration, and price. Useful for dedicated service landing pages.

Attribute

Default

Description

id

0 (required)

The ID of the service to display. Find IDs in RP Studio → Services.

4.4 Artist Grid

[rpstudio_staff]
[rpstudio_staff columns="4"]

Displays all active artists in a grid with photo, name, title, bio, and a Book with Me button. Attribute

Default

Description

columns

3

Number of columns in the grid.

4.5 My Appointments

[rpstudio_my_appointments]

Displays a client's appointment history. Behaviour depends on login status:

  • Logged-in users — appointments are retrieved automatically by WordPress user account.
  • Guest users — after completing a booking, the confirmation screen shows a View My Appointments link that includes an email parameter (?rpstudio_email=…). This allows guests to view their bookings without an account.
  • Not logged in and no email param — a login prompt is displayed.

Page Setup

This shortcode is placed on the My Appointments page automatically on activation. Confirm the page URL is saved in RP Studio → Settings → Studio. Without this, the confirmation email's View My Appointments link will not work.

4.6 Promotions List

[rpstudio_promotions]

Displays all currently active promotions with their discount code, description, and validity. Promotion codes can be entered by clients during the booking checkout step.

4.7 Availability Calendar

[rpstudio_availability_calendar service_id="1"]
[rpstudio_availability_calendar service_id="1" staff_id="2"]

Displays a read-only month calendar highlighting available dates for a given service and optionally a specific artist. Useful on service or artist landing pages.

Attribute

Default

Description

service_id

0 (required)

The service to check availability for.

staff_id

0

Optionally restrict to a specific artist.

Chapter 5

5. Admin Menu Reference

The RP Studio menu appears in the WordPress admin sidebar (look for the needle icon). It contains the following sections:

5.1 Dashboard

  • Overview of today's appointments, upcoming bookings, and key stats.
  • Quick-access buttons for common tasks.
  • Recent activity feed.

5.2 Appointments

  • Full list of all appointments with date, client, service, artist, and status filters.
  • Click any appointment to view full details, change status, or add internal notes.
  • Use the New Appointment button to manually create a booking (walk-in or phone).
  • Admin bookings show an inline conflict warning if a time slot is already taken — check the override box to book anyway.
  • Status options: Scheduled, Confirmed, In Progress, Completed, Cancelled, No Show.

5.3 Calendar

  • Weekly calendar view of all appointments, grouped by artist column.
  • Navigate with Prev/Next buttons or the date picker.
  • Click any appointment block to view or edit it.

5.4 Services & Categories

This screen lists all services and categories. All management uses full-page forms. Services list

  • Click Add New Service to open the full-page Add Service form.
  • Click any service name to open the full-page Edit Service form.
  • Fields: Name, Category, Duration, Buffer Time, Price, Deposit, Image, Status.
  • Click Save Service to save or Delete Service to remove.

Categories list

  • Click Add New Category to open the full-page Add Category form.
  • Fields: Category Name, Description, Category Image (WordPress media library picker), Status.
  • Click Save Category to save or Delete Category to remove.

5.5 Artists

This screen lists all artists. All management uses full-page forms.

  • Click Add New Artist to open the full-page Add Artist form.
  • Click any artist's name to open the full-page Edit Artist form.
  • Fields: First Name, Last Name, Title, Email, Bio, Photo (media library), Colour, Services Offered (checkboxes), Status.
  • The artist Photo is stored as a WordPress media attachment ID (photo_id column).
  • Set Hours — configure per-day working time ranges.
  • Block Time — add vacation days or blocked periods that remove slots from the booking widget.
  • Click Save Artist to save changes.

5.6 Clients

  • View all client records with contact information and appointment count.
  • Click a client to see their full appointment history.
  • Clients are created automatically when a booking is made.

5.7 Promotions

  • Create discount codes for use during checkout.
  • Set discount type (percentage or fixed amount), value, usage limit, and validity dates.
  • Active promotions can be displayed publicly using the [rpstudio_promotions] shortcode.

5.8 Addons

Addons are optional extras clients can add to their booking at checkout — for example, aftercare kits, reference prints, or touch-up sessions.

  • Click Add New Addon to create an addon with a name, description, price, and maximum quantity.
  • Active addons appear as optional line items during the booking checkout step.
  • Addon totals are tracked separately in the appointment record and reports.

5.9 Reports

  • Revenue summary by date range.
  • Appointment volume by service and by artist.
  • Requires the view_rpstudio_reports capability (Administrators have this by default).
Chapter 6

6. Settings Reference

All settings are at RP Studio → Settings. The settings screen is divided into seven tabs. Each tab saves independently — click Save Settings within each tab.

6.1 Studio Tab

Setting

Description

rpstudio_studio_name

Your studio name — appears in email notifications and the booking widget.

rpstudio_studio_email

Reply-to email address for all client-facing emails.

rpstudio_studio_phone

Studio phone number — included in confirmation emails.

rpstudio_theme_style

auto = inherit active theme CSS variables. off = always use plugin default colours.

rpstudio_my_appts_url

Full URL of the My Appointments page. Required for email confirmation links.

6.2 Booking Rules Tab

Setting

Description

rpstudio_min_advance_hours

Minimum hours in advance a client can book. Default: 2.

rpstudio_max_advance_days

How far ahead clients can book. Default: 60 days.

rpstudio_slot_interval

Interval between time slots shown in the widget. Default: 15 minutes.

rpstudio_cancellation_hour s

Hours of notice required for cancellation. Default: 24.

rpstudio_allow_guest_booki ng

Allow bookings without a WordPress account. Recommended: on.

rpstudio_require_phone

Make the phone field required at checkout.

6.3 Gratuity Tab

Setting

Description

rpstudio_gratuity_enabled

Show a gratuity/tip selector at checkout. Only available when Stripe is enabled. Default: on.

rpstudio_gratuity_presets

Comma-separated tip percentages shown as quick-select buttons. Default: 15,18,20.

rpstudio_gratuity_default

Pre-selected tip percentage. Leave blank for none.

6.4 Payment Tab (Stripe)

Setting

Description

rpstudio_payment_mode

full = charge full amount at booking. deposit = charge deposit only. none = pay in studio.

rpstudio_stripe_enabled

Enable Stripe payment processing.

rpstudio_stripe_test_mode

on = use test API keys. off = use live keys.

rpstudio_stripe_pub_key_li ve

Stripe live publishable key (starts with pk_live_).

rpstudio_stripe_secret_liv e

Stripe live secret key (starts with sk_live_). Never share this key.

rpstudio_stripe_pub_key_te st

Stripe test publishable key (starts with pk_test_).

rpstudio_stripe_secret_tes t

Stripe test secret key (starts with sk_test_).

rpstudio_stripe_webhook_se cret

Stripe webhook signing secret (starts with whsec_). Required for payment confirmation.

6.5 Tax Tab

Setting

Description

rpstudio_tax_enabled

Apply tax to service prices at checkout.

rpstudio_tax_rate

Tax percentage (e.g. 13 for 13% HST).

rpstudio_tax_name

Label shown at checkout (e.g. HST, GST, VAT).

rpstudio_tax_inclusive

on = prices already include tax. off = tax added on top.

6.6 Currency Tab

Setting

Description

rpstudio_currency

ISO currency code. Default: CAD.

rpstudio_currency_symbol

Symbol displayed with prices. Default: $.

rpstudio_currency_position

before = $10.00. after = 10.00$.

rpstudio_currency_decimals

Number of decimal places. Default: 2.

6.7 Email & SMTP Tab

Setting

Description

rpstudio_email_from_name

Sender name for all plugin emails.

rpstudio_email_from_addres s

Sender email address.

rpstudio_email_confirmatio n

Send a confirmation email to the client after booking.

rpstudio_email_reminder

Send a reminder email before the appointment.

rpstudio_email_reminder_ho urs

Hours before the appointment to send the reminder. Default: 24.

rpstudio_email_cancellatio n

Send a cancellation notice to the client.

rpstudio_smtp_host

SMTP server hostname (e.g. smtp.sendgrid.net).

rpstudio_smtp_port

SMTP port. Common values: 587 (TLS), 465 (SSL).

rpstudio_smtp_username

SMTP account username.

rpstudio_smtp_password

SMTP account password.

rpstudio_smtp_encryption

tls or ssl.

SMTP Recommendation

WordPress default email (wp_mail) is often blocked by hosting providers. Use a transactional email service such as SendGrid, Mailgun, or Postmark for reliable delivery. Enter the SMTP credentials in the fields above, or use a dedicated SMTP plugin if preferred.

Chapter 7

7. User Roles & Capabilities

ReservePress Studio adds custom capabilities to the WordPress role system. Administrators receive all capabilities automatically on activation. You can assign individual capabilities to other roles using a role management plugin such as User Role Editor.

Capability

Description

Admin

Manager*

Recept.*

manage_rpstudio_appointments

View, create, edit appointments

✓

✓

✓

edit_rpstudio_appointments

Edit existing appointments

✓

✓

✓

delete_rpstudio_appointments

Delete appointments

✓

✓

manage_rpstudio_services

Manage services and categories

✓

✓

edit_rpstudio_services

Edit service details

✓

✓

manage_rpstudio_staff

Manage artists and hours

✓

✓

manage_rpstudio_settings

Access plugin settings

✓

✓

view_rpstudio_reports

View revenue and booking reports

✓

✓

view_rpstudio_calendar

View the calendar screen

✓

✓

✓

access_rpstudio_frontend

Access the Front Desk interface

✓

✓

✓

* Manager and Receptionist are not created automatically. Assign capabilities to existing roles using a role editor plugin.

Chapter 8

8. Front Desk Interface

The Front Desk is a dedicated interface designed for in-studio use — reception tablets, front desk computers, or any staff-facing screen. It is separate from the WordPress admin. A Front Desk page is created automatically on activation and is accessible at: https://yoursite.com/front-desk/

The interface includes:

  • Dashboard tab — today's schedule at a glance, plus upcoming appointments for the rest of the week.
  • New Appointment tab — create a walk-in or phone booking quickly without using the full admin.
  • Appointments tab — view, filter, and update appointment status.
  • Calendar tab — weekly view grouped by artist column.
  • Clients tab — search and view client records.
  • Artists tab — view artists and their availability.
  • Services tab — quick reference for all active services.
  • Promotions tab — manage and apply discount codes.
  • Reports tab — quick revenue and booking summary.

Access Control

The Front Desk interface requires the access_rpstudio_frontend capability. Administrators have this by default. Assign it to receptionist or manager roles as needed.

Chapter 9

9. Email Notifications

The plugin sends the following emails automatically. All emails are sent via the SMTP settings configured in RP Studio → Settings → Email.

Email

Trigger

Recipient

Booking Confirmation

Immediately after a successful booking

Client

Admin Notification

Immediately after a successful booking

Studio admin email

Appointment Reminder

N hours before the appointment (configurable)

Client

Cancellation Notice

When an appointment is cancelled

Client

Reminder emails require a WP-Cron job to fire. On most shared hosts this works automatically. For high-traffic or mission-critical reminders, configure a real cron job on your server: */5 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null

Chapter 10

10. Stripe Payment Setup

Step 1: Create a Stripe Account

Go to stripe.com and create or log in to your account. Complete business verification if required for live payments.

Step 2: Get Your API Keys

In the Stripe dashboard, go to Developers → API Keys. Copy your Publishable key and Secret key. Start with test mode keys (pk_test_… and sk_test_…) for initial setup.

Step 3: Enter Keys in Plugin Settings

Go to RP Studio → Settings → Payments. Enable Stripe and check Test Mode. Paste your test keys into the Test Publishable Key and Test Secret Key fields. Save settings.

Step 4: Set Up Webhook

In Stripe dashboard go to Developers → Webhooks → Add Endpoint. Endpoint URL: https://yoursite.com/wp-json/rpsal/v1/stripe-webhook. Select events: payment_intent.succeeded and payment_intent.payment_failed. Copy the Signing Secret and paste it into the Stripe Webhook Secret field in plugin settings.

Step 5: Test a Payment

Make a test booking on your site. Use Stripe test card 4242 4242 4242 4242 with any future expiry and any CVC. Confirm the booking appears in RP Studio → Appointments with payment status Paid. When ready for live payments, switch off Test Mode and replace with live API keys.

Security

Never paste your Stripe secret key anywhere public or in version control. The webhook secret prevents fraudulent payment confirmation requests. HTTPS is required for Stripe to function on live sites.

Chapter 11

11. ReservePress Studio Theme

The ReservePress Studio Theme is the official companion theme for ReservePress Studio. It is designed to work out of the box with the plugin — no manual shortcode setup required for the Booking or Services pages.

Installing the Theme

  • Go to Appearance → Themes → Add New → Upload Theme.
  • Upload reservepress-studio-theme.zip and click Activate.
  • The plugin has already created your required pages on activation — assign the matching page templates as listed below.

Required Pages & Templates

Page Title

Slug

Template

Home (set as front page)

/

Front Page

Services

services

Services Page

Artists

artists

Artists Page

Gallery

gallery

Gallery Page

Contact

contact

Contact Page

Book an Appointment

book

Booking Page

Plugin Integration

  • The Booking Page template automatically renders the booking widget — no shortcode needed.
  • The Services Page template pulls service data directly from the plugin database.
  • The Artists Page template renders artist cards with photo, name, title, bio, and a Book with Me button. Each card links to the booking page with ?staff_id=X, pre-filtering the widget to that artist's services.
  • The booking widget inherits the theme's colour palette automatically via CSS variables.
  • Gallery and portfolio images are managed as WordPress custom post types within the theme.

Theme Customisation

Go to Appearance → Customize to access all theme options, including studio name, tagline, hero content, colour palette, typography, and footer details.

Chapter 12

12. ReservePress Studio Theme Lite

ReservePress Studio Theme Lite is a minimal booking shell included free with every ReservePress Studio purchase. It is designed for studios whose main website runs on a non-WordPress platform such as Shopify, Squarespace, or Wix — where you need a clean, branded booking experience without building a full WordPress site.

How It Works

Install WordPress in a subfolder of your domain (e.g. yourdomain.com/book/). Theme Lite turns that subfolder into a self-contained booking portal — nothing more. Visitors who land on your booking URL see only the booking form and an appointments page. The header shows your logo, which links back to your main site.

Installing Theme Lite

  • Go to Appearance → Themes → Add New → Upload Theme.
  • Upload reservepress-studio-theme-lite.zip and click Activate.
  • On activation, the theme automatically creates two pages: Book an Appointment and My Appointments. No manual page creation is required.
  • Go to RP Studio → Settings → Studio and confirm the My Appointments URL points to the newly created page.

Customiser Options

Go to Appearance → Customize. Theme Lite exposes four options only: Option

Description

Logo

Upload your studio logo. Displayed in the header, links back to your main site.

Primary Colour

Accent colour applied to buttons and highlights in the booking widget.

Main Site URL

The URL your logo links to (e.g. https://yourdomain.com).

Footer Copyright

Copyright line displayed in the footer.

What Theme Lite does not include

Theme Lite has no navigation menu, no homepage, and no marketing content. It is intentionally minimal — a booking shell only. For a full studio website with a homepage, services page, artist profiles, and gallery, use the ReservePress Studio Theme (Chapter 11).

Chapter 13

13. Troubleshooting

Booking widget shows “Online booking is coming soon”

  • The plugin is not activated, or the shortcode name is wrong.
  • Confirm the plugin is active under Plugins → Installed Plugins.
  • Confirm the page uses [rpstudio_booking] (not [rpstudio_booking_widget]).
  • If using the ReservePress Studio Theme Booking Page template, no shortcode is needed — just publish the page.

No time slots appear on the calendar step

  • Confirm at least one artist is active and has hours set (RP Studio → Artists → Set Hours).
  • Confirm the selected service is assigned to that artist (Services Offered checkboxes).
  • Check that the date is within the min/max advance booking window in Settings → Booking Rules.
  • Check WordPress timezone (Settings → General) matches the studio's local timezone.

Services page shows “No services found”

  • Go to RP Studio → Services and confirm at least one service has Status set to Active.
  • If using the ReservePress Studio Theme, the Services Page template reads from the plugin database directly.
  • If using a shortcode, confirm [rpstudio_services] is placed in the page content.

Emails are not being delivered

  • Test email delivery using a plugin like WP Mail SMTP or Check Email.
  • Configure SMTP settings in RP Studio → Settings → Email to use a transactional email provider.
  • Check spam/junk folders before assuming emails are not sending.
  • Confirm rpstudio_email_confirmation and rpstudio_email_admin_notify are enabled in Settings.

Stripe payments not working

  • Confirm HTTPS is enabled on your site.
  • Confirm Test Mode is on when using test keys, and off when using live keys.
  • Confirm the webhook endpoint is registered in your Stripe dashboard.
  • Check Stripe dashboard → Developers → Webhooks for failed delivery attempts.

Headers already sent or white screen after saving

  • This is usually caused by a PHP error or another plugin outputting content before WordPress.
  • Enable WordPress debug mode (WP_DEBUG=true in wp-config.php) to see the error.
  • Confirm PHP 8.2 or higher is active — ReservePress Studio requires PHP 8.2+.
  • Check that no extra blank lines appear at the end of your wp-config.php file.

Double-booking error message at checkout

  • This is by design. If two clients attempt to book the same slot simultaneously, the second request is rejected by the database transaction lock.
  • The client is shown a friendly message and prompted to choose another time.
  • No action required — the system is working correctly.

Front Desk shows 404 or Access Denied

  • Go to Settings → Permalinks and click Save Changes to flush rewrite rules.
  • Confirm the Front Desk page exists in WordPress → Pages with the slug front-desk.
  • Confirm the logged-in user has the access_rpstudio_frontend capability.

For additional help, feature requests, or to report a bug, visit reservepress.ca or contact us at hello@reservepress.ca.

ReservePress Studio is open source software licensed under the GNU General Public License v2 or later.