Private portal for app admins to manage app settings & data
n/a (comes with Canvas template)
There are no rows in this table
Screens
Search
Page
Screen
Image
Notes
Homepage
1
@Homepage
: Sample
Marketing pages
1
@Marketing pages
: Sample
Login
3
@Login
: Sign up (Step 1)
@Login
: Signup (Step 2)
@Login
: Login
Search
1
@Search
(include filters group)
Class
4
@Class
: Default view
@Class
: Payment popup
@Class
: “Paid” view
@Class
: Rating popup visible view
Portal
8
@Portal
: Class types tab
@Portal
: Create class template popup
@Portal
: Delete class template popup
@Portal
: Classes tab
@Portal
: Create class popup
@Portal
: Delete class popup
@Portal
: Send email popup
@Portal
: Participants tab
No need for the New button
Account
4
@Account
: My profile tab (standard)
@Account
: My profile tab (instructor)
@Account
: Notifications tab
@Account
: Payments tab
No need for Stripe here. You can use built in Bubble functions to get these.
App admin portal
1
@App admin portal
Features
Search
Flow
Page
Feature
User(s)
Image(s)
Screen(s)
Service(s)
Marketing content
2
Homepage
Any user can visit the public homepage. You (the developer) can configure the page however you want using the marketing page builder, or just leave it with the default setup. (no custom mockup needed)
Logged out
Homepage: Sample
Marketing pages
Anyone can use the header & footer menus to navigate additional marketing pages as configured by the
@App admin
(no custom mockup needed)
Logged out
Marketing pages: Sample
User signup
2
Login
Login
On the
@Login
page, anyone can sign up as a
@Student
or
@Instructor
These fields are required for each user type:
Step 1 - Email and password (required)
Step 2 - First & last names (text, required), Profile picture (image, required)
@Instructor
s only - Upon signup
@Instructor
s will be redirected to their account page where they can complete their instructor profile.
Developer notes:
Email verification as part of signup can be turned on/off by app admins, it should be turned OFF for this application
Logged out
Login: Sign up (Step 1)
Login: Signup (Step 2)
Login
On the
@Login
page, anyone can log into their account by entering an email and password.
Logged out
Login: Login
Search for classes
2
Search
Any user can visit the public search page, where they can take several actions:
Browse a list of upcoming classes, viewing the name, start date/time, price, overall rating (the rating is an average of all ratings given for the same class template using star icons)
Filter the list of classes by
Class name (text input on the page, not in the filters reusable group)
Instructor name (search input)
Price (two inputs, creating a range)
Date (date input)
Category (multi-select group)
Click on a class to link to its individual class details page for more information
Developer notes
For the class name search, use a ‘fuzzy search’ approach. See
details page, where they can review detailed information on the class, including:
Name
Price
Description
Start date/time
Duration
Places remaining
Category
List of existing user reviews (Reviews will display the review’s text and rating (0-5) )
Please show: reviewers name, profile picture, as well as rating score and rating text
Note: Each class is attached to a ‘class template’. The reviews displayed will be the aggregated list of reviews given for all of the classes of a particular class template
Student
Instructor
App admin
Class: Default view
Class: Payment popup
Enroll in a class
1
Class
A
@Student
User can enroll in the class by paying the class fee via Stripe. This will:
Send them a confirmation email which includes the class’s video conference link
Display the video conference link as a Bitly link which the user can click to be redirected.
Trigger a payout to the instructor minus the app commission (% of payment)
You should use the Stripe plugin to achieve this
Mark the ‘Enroll’ button as ‘Enrolled’ and make it unclickable
Additionally:
User’s can’t enroll to their own class
A user will only be able to pay for the class if the number of participants is less than the class’s max participants
If this is not the case the 'Enroll’ button will be un-clickable and read ‘Class full’
Click ‘Leave a review’ to trigger a popup where they can leave a review
A review requires a rating (0-5) and a text (280 characters or less)
This button will only be visible if the class date has passed and the user is enrolled
The review will be connected to the class template for the particular instance of the class
Leaving a review will send an email notification to the class instructor
Student
Class: Rating popup visible view
Class: “Paid” view
Manage classes in a portal page
4
When an instructor logs into the application, they are taken to their secure personal
@Portal
page where they can manage their Classes.
Instructor
Schema of the core data structure. Note that every time an instructor wants to run an instance of a particular class template, they create it via the ‘Classes tab’ specifying the specific date/time amongst other values.
Instructor
Non-instructors cannot access this page and will be redirected to the search page if they load it
Portal
Portal
Portal
Portal
From the ‘Classes’ tab:
Create a new class via popup by providing (all inputs required):
Class template (class template)
Selecting the class template will autofill the remaining inputs (where possible) to match the template, but the input values can still be edited
Class Name (text)
Description (text)
Price (number)
Max participants (number, max 50)
Start date & time (date)
Video conference link (text)
Duration (number, hours)
View their classes
Clicking a class will open the ‘Participants’ tab and filter the list to only show participants registered to the clicked class
View the Bitly link for the class page in the row
Sort classes by closest start date (default), furthest start date, lowest price
From the 3-dot menu a user can:
Edit a class via popup
Send a bulk email to the class’s participants via popup
Developer notes
You’ll need to adjust the data table columns on the portal page. Be careful when doing so. Make sure the the column headers (text elements) are perfectly aligned with the corresponding column data (groups), so that you don’t see funky, misaligned tables when you hit preview.
Instructor
Portal: Classes tab
Portal: Create class popup
Portal: Delete class popup
Portal: Send email popup
Manage class templates
1
Portal
Portal
Portal
From the ‘Class templates tab:
Create a new class template via popup by providing (all inputs required):
Name (text)
Description (text)
Price (number)
Max participants (number)
Duration (number, hours)
Category (custom data type)
View their created class templates
From the 3-dot menu:
Edit the class template via popup
Editing a class template has no effect on any classes (instances) associated with the class template. The class template is just used to populate the initial values for the class (instance).
Delete the class template via popup
Delete should be a soft delete, meaning that the class template isn’t actually deleted from your app database, but rather removed or hidden from the site so it’s not accessible by users. This approach prevents orphan, or disconnected and unreachable data from being created when an object is deleted.
Developer notes
The ‘Confirm delete popup’ is included in the menufocus_template element which is included in every data table.
Instructor
Portal: Class types tab
Portal: Create class template popup
Portal: Delete class template popup
Manage participants
1
Portal
Portal
From the ‘Participants’ (students) tab:
View a list of participants across all of their classes, viewing their full name and total of registered classes with this instructor
Select participants manually, or select all visible and send a bulk email to all selected participants via popup
Once all emails have been sent the instructor will receive an email notification that the emails have all been sent
Developer notes
Use a recursive workflow to send the bulk emails. See
Use the same Send email popup from the Classes tab
Instructor
Portal: Participants tab
Portal: Send email popup
Manage account settings
5
Any user can navigate to their personal
@Account
page, where they can manage manage the following settings: (The
@Account
page is included within the Canvas Base Template, and the following tabs exist as Figma components. Please begin with those components and make any minor modifications).
Student
Instructor
App admin
Account
Account
My profile tab:
@Student
s can manage their profile info
The user can view and update their personal information (profile picture, first/last name)
Any standard user can sign up as an instructor by registering their bank account with Stripe (via Stripe hosted form)
Once registered, this button will read ‘Update your bank account’, and clicking it will re-launch the stripe connect flow, allowing the user to update their details
Once registered with Stripe, the instructor will have access to their portal page
Users who sign up as instructors via the login page will be automatically directed to this tab
Developer notes
(The
@Account
page is included within the Canvas Base Template)
The user can register their bank account using Stripe Connect. See
When a class finishes (when the start date + duration passes), all registered users will receive an email asking them to leave a review.
App
Things to keep in mind (developer):
Share a public link of your app when submitting so we can check workflows/data if needed
Always consider edge cases. Make constraints on the inputs that are reasonable (i.e. a user probably shouldn’t be able to filter classes that are over $1,000,000…)