
🎙 Podcast Version
2-host dialogue — ALEX & SAM discuss this course.
Deploying Free Websites: The $0 Stack for Rapid Prototyping
Overview
This course teaches how to launch a website without spending money on domains, hosting, or SSL certificates by leveraging the free tier services that make up the “$0 stack.” You will learn why paying for a domain before a project has users is unnecessary, how to obtain a free domain, configure Cloudflare DNS and SSL, and deploy your code to platforms such as GitHub Pages, Vercel, Netlify, and Cloudflare Pages. By the end, you will be able to take a GitHub repository and have a live, HTTPS‑secured site in under five minutes, enabling rapid iteration for side projects, prototypes, and learning exercises.
Background & Context
In the early stages of software development, especially for students and hobbyists, the barrier to entry is often perceived as cost—domain registration, hosting fees, and SSL certificates can add up quickly. The tweet by @fluixoo highlights a common misconception: that a “real” URL requires a paid subscription before any validation of the idea exists. In reality, the modern web ecosystem provides a suite of free services that together deliver a production‑grade experience: a free domain (often via Freenom or GitHub Student Pack), Cloudflare’s global DNS and edge SSL, and static‑site hosts that integrate directly with GitHub. This shift enables developers to focus on building features rather than managing infrastructure, accelerating the feedback loop from code to user. Understanding the $0 stack is therefore essential for anyone who wants to validate ideas quickly, demonstrate work to peers or employers, or maintain a portfolio without ongoing expenses.
Core Concepts
Free Domain
A free domain is a registered domain name that can be obtained at no monetary cost, typically through providers like Freenom (offering .tk, .ml, .ga, .cf, .gq) or through educational programs such as the GitHub Student Developer Pack which includes a .me domain via Namecheap. While free domains may have limitations on renewal periods or resale value, they are fully functional for DNS resolution and can be pointed to any web host. In the context of the $0 stack, a free domain provides the human‑readable address that users will type into a browser, eliminating the need to rely on raw IP addresses or subdomains offered by hosting platforms.
Cloudflare DNS
Cloudflare DNS is a free, authoritative DNS service that offers fast propagation, DDoS protection, and a simple interface for managing records. When you point a domain’s nameservers to Cloudflare, you gain access to its global anycast network, which reduces latency for DNS queries worldwide. Additionally, Cloudflare provides free SSL/TLS certificates via its Universal SSL feature, which automatically issues and renews certificates for any domain proxied through its network. This means that once your domain is configured with Cloudflare, you can serve HTTPS without purchasing a certificate or managing private keys.
Free SSL
Free SSL refers to TLS certificates issued at no cost, most commonly through Let’s Encrypt or Cloudflare’s Universal SSL. These certificates enable HTTPS, encrypting traffic between the client and server and preventing eavesdropping or tampering. In the $0 stack, SSL is obtained automatically when you enable Cloudflare’s proxy (orange cloud) for your domain; Cloudflare handles certificate issuance, renewal, and installation, and OCSP stapling. The result is a padlock icon in the browser address bar, signaling a secure connection without any manual certificate management.
GitHub Pages
GitHub Pages is a static‑site hosting service tied directly to a GitHub repository. It allows you to publish HTML, CSS, and JavaScript files from a designated branch (usually main or gh-pages) or from the /docs folder. GitHub Pages provides a free subdomain (<username>.github.io/<repo>) and supports custom domains via DNS configuration. Builds are triggered automatically on push, and the service includes basic Jekyll processing if a _config.yml file is present. Because it is tightly integrated with GitHub, developers can version‑control their site and deploy with a single git push.
Vercel
Vercel is a cloud platform optimized for frontend frameworks and static sites, offering instant deployments, serverless functions, and edge caching. The free tier includes unlimited personal projects, automatic HTTPS via Let’s Encrypt, and a global CDN. Vercel’s Git integration means that connecting a GitHub repository enables automatic builds on each push; the platform detects the project type (e.g., Create React App, Next.js, plain HTML) and runs the appropriate build command. Deployments are typically ready within a few minutes, and each deployment receives a unique preview URL that can be promoted to production.
Netlify
Netlify provides similar capabilities to Vercel: continuous deployment from Git, serverless functions, form handling, and instant rollbacks. Its free tier offers 100 GB of bandwidth, 300 build minutes per month, and custom domain support. Netlify’s interface simplifies DNS configuration and SSL provisioning, and its “Deploy Previews” feature generates a unique URL for every pull request, facilitating collaborative review.
Cloudflare Pages
Cloudflare Pages is a Jamstack platform that leverages Cloudflare’s Workers infrastructure for ultra‑low‑latency delivery. It integrates directly with GitHub (or GitLab) to build and deploy static sites on each push. The free tier includes 500 build minutes per month, 10 000 requests per day, and free SSL via Cloudflare’s edge certificates. Because it runs on the same network that provides Cloudflare DNS and SSL, Pages offers seamless end‑to‑end optimization: DNS, TLS, and static asset delivery are all managed within a single ecosystem.
Deploying with Vercel (Step‑by‑Step Process)
The transcript outlines a concrete workflow for deploying a website using Vercel for free. The process begins with creating an account at vercel.com, linking that account to a GitHub profile, importing a GitHub repository as a new project, and clicking the Deploy button. Vercel then reads the repository, installs dependencies (if any), runs the build script defined in the project’s package.json or detects a static site, and outputs the production files to its edge network. The entire sequence typically takes three to four minutes, after which a success message appears and the site is accessible via a Vercel‑generated subdomain (e.g., <project>-<username>.vercel.app). A custom domain can then be added through the Vercel dashboard by configuring DNS records (CNAME or A) to point to Vercel’s servers, after which Cloudflare can be layered on top for additional performance and security.
How It Works / Step-by-Step
- Create a Vercel Account – Navigate to vercel.com and click “Sign Up.” You can register using email, GitHub, GitLab, or Bitbucket. Choosing GitHub simplifies the next step because Vercel will request permission to access your repositories. Verify your email if required; the account is free for personal use and provides unlimited hobby projects.
- Connect Your GitHub Account – After logging in, go to the Settings → Git Integrations page (or follow the prompt during onboarding). Authorize Vercel to read your repositories and manage webhooks. This enables Vercel to listen for push events and trigger builds automatically.
- Add a New Project – From the Vercel dashboard, select “New Project.” Vercel will display a list of your GitHub repositories that have not yet been imported. Choose the repository containing the website you wish to deploy (e.g., a simple HTML/CSS/JS folder, a React app, or a Next.js project).
- Import and Configure the Project – Vercel automatically detects the framework. For a plain static site, it will use the default output directory (
publicor the root). For a Node‑based project, it will look for apackage.jsonand runnpm installfollowed by the build script (commonlynpm run build). You can adjust the build command, output directory, and environment variables in the project settings if needed.
- Initiate Deployment – Scroll to the bottom of the project configuration page and click the “Deploy” button. Vercel clones the repository, installs dependencies, executes the build, and uploads the resulting static assets to its edge network. The progress is shown in real time; most deployments finish within 3‑4 minutes.
- Verify Success – When the deployment completes, a banner appears stating “Deployment Successful” and provides a preview URL (e.g.,
https://project-name.vercel.app). Open this URL in a browser to confirm that the site loads correctly and that the padlock icon indicates an active HTTPS connection (provided by Vercel’s automatic Let’s Encrypt certificate).
- Add a Custom Domain (Optional) – In the project settings, navigate to “Domains” and enter your free domain (e.g.,
myidea.tk). Vercel will instruct you to create a CNAME record pointing tocname.vercel-dns.comor an A record to Vercel’s IP addresses. After updating DNS at your registrar (or via Cloudflare if you use Cloudflare DNS), the domain will propagate and Vercel will provision SSL for it automatically.
- Layer Cloudflare (Optional but Recommended) – If you want the performance and security benefits of Cloudflare’s edge network, change your domain’s nameservers to those provided by Cloudflare. Then add a CNAME record in Cloudflare that points to your Vercel domain (or use an A record if you prefer). Enable “Proxy status” (orange cloud) for the record so that traffic flows through Cloudflare, giving you free SSL, DDoS protection, and caching.
By following these steps, you achieve a production‑grade, HTTPS‑secured website at zero monetary cost, ready for sharing with users, collaborators, or potential employers.
Real-World Examples & Use Cases
- Student Portfolio – A computer science student builds a responsive portfolio using HTML, CSS, and JavaScript. They push the code to a GitHub repo, connect it to Vercel, and within minutes have a live site at
portfolio.vercel.app. After obtaining a free.tkdomain and configuring Cloudflare, they sharejohndev.tkon their résumé, demonstrating both development and deployment skills without any hosting fees. - Hackathon Prototype – During a 48‑hour hackathon, a team creates a React‑based dashboard for real‑time data visualization. They store the source in a private GitHub repo, link it to Vercel, and enable automatic previews for each pull request. Mentors can review progress via unique preview URLs, and the final product is launched on a free domain (
hack2025.ga) with Cloudflare SSL, allowing judges to access the demo instantly. - Open‑Source Documentation – An open‑source project maintains its documentation as a Markdown site built with MkDocs. The repo is linked to Netlify, which builds the site on every push to
main. Contributors benefit from instant preview URLs for documentation changes, and the project’s users access the docs viadocs.project.org(a free domain secured by Cloudflare), ensuring the documentation is always up‑to‑date and served over HTTPS. - Personal Blog with Serverless Functions – A developer writes a blog using Next.js and wants to add a contact form that sends emails via a serverless function. They deploy the blog to Vercel, which automatically serves the static pages and executes the serverless function at
/api/contact. A free domain (myblog.ml) is configured with Cloudflare, giving the blog global low‑latency delivery and free SSL, while the form works without any backend infrastructure. - Educational Demo Site – A professor creates a simple JavaScript visualization to illustrate sorting algorithms. The code lives in a GitHub Gist, which is cloned into a repo, connected to Cloudflare Pages, and deployed on each commit. Students access the demo via
sortingdemo.cf(a free domain) and benefit from Cloudflare’s edge caching, ensuring fast load times even during peak classroom usage.
Key Insights & Takeaways
- Paying for a domain before a project has users is unnecessary; free domains provide fully functional addresses for early‑stage validation.
- Cloudflare’s free DNS and Universal SSL give you global performance, security, and automatic HTTPS without manual certificate management.
- GitHub‑integrated platforms (Vercel, Netlify, Cloudflare Pages) eliminate the need for manual FTP or server configuration; a simple git push triggers a build and deploy.
- Vercel’s free tier offers unlimited personal projects, automatic HTTPS, and preview URLs for every pull request, enabling rapid iteration.
- Netlify provides similar capabilities with generous free build minutes and form handling, making it a strong alternative for static sites and simple backend features.
- Cloudflare Pages leverages the same edge network as Cloudflare DNS and SSL, offering the lowest latency possible for static assets.
- The typical deployment time from push to live site is three to four minutes, allowing developers to see the impact of their changes almost instantly.
- Adding a custom domain involves creating a CNAME (or A) record pointing to the provider’s target; DNS propagation usually completes within a few minutes to an hour.
- Layering Cloudflare in front of Vercel/Netlify/Pages adds DDoS protection, caching, and additional security headers at no extra cost.
- Free tiers are sufficient for learning, prototyping, and low‑traffic side projects; as traffic grows, you can upgrade to paid plans for more bandwidth, build minutes, or advanced features without migrating your codebase.
Common Pitfalls / What to Watch Out For
- Forgetting to Set the Correct Build Command – If Vercel or Netlify cannot detect your project’s build step, the deployment will produce an empty or broken site. Always verify the build settings and, if necessary, specify a custom build command (e.g.,
npm run buildormkdocs build). - Neglecting to Enable the Cloudflare Proxy – Adding a domain’s DNS records without enabling the orange cloud proxy means traffic bypasses Cloudflare’s SSL and performance benefits, leaving you reliant on the host’s certificate alone.
- Assuming Free Domains Are Permanent – Some free domains (e.g., from Freenom) require periodic renewal or may be reclaimed after inactivity. Keep track of expiration dates and consider linking a more stable domain via the GitHub Student Pack if you need longevity.
- Overlooking Rate Limits on Free Tiers – Vercel’s free hobby account limits serverless function execution time and Netlify’s free build minutes can be exhausted with heavy usage; monitor usage in the dashboard to avoid unexpected build failures.
- Misconfiguring CNAME vs. A Records – Pointing a domain’s CNAME to a Vercel subdomain works for most cases, but if you need the root domain (e.g.,
example.com) you must use ALIAS or ANAME records, which not all registrars support. Using a subdomain (www.example.com) avoids this issue. - Skipping HTTPS Verification – After adding a custom domain, always check that the padlock appears and that the certificate is issued by Let’s Encrypt or Cloudflare. An expired or missing certificate will cause browser warnings and deter users.
- Ignoring Cache Invalidation – When using Cloudflare’s proxy, changes to your site may not appear immediately due to cached assets. Purge the cache (via the Cloudflare dashboard or API) after major updates to ensure visitors see the latest version.
- Assuming All Frameworks Work Out‑of‑the‑Box – While Vercel auto‑detects popular frameworks, exotic or custom build setups may require manual configuration of the output directory and environment variables. Test locally first, then adjust the project settings in the Vercel dashboard.
Review Questions
- Explain how obtaining a free domain, configuring Cloudflare DNS, and enabling Cloudflare’s Universal SSL together provide a production‑grade, HTTPS‑secured web address without any monetary cost.
- Describe the step‑by‑step process of deploying a GitHub‑hosted static site to Vercel, including account creation, GitHub integration, project import, build triggers, and verification of a successful deployment.
- Imagine you have a Next.js application with a serverless API route. You want to deploy it to Netlify while also using a free domain secured by Cloudflare. Outline the necessary configuration changes in Netlify (build command, publish directory, environment variables) and the DNS steps in Cloudflare to make the site reachable at
myapp.tkwith HTTPS.
Further Learning
- Explore advanced features of Vercel such as Serverless Functions, Edge Middleware, and Image Optimization to add dynamic capabilities to your Jamstack sites.
- Investigate Netlify’s Forms, Identity, and Split Testing to enhance user interaction and perform A/B experiments without managing a backend.
- Study Cloudflare Workers to run custom JavaScript at the edge, enabling features like authentication, bot management, or request modification directly within the Cloudflare network.
- Learn about custom domain setup with SSL on GitHub Pages, including how to enforce HTTPS via GitHub’s automatic certificate provisioning.
- Review the differences between static site generators (Next.js, Nuxt.js, Astro, Hugo, Jekyll) and how each integrates with the deployment platforms discussed.
- Consider monitoring and analytics: integrate Google Analytics or Plausible via a simple script, and use Vercel’s or Netlify’s built‑in analytics to track traffic on your free domain.
- Look into automation: set up GitHub Actions to run linting, testing, or performance budgets before a push triggers a deployment on Vercel or Netlify, ensuring quality checks are part of your CI/CD pipeline.