Concept illustration of a StageSpark website on a laptop with cards representing a design brief, code and Git-to-cloud publishing.

AI-generated editorial artwork inspired by the StageSpark demonstration; not a screenshot of the finished website.

One of the things I wanted to test with Codex was just how much web-development knowledge you actually need to create a small website.

For this experiment I deliberately kept things simple.

The website is made from ordinary HTML, CSS and a small amount of JavaScript. There is no React, Next.js, database or complicated development environment.

I used Codex to create the website, GitHub to store the files, and Cloudflare Pages to put it online for free.

If you've never built a website before, don't be put off by those names. I'll explain each part as we go.

The basic process is:

Describe the website to Codex
            ↓
Codex creates the website files
            ↓
Open index.html and check the website
            ↓
Save the files to GitHub
            ↓
Connect GitHub to Cloudflare Pages
            ↓
Website is live

What are we building?

For the demonstration I invented a children's performing arts school called:

StageSpark Performing Arts

The idea is to pretend that a customer has given me their logo, photographs, class information and the text they want on the website.

Codex then turns that information into a finished website.

The finished demo has four pages:

Home, Street Dance, Actors Studio and a demonstration booking page.

The locations, testimonials and business itself are fictional.

What is HTML and CSS?

You don't really need to understand HTML and CSS to follow this guide, but it helps to know what they do.

HTML contains the content and structure of the page: headings, paragraphs, photographs, buttons and links.

CSS controls what everything looks like: colours, spacing, fonts, sizes and the layout.

JavaScript adds small pieces of behaviour. In this example it controls things such as the mobile menu and the demonstration booking form.

A basic website might therefore contain files such as:

index.html
street-dance.html
actors-studio.html
book.html

assets/
    css/
        styles.css

    js/
        main.js

    images/
        logo.png
        hero.jpg
        street-dance.jpg
        actors-studio.jpg

You don't have to create all of these files yourself. That is what we're going to ask Codex to do.

Step 1 — Create a GitHub account

The first thing we need is a GitHub account.

GitHub stores a copy of the website online and keeps a history of the changes we make.

For a simple project, you can think of it as an online home for the website's source files.

Go to https://github.com/ and create a free personal account if you don't already have one.

You will need to verify your email address before you can use all of GitHub's features.

Once signed in, choose:

New repository

A repository is simply a project stored on GitHub.

I'm going to call mine:

stagespark-demo

You can choose whether the repository is public or private.

Because we're going to create the website on our computer first, leave the options for creating a README, .gitignore and licence switched off.

Then select:

Create repository

GitHub will create an empty repository ready for our website.

Step 2 — Make sure Git is installed

Git is the software that allows your computer to send your website files to GitHub.

You only need to set this up once.

On a Mac

Open Terminal.

You can find it using Spotlight by pressing:

Command + Space

Type:

git --version

If Git is installed, you'll see a version number.

If it isn't installed, macOS will normally offer to install Apple's Command Line Tools.

You can also start the installation manually with:

xcode-select --install

Follow the instructions on the screen.

On Windows

Open PowerShell.

You can find it by typing:

PowerShell

into the Windows Start menu.

Then type:

git --version

If Windows tells you that git isn't recognised, install Git for Windows from the official Git website.

Run the installer and accept the normal default options.

Then close PowerShell, open it again and run:

git --version

You should now see the installed version.

Step 3 — Download Codex from OpenAI

For this project I'm using the Codex desktop experience rather than installing programming tools such as Node.js or npm.

Follow the download instructions in the official OpenAI desktop app guide to install the application for your computer.

Install it and sign in with your ChatGPT account.

Open the application and choose Codex.

Codex can work directly with folders and files stored on your computer.

That means we can give Codex an empty website folder and ask it to create the whole site inside it.

Step 4 — Create a folder for the website

You could simply create a new folder using Finder on a Mac or File Explorer on Windows.

I'm going to call it:

stagespark-demo

If you'd rather do it using a command, here are the equivalent instructions.

Mac

Open Terminal and type:

cd ~/Documents
mkdir stagespark-demo
cd stagespark-demo

Windows

Open PowerShell and type:

cd $HOME\Documents
mkdir stagespark-demo
cd stagespark-demo

We now tell Git that this folder is a project we want it to keep track of.

The Git commands are the same on Mac and Windows:

git init
git branch -M main

Don't worry too much about what these commands mean.

The first tells Git:

Start tracking this folder.

The second tells Git to call the main version of our website:

main

Step 5 — Add the customer's images

Normally a customer would give me things such as their logo and photographs.

For my fictional example I created four image files:

