Building AI Apps Live from Cairo 🔴
Want to back the stream? The «داعم» membership on YouTube is EGP 60 a month: badges, emoji, and I answer your questions first on stream. Become a supporter
The gist
The session centers on building a low-maintenance stream hub and connecting it to YouTube so live status, schedules, and upcoming broadcasts update automatically, with a static fallback. Practical work covered YouTube Data API setup, Cloudflare variables, diagnosing an API-key restriction and an uncommitted file that broke deployment, then designing distinct live/offline cards, playlist sections, and a scrollable video carousel. Some offline-state priorities, day-versus-night organization, and a local refresh error remained unresolved. The discussion provisionally favored sending viewers to YouTube instead of embedding the player, especially for mobile usability and native engagement. It also offered personal, exploratory comparisons of Cursor, Antigravity, and Warp; task routing between Codex and Claude; parallel workflows and context handoffs; and coding-agent permission configuration that treated file deletion and GitHub pushes as sensitive exceptions. Terminal sandboxing and screenshot routing were criticized without a systematic final tool verdict. A separate command-center concept combined a timeline project map, subtask nodes, specialized agents, execution-attempt tracking, and automatic prompt assembly from project context and instruction files. Landing-page workstreams included Telegram community promotions, simplifying the email-capture area, and restructuring the “What I’m Building” section around audience needs, with several information-architecture options left undecided. On design, the discussion argued that visual references, precise spacing and motion specifications, and repeated human review matter more than broad labels such as “premium,” and that paid effects libraries are most valuable when they save substantial engineering time. Another experiment involved a goal-tracker-style visual counter, structured JSON handoffs between agents, and a proposed Playwright MCP browser connection; the captions do not confirm that the connection or implementation was completed. Additional questions covered SEO and traffic measurement for Egypt and MENA, the marketing and distribution gap facing AI-product builders, and general B2B-versus-B2C SaaS trade-offs, without documented final research findings or tests.
53 moments from the stream
- 0:00:19
Finishing and Automating a Stream Hub Before the Main Project
The speaker outlines a staged approach: finish the stream-hub website, then make it operate with minimal intervention before shifting focus to the main project. The longer-term idea is for it to support the stream and possibly a vibe-coding community while reducing the manual burden of repurposing content.
- 0:05:21
Previewing and Targeting UI Elements Inside Anti-Gravity
The speaker demonstrates running a site locally and opening it through Simple Browser inside Anti-Gravity to work on the UI within the IDE. He highlights adding a specific page element to chat, but feels some screenshot and integration behavior increasingly favors Gemini, so Warp remains his primary workflow.
- 0:09:29
Assigning Coding Assistants by Task Type
The speaker describes a practical personal split: assigning UI work to Codex and functionality, build, and backend work to Claude. This is presented as his workflow preference, not a verified general ranking of the tools.
- 0:10:16
Preparing an Assistant with Project Review and Parallel Sessions
Before assigning a direct task, the speaker asks the coding assistant to review the project deeply, including mission, UI, UX, and codebase documentation. He then proposes using multiple sessions or terminals in parallel to work on several website sections and move faster.
- 0:13:28
Exploring a Dynamic Broadcast Window for a Website
The speaker considers two ways to show the next broadcast time in two landing-page locations: a static daily window or a dynamic value that accommodates delays and days without a stream. He asks whether OBS-scheduled streams can be connected live to the website; the captions provide no result or confirmation that this is feasible.
- 0:15:19
Dynamic stream scheduling via YouTube API with a static fallback
The speaker discussed avoiding inaccurate fixed schedules by treating YouTube Studio as the schedule’s primary source. The proposed hybrid architecture keeps static times as an API-failure fallback while overriding them with actual scheduled or live broadcast data, including the title, live state, and smart caching.
- 0:17:33
Scoping frontend tasks when context is limited
The speaker worried that reviewing the project consumed too much of the context window, then gave the agent a narrowly scoped frontend task: add a compact Telegram community promotion near the stream section and another above the footer.
- 0:24:09
Build first, then use GPT for polish
After slow progress on the Telegram sections, the speaker proposed a practical workflow: build the website first, then use GPT to polish or improve it, reflecting his opinion that it performed better at polishing than building from scratch.
- 0:26:57
Investigating screenshot routing changes in Google Antigravity
The speaker investigated why screenshots were being routed to the agent manager rather than an active terminal in Google Antigravity. Terminal integration or sandbox settings were suggested and then said not to solve it; according to relayed research requested as current to March 17, 2026, the change was recent and no documented full return to the old drop behavior was available. The discussion referenced a February 26 change, without independent verification in these pages.
- 0:33:46
Antigravity Constraints and Alternative Agent Workflows
Luqman expressed dissatisfaction with the Antigravity experience and considered Cursor or using an agent directly to research the project in depth. He found the agent manager useful, while noting that its Claude support lacked some functionality and that running one agent at a time made the workflow slow.
- 0:35:47
Handling a Site Outage and Simplifying the Email Capture Section
Luqman noticed that the website was down and tried closing and reopening it. He later requested removing the entire “coming soon” section while retaining the email capture box, then began discussing Antigravity’s terminal sandboxing and what happens when the website goes down, but the thought remains incomplete on this page.
- 0:39:55
Avoiding Conflicts Between Coding Agents
While the website was failing, Luqman distinguished running multiple terminals from using multiple models concurrently. He explained that Claude agents in Agent Teams can, in his experience, coordinate overlapping work, whereas changes from separate models may need to be applied sequentially to reduce conflicts.
- 0:43:45
Configuring Coding-Agent Permissions
Luqman referred to an earlier configuration that stopped Claude from repeatedly requesting permission, while treating sensitive operations such as deleting files and pushing to GitHub as exceptions requiring particular attention. This reflects his workflow choice rather than a general security recommendation.
- 0:44:25
Connecting Live Streams with the YouTube Data API
Luqman worked through obtaining a YouTube channel ID and a YouTube Data API v3 key so a website could detect and display a live stream automatically. The process included locating the channel ID in YouTube Studio, creating a Google Cloud project, enabling the API, creating a key, and restricting it to the YouTube API. He stressed keeping keys in an environment file and out of the public stream or unnecessary sharing. These pages do not document a successful live-stream retrieval test, and he noted that tool-generated navigation instructions can become outdated as interfaces change.
- 0:55:14
Diagnosing a Missing YouTube Live Status
The local app did not show the live state even though the channel was actively streaming. The diagnosis indicated that HTTP referrer restrictions on the YouTube API key were blocking calls made by the Next.js server; after the restriction was removed for the test, “Live now” appeared. A separate key with restrictions suited to server-side calls was also suggested.
- 1:01:47
Configuring YouTube Variables for a Cloudflare Deployment
The YouTube API key and channel ID were added under Cloudflare Variables & Secrets, with emphasis on matching the variable names exactly. It was suspected—but not confirmed—that an earlier deployment failed because those variables were missing, so the next check was whether the deployment would pick them up. A proposed follow-up was to change the thumbnail dynamically during a stream instead of keeping it static.
- 1:04:34
Diagnosing a Cloudflare Deployment Failure Caused by an Uncommitted File
When a generic deployment message obscured the build failure, the issue was traced to a page importing a component whose file had not been committed. The proposed action was to add the component and push again; after waiting for deployment, the site was reported live.
- 1:09:40
Does Stream Status Update Without Redeployment?
A question asked whether changing stream status requires another Git push and deployment. The displayed answer was that the status updates automatically in real time.
- 1:10:08
Embed a YouTube Live Stream or Send Viewers to YouTube?
The discussion weighed keeping viewers on the site against losing parts of the native YouTube experience. It said video, live chat, and an official subscribe button could be embedded, while liking would require linking out; the chat iframe might also be unreliable on mobile, add layout complexity, and split viewing metrics.
- 1:12:37
Improving Mobile Viewing for a Coding Stream
The preview suggested the mobile experience was broadly usable, but code and small text were less legible than on desktop. Desktop was considered better for this kind of stream, with mobile UI optimization deferred for later work.
Got a question about something in this stream?
Ask in the group