Site logo
53

53 Classes

Platform Manual β€” v2026

Complete technical and operational reference for the 53 Classes creative learning platform. Built for 53 Cox Road Gallery & Events.

AdminPartnerInstructorUser (Student)

Platform Overview

4

Total Roles

Admin Β· Partner Β· Instructor Β· User

18+

Public Pages

Public browsing, auth, and help pages

20+

Protected Pages

Role-gated dashboards & tools

6

Integrations

Stripe Β· PayPal Β· UPI Β· Gmail OTP Β· Google Calendar Β· AI

What is 53 Classes?

53 Classes is a full-featured creative learning marketplace built for 53 Cox Road Gallery & Events. It connects students, artists, galleries, and businesses across Australia through a seamless class booking and community platform.

Core Functionality

  • Secure signup/login with email OTP
  • Class discovery, booking & payment
  • Instructor & gallery management
  • Community groups, forum, challenges
  • Gift cards, memberships & bundles
  • Structured learning paths & curricula
  • Book clubs, workshops & mentoring
  • Artwork store & gallery bookings
  • Blog & CMS with full SEO tools

Platform Stack

  • React + Tailwind CSS frontend
  • Base44 backend-as-a-service
  • Email OTP verification and duplicate-account protection
  • Stripe for payments & payouts
  • Google Calendar API integration
  • AI content generation (InvokeLLM)
  • Real-time notifications
  • Role-based access control (RBAC)
  • Row-level security on all entities

User Roles & Permissions

Role Summary Matrix

CapabilityAdminPartnerInstructorUser (Student)
Secure signup with email OTP
Browse & book classes
Create & manage classes
Approve classes
Manage all users
Process payouts
View partner revenue
View instructor earnings
Handle refunds
Access CMS/Blog
Manage venues
Corporate bookings
Community & forum
Gift cards & memberships
Manage API secrets
Database export

Admin

Landing: /admin

Full platform control. Can manage all users, classes, bookings, content, payouts, refunds, partners, payment secrets, and system settings.

  • Manage all users and assign roles (πŸ‘₯ Users tab)
  • Monitor verified AppUser accounts and pending email registrations
  • Update API secrets β€” Stripe & PayPal (πŸ”‘ Secrets tab)
  • Approve / reject / feature classes and workshops
  • View and manage all bookings platform-wide
  • Process payouts to instructors and partners
  • Handle refund requests and disputes
  • Approve partner and instructor applications
  • Create and publish blog posts via CMS
  • Access database export and schema browser
  • View platform-wide revenue analytics
  • Impersonate instructor view for support

Partner

Landing: /partner

Business owners / venue operators who manage their own team of instructors, classes, and revenue under the 53 Classes platform.

  • Register and manage a partner organisation
  • Add and manage instructors under their business
  • Create and manage classes (linked to their partner ID)
  • Manage venue spaces and availability
  • Accept corporate booking enquiries
  • View partner revenue reports and commission splits
  • Access partner-specific earnings dashboard
  • Manage their own settings and profile

Instructor

Landing: /instructor

Teaching artists and educators who list and run classes. Can view bookings and earnings for their own classes only.

  • Create and submit classes for approval
  • Manage class schedules (one-off & recurring)
  • View bookings for their own classes
  • View earnings and commission breakdown
  • Manage payout settings via Stripe Connect
  • Post announcements to enrolled students
  • Host workshops and mentoring sessions
  • Create series/bundles and curricula
  • Use AI content generator for class descriptions
  • Add Google Calendar events and Meet links

User (Student)

Landing: /

End users who browse, book, and attend classes. Can participate in community features and track their learning journey.

  • Sign up securely with email OTP verification
  • Browse and search all available classes
  • Book classes and workshops (with Stripe payment)
  • Apply gift cards and membership discounts at checkout
  • View and manage their own bookings
  • Join waitlists for fully booked classes
  • Submit refund requests and track their status
  • Save classes to wishlist
  • Follow instructors and receive announcements
  • Participate in community groups, forum, challenges
  • Share creations in Show & Tell
  • Earn points and badges via gamification
  • Follow structured learning paths

