Tags:
devops, webdev, tutorial, beginners
Cover image: Take a screenshot of your jump2techdevops.com homepage
Article body — paste this:
# I Built a Full-Stack School Website in 1 Day with Claude AI
No coding experience. No developer. $9.77 total cost.
Here is exactly what I built and how you can do the same for your business.
## What I Built
Live at: **jump2techdevops.com**
- Homepage with countdown timer, registration form, FAQ in English and Russian
- Student login and registration with a real database
- 13 course modules with Udemy-style lecture pages
- Admin dashboard to manage students and add lectures without code
- Automated tests with Playwright
- Deployed on Cloudflare Pages with custom domain
## The Tech Stack
| Tool | Purpose | Cost |
|------|---------|------|
| Next.js 15 | Website framework | Free |
| TypeScript | Type-safe JavaScript | Free |
| Tailwind CSS | Styling | Free |
| Supabase | Database + Auth | Free |
| Cloudflare Pages | Hosting | Free |
| Cloudflare Registrar | Domain | $9.77/yr |
| Claude AI + Code | Wrote all the code | Free |
| Playwright | Automated testing | Free |
**Total cost: $9.77**
---
## Phase 1 — Create the Project
bash
cd ~
mkdir projects && cd projects
npx create-next-app@latest my-school-website
cd my-school-website
npm run dev
Open http://localhost:3000 — you see the default Next.js page.
This is running ONLY on your Mac. No one else can see it yet.
Then open Claude Code:
bash
claude
Claude Code is your AI engineer. It reads your files and writes
code directly on your computer.
---
## Phase 2 — Build the Homepage with AI
In the Claude Code prompt, describe what you want:
> Build a professional DevOps school homepage with:
> hero section, countdown timer to June 1 2026,
> stats bar, 13 module cards, registration form,
> student testimonials, FAQ in English and Russian,
> sticky bottom bar with $700/month price.
> Primary color: #185FA5
Press Enter. Claude writes all the files.
**This is prompt engineering** — describing exactly what you want.
The more detail you give, the better the result.
---
## Phase 3 — Set Up the Database
Create a free account at supabase.com.
Create a new project, then run this SQL to create your tables:
sql
-- Store student registrations
CREATE TABLE IF NOT EXISTS profiles (
id UUID PRIMARY KEY,
full_name TEXT,
email TEXT,
phone TEXT,
experience_level TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
CREATE POLICY 'insert' ON profiles FOR INSERT WITH CHECK (true);
CREATE POLICY 'select' ON profiles FOR SELECT USING (true);
-- Store lectures added through admin panel
CREATE TABLE IF NOT EXISTS lectures (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
module_slug TEXT NOT NULL,
title TEXT NOT NULL,
content TEXT,
type TEXT DEFAULT 'reading',
order_index INTEGER DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE lectures ENABLE ROW LEVEL SECURITY;
CREATE POLICY 'read' ON lectures FOR SELECT USING (true);
CREATE POLICY 'admin' ON lectures FOR ALL USING (true);
Connect to your website:
bash
npm install @supabase/supabase-js
Create `src/lib/supabase.ts`:
typescript
import { createClient } from '@supabase/supabase-js'
export const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
Create `.env.local`:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci...
> ⚠️ `.env.local` is in `.gitignore` — it never goes to GitHub.
> Never hardcode secrets in your code.
---
## Phase 4 — Student Login & Registration
Tell Claude Code:
> Create /register page with: Full Name, Email, Password,
> Phone, Experience Level dropdown. Call supabase.auth.signUp()
> then insert into profiles table.
>
> Create /login page with email and password.
> Call supabase.auth.signInWithPassword().
> On success redirect to /modules.
>
> Protect /modules — redirect to /login if no session.
---
## Phase 5 — Admin Dashboard
Tell Claude Code:
> Create /admin page with password protection.
> After login show two tabs:
> 1. Students: table from profiles table
> 2. Lectures: add/edit/delete lectures per module
Now you can see every registered student and manage
all course content from your browser — no code needed.
---
## Phase 6 — Test with Playwright
bash
npm install --save-dev @playwright/test
npx playwright install chromium
Create `tests/site.spec.ts`:
typescript
import { test, expect } from '@playwright/test';
test('homepage loads', async ({ page }) => {
await page.goto('http://localhost:3000');
await expect(page.locator('h1')).toBeVisible();
});
test('modules redirect to login', async ({ page }) => {
await page.goto('http://localhost:3000/modules');
await expect(page).toHaveURL(/login/);
});
bash
npx playwright test
All green = safe to deploy.
---
## Phase 7 — Deploy to Cloudflare Pages
Add static export to `next.config.ts`:
typescript
const nextConfig = {
output: 'export',
trailingSlash: true,
images: { unoptimized: true }
};
export default nextConfig;
Build and deploy:
bash
npm run build
npm install -g wrangler
npx wrangler login
npx wrangler pages deploy out --project-name my-school
Your site is live at `https://my-school.pages.dev`
Add Supabase keys to Cloudflare:
bash
npx wrangler pages secret put NEXT_PUBLIC_SUPABASE_URL
npx wrangler pages secret put NEXT_PUBLIC_SUPABASE_ANON_KEY
Redeploy:
bash
npx wrangler pages deploy out --project-name my-school
---
## Phase 8 — Connect Custom Domain
Buy your domain at cloudflare.com/registrar (~$9.77/year).
Then: Workers & Pages → your project → Custom domains
→ Set up custom domain → type your domain → Activate.
Since domain and hosting are both on Cloudflare —
connection is instant. No DNS propagation wait.
---
## The Daily Workflow
Every time you change something:
bash
1. Test locally
npm run dev
2. Run tests
npx playwright test
3. Build
npm run build
4. Deploy
npx wrangler pages deploy out --project-name my-school
5. Save to GitHub
git add .
git commit -m "describe what changed"
git push
---
## What This Taught Me
Building this website taught me more DevOps than any course:
- **Next.js** — how modern web frameworks work
- **Supabase** — database design, SQL, Row Level Security
- **Environment variables** — keeping secrets safe
- **Static export** — how websites are built for production
- **Cloudflare Pages** — CDN, edge hosting, custom domains
- **Playwright** — automated testing before every deploy
- **Git workflow** — committing, pushing, version control
- **Wrangler CLI** — command-line deployment
Every tool here is used by real companies.
Netflix, Airbnb, and Google engineers use these same tools.
---
## Resources
- Live site: https://jump2techdevops.com
- GitHub: https://github.com/jumptotechschooldevops/jumptotech-website
- Next.js docs: https://nextjs.org/docs
- Supabase docs: https://supabase.com/docs
- Cloudflare Pages: https://pages.cloudflare.com
**Batch 4 starts June 1, 2026 — Mon–Fri 6PM–9PM — $700/month**
If you want to learn DevOps properly — Docker, Kubernetes,
AWS, Terraform, CI/CD, and more — come join us.
*Questions? Drop them in the comments below.*
Top comments (0)