Learn Oracle APEX by building an application
Build a real Oracle APEX app, step by step, and learn why every table, rule and page is built the way it is.
Meet Turnout
A platform where any club, from runners to chess players, publishes events, takes RSVPs with waitlists and checks people in at the door. You build all of it.
Model it properly
Twelve tables, each with a reason: keys, time zones, a waitlist as a state machine, and rules the database enforces for you.
Secure it properly
Sign in with an email code, Google, Microsoft or GitHub. Roles that change club to club, enforced on the page, in the code and in the data.
Finish it properly
Dynamic actions, a branded Universal Theme, reminders and approvals, AI helpers, Spanish translation, and the app in Git.
Curriculum
Each lesson is 8 to 15 minutes with one clear outcome. Each part ends with a short quiz. A suggested pace is one part a week.
Foundations
0Get in and look around
- Request and activate your workspace
- Sign in and confirm you're on 26.2
- Your first query in SQL Workshop
- Install and run a sample app
- Peek inside Page Designer
1Think before you build
- Turnout's users and their stories
- Version 1 scope: in, later, out
- From stories to nouns: finding the tables
- Sketching pages on paper
2Model the data, with reasons
- Keys: surrogate ids and natural uniques
- People vs sign-ins
- Clubs, categories and URL slugs
- Membership as a table
- Events and time zones
- RSVPs as a state machine
- Lookup or check constraint? Plus the outbox and the cache
- Audit columns, defaults and triggers
- Draft in Quick SQL, finish by hand
- Indexes on foreign keys
- Seed realistic sample data
3The business logic layer
- Why a logic layer
- Package anatomy and naming
- TO_CLUB_API and join policies
- TO_RSVP_API: capacity and the last-spot race
- Waitlist promotion
- Errors people can read
- Testing the API
4The app shell and page flow
- Create the app and plan page numbers
- Public pages and friendly URLs
- Normal pages vs modal dialogs
- Branches, redirects and closing dialogs
- Deep links: sign in and come back
- Breadcrumbs: a way back up
Security
5Sign in to Turnout
- How sign-in fits together
- One person, many identities
- Email codes
- The custom scheme and the two-step page
- Social sign-in: Google, Microsoft and GitHub
- Switching schemes, signing out, sessions
6Authorization in four layers
- The four layers
- Authorization schemes, one per zone
- Component conditions: what each person sees
- Data rules: filter by person and club
- Site admins and the Club approvals page
- What people see when they're refused
- Testing permissions as three people
The app
7Build the pages
- The page map
- The public pages, revisited
- My events: two lists and a calendar
- My ticket: a QR code you can't forge
- My clubs
- Profile and linked sign-ins
- The organizer dashboard
- Members in an Interactive Grid
- The event editor dialog
- Check-in at the door
- Attendance, and closing an event
8Dynamic actions
- Anatomy of a dynamic action
- Running JavaScript: ends follow starts
- Running code on the server: the guest count
- Conditions and false actions: a two-step Cancel event
- Refreshing after a dialog closes
- When not to use a dynamic action
- Debugging dynamic actions
9Give Turnout a brand
- The brand on paper
- How Universal Theme takes a brand
- The logo
- One brand stylesheet
- Fixing what looked off
- Checking the brand
Beyond the pages
10Automation and email
- The outbox
- Email templates and placeholders
- The send automation
- Closing finished events
- Day-before reminders
- Watching automations run
11Integrations and AI
- Calling a web service from PL/SQL
- Reading JSON, and caching it
- Showing it
- Draft with AI
- Scanning tickets with the camera
- Ask the dashboard
12Turnout in Spanish
- One app, two languages
- Seed and export the XLIFF file
- Translating the file
- Text messages: Spanish from PL/SQL
- Dynamic translations: Spanish for data
- Apply, publish, and the step people miss
- When the app changes
13Quality and shipping
- The app as source files
- Tests you run every time
- The security review
- Performance: measure first
- Installable on phones
- The go-live checklist
Open it up
14REST APIs, public and OAuth2-protected
- Design before you build
- REST-enable your schema
- The first endpoint, by hand
- The rest of the API, and a client for the door
- Call it with a token
- Describe it with OpenAPI
Get started in three steps
1. Get a free workspace
Sign up at apex.oracle.com. It’s free, runs in your browser, and is ready in minutes.
2. Start Part 0
Follow the first lab. You’ll confirm you’re on APEX 26.2 and install a sample app.
3. Build Turnout, one part at a time
Each part adds to the same app and ends with a short quiz. Pass every quiz to earn your certificate.
APEX features showcased
Everything the course builds into Turnout, grouped by part. Each one is used for a real reason in a real app, not shown once and forgotten.
Getting around Part 0
- Your free workspace on apex.oracle.com
- App Builder and Page Designer
- Installing a sample app from the Gallery
- SQL Workshop's Object Browser
Data and SQL Part 2
- SQL Commands and SQL Scripts
- Quick SQL for a first draft of the tables
- Keys, check constraints, defaults and triggers
- Indexes on foreign keys
- Seed scripts with realistic sample data
Business logic in PL/SQL Part 3
- Packages as the app's API layer
- Handling the last-spot race with row locks
- An error handling function, so people read sentences, not ORA- codes
- Testing the API from SQL Commands
The app shell Part 4
- Create App, page numbers and the navigation menu
- Friendly URLs and page aliases
- Normal pages vs modal dialogs
- Branches, redirects and closing dialogs
- Deep links that survive sign-in
- Breadcrumbs and application items
Signing in Part 5
- A custom authentication scheme with emailed sign-in codes
- Social sign-in with Google, Microsoft and GitHub
- Web credentials and application settings
- Post-authentication procedures, sign-out and sessions
Security Part 6
- Authorization schemes, one per zone of the app
- Server-side conditions on regions, buttons and items
- Data rules that filter by person and club
- Application Access Control roles
- Checksums on page arguments (Page Access Protection)
Pages and regions Part 7
- Cards regions with title, button and full-card actions
- Calendar, with times in each club's own time zone
- Stacked bar charts with several series
- Interactive Grid that saves through PL/SQL
- Classic Reports, Hero regions and a QR Code item
- Forms built from items, processes and validations
- Modal dialogs that close and refresh the page behind
Dynamic actions Part 8
- Events, true and false actions
- Execute JavaScript Code and Execute Server-side Code
- Client-side conditions and confirmations
- Refreshing regions after a dialog closes
- Debugging dynamic actions
Branding Part 9
- How Universal Theme takes a brand
- Theme Roller and theme style variables
- Static application files and the app logo
- One brand stylesheet, and checking contrast and phone width
Automation and email Part 10
- An email outbox table, sent with APEX_MAIL
- Email templates with placeholders
- Scheduled automations, and watching them run
Integrations and AI Part 11
- Calling a web service with APEX_WEB_SERVICE
- Reading JSON and caching the answer
- Generative AI services (Gemini, OpenAI, Claude and others)
- Draft with AI, from PL/SQL
- An AI agent with tools, in a Show AI Assistant dialog
- Scanning QR tickets with the browser camera
Translation Part 12
- One app in English and Spanish
- Exporting and importing XLIFF files
- Text messages for strings built in PL/SQL
- Dynamic translations for data
- Publishing, and keeping translations current
Quality and shipping Part 13
- The app as APEXlang source files, validated before import
- Tests you run every time
- A security review
- Measuring performance with debug
- Installable on phones as a progressive web app
- A go-live checklist
REST APIs Part 14
- REST-enabling a schema with ORDS
- Modules, templates and handlers
- OAuth2 client credentials, roles and privileges
- Calling the API with a token
- Describing it with OpenAPI
Questions
Is it really free?
Yes. Every lesson, quiz and certificate is free, and so is the apex.oracle.com workspace you’ll use.
Do I need to know SQL?
No. Part 2 teaches the SQL you need as you build Turnout’s tables, and every script is explained line by line.
Why APEX 26.2?
It’s the current release, from October 2026. Some older tutorials show tools that 26.2 removed, so this course teaches the way APEX works today.
How do I earn the certificate?
Pass the quiz at the end of each part. Then put your name on the certificate page and print it or save it as a PDF. Part 13 ends with a capstone to try on your own.
Can I use my own computer instead?
Yes, any APEX 26.2 instance works, including a free Oracle Cloud database or a local install. apex.oracle.com is the easiest way to follow along, and it's what the lessons show.