All Pages & Routes

Public Pages

PageDescription
HomeLanding page with hero, featured classes, categories, community highlights and CTAs.
Browse ClassesFull class catalogue with search, filters (category, location, price, skill level), grid/list/calendar views.
Class DetailsFull class page with description, schedule picker, booking CTA, instructor info, reviews, and related classes.
WorkshopsStandalone workshop listings with booking flow.
Workshop DetailIndividual workshop page with booking modal.
GalleriesGallery and venue directory with category filters, hours, affiliated artists.
Gallery ProfileIndividual gallery page with events, art, spaces, and contact info.
Indigenous ArtsCurated collection of indigenous art classes and cultural programs.
Artwork StoreBrowse and purchase original artworks listed by instructors and artists.
BlogNews, tutorials, artist stories, and class spotlights. Searchable and filterable by category.
Blog PostIndividual article with full content, SEO meta tags, and optional related class CTA.
Gift CardsPurchase and send gift cards with personalised messages, themes, and postal/email delivery.
MembershipsSubscribe to Explorer, Builder, or Fellow tiers for discounts, credits, and exclusive access.
BundlesCurated class bundles with shared credits.
Book ClubJoin or host virtual book clubs with reading schedules and live sessions.

Authentication & Account Security

PageDescription
Sign In / Sign UpCustom authentication page for login, registration, Google sign-in, email OTP verification, and duplicate-account prevention.
Forgot PasswordStarts password recovery for existing accounts.
Reset PasswordSecure password reset page opened from reset links and tokens.

Booking & Checkout

PageDescription
Booking CheckoutMulti-step checkout: attendee info β†’ add-ons β†’ payment method (Card/Stripe, PayPal, or UPI β€” Google Pay / Paytm / PhonePe). Supports gift card redemption and GST invoicing.
My BookingsUser's booking history with status, calendar export, invoice download, and cancellation options.
Refund ManagementSubmit refund requests (users), review and process them (admin), dispute thread visible to all parties.
WishlistSaved classes for future booking.

Instructor Pages

PageDescription
Instructor DashboardCentral hub for instructors: class management, schedules, bookings, earnings, announcements, and payouts.
List a ClassForm to create a new class. Fields: title, category, description, price, location, images, skill level, audience, occasions.
Register as InstructorApplication form for new instructors. Captures bio, specialties, portfolio images, and professional references.
Instructor ProfilePublic profile showing bio, classes, portfolio, reviews, and follow button.
Workshop Host DashboardManage workshops, slots, bookings, and reviews.
Mentoring HubOne-on-one session booking: instructors set availability, students book slots.
CurriculaBrowse structured multi-class learning programs.
My CurriculaInstructor's own curricula with enrolment stats and module management.
Curriculum DetailEnrolment page, module list, learning objectives for a given curriculum.
Curriculum LearningIn-app learning interface: video modules, quizzes, show & tell, progress tracker.

Partner Pages

PageDescription
Partner DashboardRole dashboard for Partners. Tabs: Overview, Instructors, Venues, Bookings, Revenue.
Register as VenueApplication form for galleries and venue partners. Captures org details, facilities, branding, and contact info.
Register as SchoolSchool partnership application. Connects schools with artists for educational programs.
School DashboardManage student enrollments, academic calendar, and class assignments.

Admin Pages

PageDescription
Admin DashboardFull control panel: tabs for Pending Approvals, Curricula, Challenges, Classes, Bookings, πŸ‘₯ Users (role management), and πŸ”‘ Secrets (API key setup for Stripe & PayPal).
CMS DashboardCreate and manage blog posts. Fields: title, slug, content (rich text), SEO meta, category, tags, featured image, status.
Database ExportExport full platform data to MySQL. Download Spring Boot or Node.js backend/frontend code scaffolds.
Database SchemaVisual browser for all entities and their fields and relationships.

Community Pages