hero-performing-arts.jpg
street-dance.jpg
actors-studio.jpg
StageSparkLogo.png

Eventually these will live inside:

assets/images/

You can copy the images into the project before giving Codex the instructions, or ask Codex to create the folders first and then copy the images in afterwards.

Step 6 — Open the folder in Codex

Open Codex and choose the option to open a local folder.

Select:

stagespark-demo

Codex can now see and work with the files inside that folder.

At this point our folder is almost empty.

Now comes the interesting part.

We're going to describe the website we want.

Step 7 — Give Codex the brief

You could type:

Create a website for a children's performing arts school.

Codex could build something from that.

The problem is that we've left Codex to guess almost everything.

What pages should there be?

What colours should it use?

What should the buttons say?

What information belongs on each page?

Where are the photographs?

What happens when somebody presses the booking button?

A much better approach is to give Codex something similar to a customer brief.

Download the complete StageSpark website prompt (.txt) — this is the actual prompt I used to generate the demonstration site.

My StageSpark prompt starts like this:

Build a small demonstration website for a fictional children's performing arts
school called:

StageSpark Performing Arts

Assume that the customer has supplied:
- written copy
- a logo/brand direction
- three photographs
- class information

TECHNOLOGY

Build the site using plain:
- HTML5
- CSS3
- a small amount of vanilla JavaScript

Do not use React, Next.js, Bootstrap, Tailwind or other frameworks.

The finished site must work as a simple static website suitable for deployment
to Cloudflare Pages.

I then tell Codex exactly which files I want:

Create:

/
  index.html
  street-dance.html
  actors-studio.html
  book.html
  assets/
    css/
      styles.css
    js/
      main.js
    images/
      hero-performing-arts.jpg
      street-dance.jpg
      actors-studio.jpg
      StageSparkLogo.png

Then I describe the appearance:

Create a friendly, energetic and professional children's performing arts
website.

It should feel modern rather than corporate.

Use:
- lots of white space
- large confident headings
- dark charcoal/navy text
- a bright coral/red primary accent
- a warm yellow secondary accent
- rounded cards
- subtle shadows
- large photography
- playful but restrained decorative shapes
- clear call-to-action buttons

I also give Codex the actual words to put onto the website.

For example:

Hero heading:

Find your confidence.
Find your creativity.
Find your stage.

Intro text:

StageSpark gives young performers a welcoming place to move, perform, create
and make friends. Our small-group classes are designed to help every student
develop confidence while learning practical performance skills.

Primary button:
Book a trial class

Secondary button:
Explore our classes

And the details of individual classes:

Street Dance

High-energy classes combining rhythm, choreography and performance. Students
learn routines, develop coordination and build confidence while dancing as
part of a group.

Ages:
7–16

Location:
Rosewick Community Hall

Button:
Discover Street Dance

The locations aren't real because this is only a demonstration.

I continue in the same way for Actors Studio, the booking page, the footer and the other sections of the site.

Why is the prompt so detailed?

The prompt is deliberately quite long.

Most of it isn't programming.

I'm really just telling Codex what I would normally tell a web designer or developer.

I'm specifying the content, pages, appearance and behaviour I want.

I also tell Codex what not to do.

For example:

Do not invent a postcode or use a real address.

Do not include genuine telephone numbers, email addresses,
social media accounts or business addresses.

Do not create additional locations, staff biographies, holiday camps,
parties, nursery services or other pages.

This is important because otherwise an AI may try to be helpful by adding things that the customer never asked for.

Tell Codex about mobile phones and accessibility

I also include instructions such as:

RESPONSIVE DESIGN

The site must look good at:
- 375px mobile width
- tablets
- normal laptops
- wide desktop screens

Avoid excessively large text on mobile.

Images should crop well using object-fit: cover.

And:

ACCESSIBILITY

Include:
- keyboard accessible navigation
- visible focus states
- descriptive image alt text
- sufficient colour contrast
- form labels associated with controls
- aria-expanded on the mobile menu button
- reduced-motion support where appropriate

I don't necessarily need to understand all of those terms.

I'm giving Codex a checklist of good practices that I want it to follow.

A template for your own website

The StageSpark prompt is specific to this demonstration.

You wouldn't use the same text to build a plumber's website, photography portfolio or restaurant.

However, the overall structure of the prompt can be reused.

Here is a simple starting template:

Build a small website for:

[BUSINESS OR WEBSITE NAME]

ABOUT THE BUSINESS

[Explain what the business does.]

CUSTOMER-SUPPLIED MATERIAL

The customer has supplied:

[LIST THEIR LOGO, PHOTOS, TEXT AND OTHER MATERIAL]