PageDescription
Community GroupsCreate or join groups based on art interests. Share posts, interact, and flag content.
Discussion ForumQ&A threads by category. Like, reply, follow. Instructors host live Q&A sessions. Study groups and direct messages.
Forum PostIndividual forum thread with replies.
Show & TellShare creative work for community feedback and likes. Content flagging and moderation built in.
Writers CornerShort stories, poems, writing challenges. Post and discuss written work.
ChallengesArt challenges with themes and deadlines. Submit entries, vote on others, view winners.
Challenge DetailsIndividual challenge page with submission form and entry gallery.
Challenge VotingVote on challenge entries during the voting window.
LeaderboardsWeekly and monthly points rankings. Badges displayed per user.
Winners GalleryShowcase of past challenge winners.

Profile & Learning

PageDescription
Student ProfilePublic profile showing badges, reviews, testimonials, learning timeline, and skills showcase.
User DashboardPersonal hub: booked classes, progress, wishlist, recommendations, notifications.
Learning PathFollow curated multi-class paths. Track completion and earn certificates.
SettingsUpdate display name, view email/role, sign out.
Gallery AnalyticsViews, revenue, and top artist stats for gallery owners.
Gallery Artist ManagerAssign, edit, and manage artists affiliated with a gallery.

Key Workflows

Cancellation Flows

Flow 1 β€” Student Cancels a Booking

Triggered when a student requests to cancel a confirmed booking from their dashboard.

πŸŽ“ Student opens "Request Cancellation" modal
Submits reason + optional refund details
πŸ“‹ Status: awaiting_instructor
πŸ“§ Email sent to instructor
πŸ‘¨β€πŸ« Instructor Reviews Request
APPROVE
instructor_approved
β—† Refund?
YES
refund_pending β†’ Admin
NO
closed βœ“
REJECT
instructor_rejected
πŸ“§ Student notified
πŸ›‘οΈ Admin Reviews & Resolves
APPROVE
admin_approved
πŸ’³ Stripe refund processed
refund_completed β†’ closed βœ“
REJECT
admin_rejected
πŸ“§ Student notified

Flow 2 β€” Instructor Cancels a Class Session

Triggered when an instructor needs to cancel one of their scheduled class sessions.

πŸ‘¨β€πŸ« Instructor opens "Cancel Class Session" modal
Selects schedule & provides cancellation reason
βš™οΈ Backend finds all affected Booking IDs for that schedule
πŸ“‹ CancellationRequest created
type: instructor_class_cancellation Β· status: pending_admin_review
πŸ“§ Admin team notified by email
πŸ›‘οΈ Admin Reviews the Request
APPROVE
admin_approved
All affected bookings β†’ cancelled
πŸ’³ Refunds issued per booking
closed βœ“
REJECT
admin_rejected
Class session remains active

Status Lifecycle Reference

awaiting_instructor
instructor_approved
instructor_rejected
pending_admin_review
admin_approved
admin_rejected
refund_pending
refund_completed
refund_not_possible
closed

Pathway / Course Cancellation Framework

βš–οΈ Australian Consumer Law (ACL) Compliance

This framework is designed in accordance with the Australian Consumer Law. Students retain their rights under the ACL regardless of completion percentage. Where a course has a major failure (not as described, significant defect), a full refund may be mandatory. Admin override is always available.

Complete Cancellation Flowchart

End-to-end pathway cancellation process β€” Student Request β†’ Refund Preview β†’ Admin Review β†’ Refund to Original Payment Method β†’ Final Status.

Student Action
System / Alternative
Refund Calculation
Decision Point
Admin Review
Final State
START
πŸŽ“ Student clicks "Cancel Enrolment"
From /journey page β€” active enrolment card
πŸ’‘ Step 1 β€” Alternatives Offered
β€’ Reschedule sessionsβ€’ Transfer to new batchβ€’ Pause pathwayβ€’ Convert to platform credit
πŸ“‹ Step 2 β€” Select Reason + Notes
10 categories Β· Kit shipped? Β· Digital content accessed?
πŸ’° Step 3 β€” Refund Preview Shown
Per-session value Γ— sessions remaining
βˆ’ Kit deduction (if shipped)
βˆ’ Digital content deduction (if accessed)
Card + Gift Card split shown separately
βœ… Step 4 β€” Student Confirms Cancellation
Completed > 50%?
of the pathway
YES β€” Needs AdminNO β€” Auto Approved
πŸ“‹ status: pending_admin_review
πŸ“§ Notifications sent
Admin Β· Instructor Β· Student
πŸ›‘οΈ Admin Reviews Request
Adjusts refund amount if needed
Admin Decision?
APPROVE
status: approved
REJECT
status: rejected
πŸ“§ Student notified
Enrolment stays withdrawn
βœ… status: cancellation_requested
Auto-approved, no admin needed
πŸ“§ Instructor + Student notified
status: approved
Proceeds to refund immediately
πŸ’³ Refund Processing
status: refund_processing
πŸ’³ Card Refund
via Stripe payment intent
🎁 Gift Card Refund
balance restored to original card
βœ… Refund Completed
status: refunded
Student notified Β· Enrolment: withdrawn
❌ Refund Failed
status: failed
Admin alerted Β· Manual resolution
END

Step-by-Step Summary

1
StudentClicks cancel on active enrolment

Opens 4-step cancellation modal

2
SystemDisplays alternatives (reschedule, pause, credit)

No refund needed if student accepts alternative

3
StudentSelects cancellation reason + notes

Kit shipped / digital content flags captured

4
SystemCalculates refund in real-time

Sessions attended deducted Β· Deductions applied Β· Split shown

5
StudentConfirms cancellation

PathwayCancellationRequest record created Β· Enrolment β†’ withdrawn

6a
SystemChecks completion percentage

>50% β†’ pending_admin_review; ≀50% β†’ auto-approved

6b
AdminReviews request, adjusts refund, approves/rejects

PathwayRefund record created on approval Β· Audit log updated

7
SystemProcesses refund via Stripe / Gift Card

Proportional split restored to original payment methods

8
SystemSends notifications

Student Β· Instructor Β· Admin β€” all notified of outcome

Status Lifecycle

cancellation_requested
pending_admin_review
approved
rejected
refund_processing
refunded
cancelled
failed

Refund Calculation Rules

πŸ“…

Before course starts

Full refund (minus any kit if already prepared)

πŸ“–

Course in progress

Refund for unused sessions only β€” attended sessions are charged at per-session rate

πŸŽ’

Kit already shipped

~$25 kit cost deducted from refund

πŸ’»

Digital content accessed

~$15 digital content cost deducted

50%

>50% course completed

Requires admin approval before any refund is processed

πŸ’³

Card payment

Refund to original Stripe payment intent

🎁

Gift card payment

Refund restored to original gift card balance

βš–οΈ

ACL major failure

Full refund regardless of completion β€” admin override always available

Notification Events

Cancellation request submitted
StudentInstructorAdmin
Admin approved / rejected request
StudentInstructor
Refund processing started
StudentAdmin
Refund completed
Student
Refund failed
StudentAdmin

Join Waitlist Flow

1 β€” When the Flow Triggers

The waitlist flow activates automatically when a Class Series reaches its enrollment capacity.

πŸ”΄

Class is Full

Enrolled count equals or exceeds pathway capacity. The booking button is replaced with a "Join Waitlist" button.

πŸ“Š

Live Counter

The booking card shows a bold red "FULLY BOOKED" badge and displays how many people are already on the waitlist.

πŸ””

Button State

Users already on the waitlist see a disabled green "βœ… You're on the Waitlist" button. Others see an amber "πŸ”” Join Waitlist" button. When a spot opens, the first in queue gets a 24-hour window to book before the offer moves on.

2 β€” Step-by-Step User Journey