TECHNOLOGY

Create the website using:

- HTML5
- CSS3
- a small amount of vanilla JavaScript

Do not use a JavaScript framework.

The website must be a static website suitable for Cloudflare Pages.

PAGES

Create:

[LIST THE PAGES]

For example:

index.html
about.html
services.html
contact.html

DESIGN

The website should feel:

[FRIENDLY / MODERN / PREMIUM / FUN / PROFESSIONAL / ETC.]

Use:

[DESCRIBE COLOURS]

[DESCRIBE FONTS OR TYPOGRAPHY]

[DESCRIBE PHOTOGRAPHY]

[DESCRIBE BUTTONS]

[DESCRIBE CARDS AND PAGE STYLE]

NAVIGATION

Include:

[HOME]
[ABOUT]
[SERVICES]
[CONTACT]

Create an accessible mobile menu.

HOME PAGE

Main heading:

[YOUR HEADING]

Introductory text:

[YOUR TEXT]

Main button:

[BUTTON TEXT]

Link it to:

[DESTINATION]

Add the following sections:

[DESCRIBE EACH SECTION]

OTHER PAGES

For each page provide:

- heading
- text
- images
- buttons
- links
- any special information

RESPONSIVE DESIGN

Make the website work well on:

- mobile phones
- tablets
- laptops
- large desktop screens

ACCESSIBILITY

Use:

- semantic HTML
- descriptive image alt text
- keyboard accessible navigation
- visible focus states
- sufficient colour contrast
- properly labelled forms

IMAGES

Use customer-supplied images from:

assets/images/

Do not hotlink external photographs.

IMPORTANT

Do not invent information about the business.

Do not invent:

[ADD ANYTHING YOU PARTICULARLY DON'T WANT CODEX TO CREATE]

FINALLY

Review the complete website for:

- broken links
- missing images
- spelling mistakes
- mobile layout problems
- inconsistent spacing
- accessibility problems
- information that I did not provide

Fix any problems you find.

The parts inside square brackets are the things you change.

For another business, the technology might remain exactly the same.

What changes is the content and design brief.

For example, a photographer might want large image galleries. A builder might want pages showing previous projects. A restaurant might need menus and opening hours.

The important part is to explain clearly what you want rather than expecting Codex to guess.

Step 8 — Let Codex build the website

Now give Codex the prompt.

Codex will start creating the files inside the project folder.

You may see it creating things such as:

index.html

street-dance.html

actors-studio.html

book.html

assets/css/styles.css

assets/js/main.js

Once it has finished, ask Codex:

Review the complete website.

Check all pages and internal links.

Check that all images load correctly.

Check the layout at mobile and desktop sizes.

Check for spelling mistakes and accessibility problems.

Fix any problems you find.

This gives it a second opportunity to check its own work.

Step 9 — Look at the website

This part is much easier than it might sound.

Because we've deliberately built a normal HTML website, we don't need to install a web server just to look at it.

Find the project folder.

Then find:

index.html

On a Mac, double-click index.html in Finder.

On Windows, double-click index.html in File Explorer.

Your normal web browser should open and display the website.

That's it.

There is no need to install Python, Node.js or another development server for this demonstration.

You can click around the website and check the other pages.

If you find something you don't like, go back to Codex and simply describe the change.

For example:

The heading on the home page is too large on my phone.

Reduce the mobile heading size but don't change the desktop version.

Or:

Make the Street Dance and Actors Studio cards the same height.

Or:

The yellow buttons are difficult to read.

Improve the contrast without changing the overall design.

Codex can then modify the existing files.

When would I need a local web server?

Opening index.html directly works well for a simple website like this.

More advanced websites can use browser features that aren't allowed when files are opened directly from your hard drive.

For example, a site using JavaScript modules, fetch(), APIs or certain security-sensitive browser features may need to run through a local web server.

But our StageSpark demonstration doesn't need that.

Step 10 — Save the finished website with Git

Once you're happy with the site, we save the current version using Git.

Open Terminal on the Mac or PowerShell on Windows and make sure you're inside the project folder.

On a Mac:

cd ~/Documents/stagespark-demo

On Windows:

cd $HOME\Documents\stagespark-demo

Now run:

git status

This shows the files that have changed.

Next:

git add .

This tells Git that we want to include all of those files.

Now save this version:

git commit -m "Create StageSpark website"

A Git commit is basically a saved point in the history of the website.

If Git asks you to identify yourself the first time you use it, enter:

git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"

Use the name and email address you want associated with your Git commits.

Then run the commit command again.

Step 11 — Connect the website to GitHub

Go back to the empty stagespark-demo repository you created on GitHub.

GitHub displays the repository address.

It will look something like:

https://github.com/YOUR-USERNAME/stagespark-demo.git

Copy your own repository address.

Back in Terminal or PowerShell, enter:

git remote add origin https://github.com/YOUR-USERNAME/stagespark-demo.git

Obviously replace YOUR-USERNAME with your own GitHub username.

Then enter:

git push -u origin main

Git may ask you to sign into GitHub.

Follow the sign-in instructions shown on your computer.

Once finished, refresh the GitHub page.

You should now see your HTML, CSS, JavaScript and image files stored in the repository.

What happens when I make changes later?

This is where Git starts to become useful.

Suppose I ask Codex:

Change the main button colour to dark red and make the mobile navigation
slightly larger.

Codex changes the website files.

I look at index.html again and make sure I'm happy.

Then I save the changes with:

git add .
git commit -m "Improve buttons and mobile navigation"
git push

Those three commands will become the normal routine:

git add .
git commit -m "Describe what changed"
git push

You don't need to understand everything Git can do to use this basic workflow.

Step 12 — Create a free Cloudflare account

Our website currently exists on our computer and on GitHub.

Now we need somewhere to host it.

I'm using Cloudflare Pages.

Cloudflare Pages can host static HTML websites and can connect directly to a GitHub repository.

Create a Cloudflare account if you don't already have one and sign into the Cloudflare dashboard.

Step 13 — Create the Cloudflare Pages website

From the Cloudflare dashboard open:

Workers & Pages from the Compute menu

Choose:

Create application

Then choose the Continue with Pages option. This is now next to Need to use the legacy Pages workflow? at the bottom.

Import an existing Git repository

Cloudflare will ask you to connect your GitHub account.

Allow Cloudflare access to the repository containing the website.

Choose:

stagespark-demo

and continue to the setup screen.

For our simple website there is nothing to compile.

The production branch should be:

main

There is no framework, so choose None if Cloudflare asks for a framework preset.

For a site with no build step, use exit 0 as the build command, as recommended in Cloudflare’s static HTML guide.

For the output directory, select the folder containing index.html.

In our demonstration index.html is at the top level of the repository, so the project root is the website itself.

Then start the deployment.

Cloudflare supports exactly this sort of static HTML deployment and can deploy directly from a connected GitHub repository.

Step 14 — Your website is online

After the first deployment Cloudflare will give the project an address ending in:

.pages.dev

For example:

stagespark-demo.pages.dev

Open that address and you should see the same website that you previously opened from index.html on your computer.

Except this time it is available on the internet.

You can see the finished demonstration here: Visit the StageSpark demo website.

The really useful bit — future updates are automatic

Cloudflare is now connected to GitHub.

That means our normal workflow becomes:

Ask Codex to make a change
            ↓
Check the website locally
            ↓
git add .
            ↓
git commit
            ↓
git push
            ↓
GitHub receives the new version
            ↓
Cloudflare automatically deploys it

For example:

git add .
git commit -m "Add new Street Dance information"
git push

After the push reaches GitHub, Cloudflare can automatically create and deploy the new version of the site.

There is no need to manually upload files to a web server each time.

What did I actually have to code?

Almost nothing.

I had to describe the website I wanted, organise the customer's content and photographs, review what Codex produced and make decisions about what I liked.

Codex handled the HTML, CSS and JavaScript.

That doesn't mean understanding web development is useless. Knowing HTML and CSS makes it much easier to understand what is happening and diagnose problems.

But it does mean that building a simple website has become much more approachable.

Why use plain HTML for this?

For larger projects I might choose something like Next.js.

For a four-page website like this, that would probably be unnecessary.

Plain HTML and CSS has several advantages.

There are very few moving parts. There are no software packages to constantly update. There is no complicated build process. The pages load quickly. Hosting is easy. The website can be moved somewhere else easily. And if Codex disappeared tomorrow, the files are still completely normal web files that can be edited by anybody.

That's important to me.

I'm using AI to make building the website easier, rather than making the website dependent on AI.

Final thoughts

This experiment isn't really about whether Codex knows how to write HTML.

Of course it does.

What I find more interesting is that the process starts to feel less like traditional programming and more like describing what I want.

I can give Codex the customer's text, photographs and requirements and say:

This is the website I want.

These are the pages.

This is how I want it to look.

These are the things you must not invent.

Make it work on phones and computers.

Then check your work.

Codex turns that brief into an actual website.

I can open the result by double-clicking index.html, ask for changes in normal language, save the finished version to GitHub and publish it using Cloudflare Pages.

For a simple brochure-style website, that's a remarkably straightforward workflow.