From button click to confirmation β€” what the user experiences at each stage.

  1. 1

    User visits a fully booked Class Series page (/pathway/:id)

    The booking card shows "πŸ”΄ FULLY BOOKED" with the current waitlist count below it.

  2. 2

    User clicks "πŸ”” Join Waitlist β€” It's Free"

    A modal opens titled "πŸ”” Join the Waitlist" with subtitle "Spots open up regularly β€” be first to know!"

  3. 3

    User fills in their details and submits

    Name (required), Email (required), Phone (optional). The system checks for a duplicate entry before proceeding.

  4. 4

    System creates the Waitlist record

    A new entry is created in the Waitlist entity with class_id, customer details, and status: "waiting".

  5. 5

    Confirmation email is sent automatically

    An email is dispatched with their queue position number, the class name, and a no-spam assurance.

  6. 6

    Success screen is shown inside the modal

    A green checkmark, "βœ… You're on the Waitlist!", queue position badge, and confirmed email address are displayed.

  7. 7

    User can close or browse similar classes

    "Close" to dismiss the modal; "Browse Similar Classes" navigates to /pathways.

3 β€” Data Collected

The following fields are saved to the Waitlist entity on submission.

FieldRequiredDescription
customer_nameYesFull name entered by the user in the modal form.
customer_emailYesEmail address β€” used for duplicate checking and notifications.
customer_phoneNoOptional mobile number for future SMS follow-up.
class_idAutoThe Pathway ID the user is waitlisting for.
user_idAutoLogged-in user's ID if authenticated; empty string for guests.
statusAutoSet to "waiting" on creation. Updated to "expired" or "notified" by admin.

4 β€” Duplicate Entry Prevention

Before creating a new record, the system performs an active duplicate check.

πŸ”

Pre-submission check

On submit, the system queries the Waitlist entity for any existing record matching the same class_id + customer_email + status:"waiting".

⚠️

If a duplicate is found

Submission is blocked and an inline error appears: "You're already on the waitlist for this class series with that email." No email is sent.

βœ…

If no duplicate

Entry is created, queue position calculated (count of "waiting" entries + 1), and confirmation flow proceeds.

πŸ”

Logged-in user button state

For authenticated users, the page queries the waitlist on load. If already on it, the button shows as a disabled green "βœ… You're on the Waitlist" β€” preventing a duplicate attempt entirely.

5 β€” Success Screen

After submission the modal transitions in-place to a confirmation view β€” no page reload.

βœ…

Title

"βœ… You're on the Waitlist!" displayed prominently.

πŸ”’

Queue Position

Large amber badge shows their position number e.g. "#3". Calculated live at time of submission.

πŸ“§

Email Confirmed

Grey info box: "Confirmation sent to [email address]".

πŸ”’

No-spam assurance

"We'll notify you the moment a spot opens up."

❌

Close button

Outlined button to dismiss the modal and return to the page.

πŸ”

Browse Similar Classes

Amber button navigating to /pathways to explore other options.

6 β€” Complete Waitlist Flow (with 24-hour Offer Window)

End-to-end: Class Full β†’ Join Waitlist β†’ Spot Opens β†’ Notify β†’ 24h window β†’ Book or pass to next person.

Class Full State
Student Action
System / Auto
Decision Point
Success State
Offer Lapsed
START
πŸ”΄ Class is Fully Booked
enrolled count >= capacity
πŸ”” Student sees "Join Waitlist" button
Book Now button is replaced
πŸ‘† Student clicks Join Waitlist
Waitlist modal opens
Already on waitlist?
same email + class_id
YES β€” BlockedNO β€” Proceed
⚠️ Error shown inline
Already on the waitlist for this class
πŸ“‹ Waitlist record created
status: waiting Β· queue position assigned
πŸ“§ Confirmation email sent
Name, class, queue position
βœ… Modal shows: You're on the Waitlist!
Queue position displayed
A spot opens (cancellation or capacity increase)
πŸ“­ Spot becomes available
Student cancel OR admin increases capacity
πŸ”” First person in waitlist is notified
status β†’ "notified" Β· offer_expires_at = now + 24h
Books within 24 hours?
offer_expires_at window
NO β€” ExpiredYES β€” Books
⏰ Offer Expires
status = "expired"
πŸ” Offer passed to next person in queue
Step 7 repeats for next person
πŸŽ‰ Booking Confirmed!
status = "converted" Β· Enrollment created
πŸ“§ Confirmation email sent
Student enrolled Β· Waitlist entry closed
END

Step-by-Step Summary

1
SystemClass reaches full capacity

enrolled count >= pathway.capacity β†’ isFull = true

2
UI"Book Now" replaced with "Join Waitlist"

Live counter shows FULLY BOOKED badge + waitlist count

3
StudentClicks Join Waitlist β†’ fills in name, email, phone

Duplicate check: same class_id + email + status:waiting

4
SystemCreates Waitlist record

class_id, customer details, status:"waiting", queue_position assigned

5
SystemSends confirmation email

Contains: name, class title, queue position, no-spam assurance

6
EventA spot opens up

Student cancellation OR admin increases pathway.capacity

7
SystemNotifies first person in queue

status β†’ "notified" Β· offer_expires_at = now + 24h Β· Email with booking link

8a
StudentBooks within 24 hours

status β†’ "converted" Β· Enrollment created Β· Confirmation email sent

8b
System24-hour window expires without booking

status β†’ "expired" Β· Offer passed to next person in queue (step 7 repeats)

6b β€” Notification Events

Three notification events occur across the waitlist lifecycle.

πŸ“¬

Immediately on joining

Confirmation email sent with name, class title, queue position (#1, #2, …), and 24-hour offer window explanation.

πŸ””

When a spot opens β€” 24h offer

The first person in queue is emailed with a booking link. Status β†’ notified. offer_expires_at = now + 24 hours. If they don't book in time, the offer auto-passes to the next person.

⏰

Offer expires

If no booking within 24 hours, status β†’ expired. The next person in the queue is notified and the cycle repeats.

7 β€” Admin Notes: Viewing & Managing the Waitlist

Admins have full visibility and control over all waitlist entries.

πŸ—‚οΈ

Where to find entries

All records are in the Waitlist entity, accessible via Admin Dashboard or /database-export. Filter by class_id to see the queue for a specific series.

πŸ“Š

Queue count on booking card

The pathway booking card shows a live count of waitlisted people so instructors and students can see demand at a glance.

✏️

Updating status

Admins can set an entry's status to "expired" (removed from queue), "notified" (spot offered), or back to "waiting" if needed.

πŸš€

Triggering notifications

The waitlistNotification backend function can be called manually or via automation when capacity is increased. It reads all "waiting" entries ordered by created_date and sends spot-opening emails.

πŸ›‘

Removing an entry

Only admins can delete Waitlist records. Alternatively, set the status to "expired" to remove a person from the active queue without deleting the record.

πŸ“ˆ

Using waitlist data

High waitlist counts signal strong demand β€” useful data to justify adding a second cohort, increasing capacity, or scheduling a repeat run of the series.

Venue Partner Pricing & Booking Flow

Complete Venue Partner Lifecycle

End-to-end: 5-step application with base & facility pricing β†’ admin pricing review β†’ approval auto-activates the Venue Partner (role + live venue) β†’ instructor booking requests β†’ partner notifications and confirm/decline.

πŸ›οΈ Venue owner opens /venues/partner and starts the application
Step 1 β€” Your Venue Β· details + base price (per hour/day/session)
Step 2 β€” Facilities Β· each facility gets an optional price (blank = free)
Step 3 β€” Photos Β· Step 4 β€” Contact details
πŸ’° Step 5 β€” Pricing Summary Β· base + facility prices + total, final review
πŸ“§ Email verification link β†’ application submitted
πŸ›‘οΈ Admin reviews at /admin/venues β€” photos, details & full pricing summary
APPROVE
βœ… Venue created & marked Active (with pricing)
πŸ‘€ Applicant auto-promoted to Partner role
πŸ“§ Approval email Β· venue visible platform-wide & in Partner Dashboard
REJECT
rejected
πŸ“§ Applicant notified with reason
πŸ‘¨β€πŸ« Instructor books the venue from the venue page (/venues/:id)
πŸ“‹ VenueBooking created Β· status: pending Β· instructor, class, date, time, attendees, est. price
πŸ”” Partner notified instantly β€” in-app notification + email
🏒 Partner reviews in Partner Dashboard β†’ Venue Bookings
CONFIRM
confirmed βœ“
πŸ“§ Instructor notified
DECLINE / CANCEL
cancelled
πŸ“§ Instructor notified

Challenges Flow

Complete Challenge Lifecycle

End-to-end: Admin creates a challenge β†’ students submit entries β†’ community voting β†’ finalists β†’ winners announced β†’ Winners Gallery, points & badges.

Admin Action
Student Action
System / Auto
Decision Point
Community Voting
Winner / Success
START
πŸ›‘οΈ Admin creates a Challenge
/admin/challenges β€” theme, prompt, dates, prize
πŸ“… Sets submission & voting windows
start_date Β· submission_deadline Β· voting_end
πŸ“£ Challenge published β€” status: "active"
Appears on /Challenges, home banner & widgets
🎨 Student submits an entry
/challenge/submit β€” title, image(s), description, category
Submission deadline passed?
submission window
NO β€” Still openYES β€” Closed
πŸ” More entries accepted
Entries appear in the challenge gallery
πŸ—³οΈ Voting window opens
/ChallengeVoting β€” community votes on entries
πŸ“Š Live leaderboard updates
/challenge/leaderboard β€” vote counts per entry
⏰ Voting window closes
No more votes accepted
πŸ… Finalists shortlisted
/challenge/finalists β€” top-voted entries
πŸ›‘οΈ Admin confirms & announces winners
ChallengeWinner records created
πŸ† Winners Gallery
/challenge/winners Β· /winner/:id profile page
⭐ Points & Badges awarded
Gamification points β†’ /Leaderboards rankings
END

Step-by-Step Summary

1
AdminCreates the challenge

Theme, prompt (AI prompt library available), submission deadline, voting window, prize details

2
SystemChallenge goes live

status: "active" β€” shown on /Challenges, home page banner, and active-challenge widgets

3
StudentSubmits an entry

ChallengeSubmission created β€” title, artwork image(s), description, category; visible in the gallery

4
SystemSubmission deadline passes

Entry form closes β€” no new submissions accepted

5
CommunityVotes on entries

ChallengeVote records β€” one vote per user per entry; live leaderboard updates in real time

6
SystemVoting window closes

Votes tallied β€” top entries appear as finalists on /challenge/finalists

7
AdminConfirms and announces winners

ChallengeWinner records created β€” winners featured in the Winners Gallery

8
SystemRewards distributed

Gamification points and badges awarded β€” rankings updated on /Leaderboards

Host a Challenge β€” Marketplace Flow

Package β†’ Apply β†’ Pay β†’ Approval β†’ Go Live

How an external organisation runs its own challenge on the 53 Challenges engine: the host picks a package, answers the wizard and pays up front β€” the application only exists once payment clears. Admin review then auto-creates the challenge (or every challenge in a series) as a draft, and an admin publishes it. The host dashboard stays locked until that first application is paid.

🏒 Host opens /host-a-challenge and picks a package
Signs in β†’ creates the organisation workspace at /hostdeep link ?package=… pre-selects the plan
πŸ”’ Dashboard stays locked until the first application is paid β€” only the apply wizard shows
πŸ“ Guided apply wizard β€” package, theme, category, participants, judging, divisions, add-ons
πŸ” Scope = series β†’ extra steps: how many challenges & how often (monthly / quarterly / annual)
πŸ’³ Final step: server prices the application & host payspackage + (per-challenge fee Γ— number of challenges) + add-ons
πŸ“‹ Payment confirmed β†’ application saved (paid) & submittedno payment = no application record Β· risk-scored & routed to a queue
πŸ”“ Workspace unlocks Β· πŸ“§ admins emailed β€” new paid application waiting
πŸ›‘οΈ Admin reviews at /admin/host-approvals
APPROVE
βœ… Approved β†’ challenge record(s) auto-created as drafts
Series: one draft per challenge, dates spaced by the chosen cadence
πŸ“§ Host emailed Β· any balance / add-on invoices appear in Billing
CHANGES / REJECT
changes_requested / rejected
πŸ“§ Host notified with the reason Β· can edit & resubmit (already paid)
πŸš€ Admin clicks β€œMake live” (Ready to go live tab) β€” enabled only when paid
πŸ† Challenge published Β· application status: live
πŸ”” Host notified in-app + email Β· entries, votes, team & campaign tools open in /host

Proposal Status Lifecycle

draft
submitted
in_review
changes_requested
approved
rejected
live

Email Notifications

Host pays and submits an application
Admin
Admin requests changes or rejects
Host
Admin approves β€” challenge draft(s) created
Host
Host pays an add-on or balance invoice
Admin
Challenge made live
Host

Key Pages & Data

🌐

/host-a-challenge

Public landing page β€” packages, pathways and managed services.

🏒

/host

Host workspace β€” locked to the apply wizard until the first application is paid, then challenges, services, campaign, team, messages and billing unlock.

πŸ›‘οΈ

/admin/host-approvals

Admin queues by risk, plus the "Ready to go live" publishing tab.

πŸ—‚οΈ

HostOrganisation / HostChallengeProposal

The host workspace and each paid challenge application β€” pricing, payment status, series settings and the challenge ids it created.

🧾

HostInvoice / HostServiceOrder

Balance invoices and paid service add-on orders.

πŸ””

HostNotification / HostWorkspaceMessage

In-app alerts and the two-way host ↔ team message thread.

Integrations & Services

Stripe Payments
  • Card payments at checkout (Credit/Debit)
  • Gift card purchase processing
  • Instructor payouts via Stripe Connect
  • Refund processing on approval
  • GST invoice generation
  • Keys managed via Admin β†’ πŸ”‘ Secrets tab
PayPal
  • PayPal checkout tab at booking payment step
  • Secure PayPal order creation via backend
  • Client ID managed via Admin β†’ πŸ”‘ Secrets tab
UPI (Google Pay / Paytm / PhonePe)
  • UPI payment tab at checkout
  • Supports Google Pay, Paytm, PhonePe & any UPI app
  • UPI ID validated (username@handle format)
  • Collect request sent to user's UPI app for approval
Email OTP & Notifications
  • Sends signup verification codes by email
  • Stores incomplete signups as pending registrations
  • Prevents duplicate accounts for existing emails
  • Supports password reset and account recovery emails
Google Calendar
  • Add class sessions to Google Calendar
  • Generate Google Meet links for online classes
  • Scheduling conflict detection
  • Students: "Add to Calendar" on bookings
  • Calendar links on booking confirmation cards
AI (InvokeLLM)
  • AI class description generator for instructors
  • AI course structure & module suggestions
  • AI student coach and feedback
  • AI gallery-artist matching
  • AI partnership proposal builder
  • Challenge prompt library generation
  • Personalised class recommendations

Core Data Model

User

Base44 platform identity record used for authentication sessions.

AppUser

Application profile with email, password hash, role, verification status, reset token, and profile details.

PendingRegistration

Temporary signup record storing profile details and OTP until email verification is completed.

PublicProfile

Public-facing user profile synced from AppUser for community and profile pages.

Class

Workshop or class listing with partner_id, instructor_id, status, price, images.

ClassSchedule

Date/time sessions for a Class. Supports recurring patterns.

Booking

Student booking record linked to Class and Schedule. Tracks payment and status.

Artist

Instructor profile with bio, portfolio, Stripe account, commission rate.

Gallery

Venue/gallery profile with spaces, hours, affiliated artists, commission rate.

Payment

Revenue record with gross amount, commission deducted, and net for partner.

Subscription

Membership tiers: Explorer, Builder, Fellow. Tracks credits and benefits.

GiftCard

Monetary/bundle/class gift cards with balance, themes, and redemption history.

Review

Star rating + comment linked to a Class and Booking.

Notification

In-app alerts for class reminders, waitlist openings, booking confirmations.

Payout

Instructor payout records with amount, status, and Stripe reference.

BlogPost

CMS content with SEO fields, rich text, status, category, and tags.

RefundRequest

Refund lifecycle with reason, amount, status, and dispute thread.

Partner

Partner organisation record with approval status and contact details.

Full schema details available at /database-export (Admin only).

53 Classes Platform Manual Β· Β© 2026 53 Cox Road Gallery & Events Β· All rights reserved.

Built with Base44 Β· Last updated June 2026