← Back to the blog

Cloud architecture · 16 August 2026

Cloud Free Tiers for Web Apps: Cloud Run, Firebase & MongoDB

The managed services behind the emz-systems site and Demo Apps Portal—and the practical signs that it is time to move beyond free tier.

By Michał Felicjańczuk · Founder & Principal Consultant · Updated 16 August 2026

Launching an application does not require committing to a large hosting bill on day one. For a public site, a proof of concept, or an early-stage product, cloud free tiers can provide a capable foundation—provided we understand their limits and design for a sensible next step.

That is the approach behind emz-systems and the Demo Apps Portal. We use managed services for the concerns they solve well, keep the architecture intentionally small, and watch the thresholds that would make a paid plan worthwhile. The objective is not “free forever”; it is a secure, maintainable starting point with predictable growth.

Architecture overview

Two applications, different jobs

Public site

emz-systems

A fast, reliable public site for explaining the work, publishing content, and starting conversations.

Cloudflare · Formspree · Microsoft Clarity

Application space

Demo Apps Portal

A home for applications and experiments, with a path to data, authentication, and a future Java backend.

Firebase · MongoDB Atlas · Google Cloud Run

This separation keeps responsibilities clear. No single provider has to solve every problem, and individual components can evolve when the project needs them to.

The frontend stack

The two front ends use different approaches because they have different jobs. The public site benefits from static, content-focused pages; the portal needs client-side state, routing, and sign-in.

Content-focused static website

emz-systems site

  • Astro for page structure and static generation
  • Tailwind CSS for the design system and responsive styling
  • Vite as the build tool beneath Astro
  • Cloudflare Workers Assets for global static delivery
  • Formspree for contact-form submission and Microsoft Clarity for consented behaviour analytics

Protected single-page application

Demo Apps Portal

  • React 19 and TypeScript for the application interface
  • React Router for client-side navigation and protected routes
  • Vite for local development and production builds
  • Firebase Authentication with Google sign-in
  • Plain CSS for the portal-specific UI, deployed as a Cloudflare-hosted SPA
Open Demo Apps Portal

Free-tier limits

Free tier at a glance

These are the limits worth watching. They are not forecasts of cost; they are the signals that tell us when to investigate an upgrade.

Cloudflare

Public edge

Free: 100,000 Worker requests/day · 10 ms CPU/request

Upgrade when: More edge traffic, CPU time, or advanced platform features

MongoDB Atlas

Application data

Free: One Free cluster per project

Upgrade when: More capacity, performance, or production database controls

Google Cloud Run

Future Spring Boot API

Free: 2M requests · 180k vCPU-s · 360k GiB-s/month

Upgrade when: Sustained compute, long-running work, or high outbound traffic

Firebase

Frontend services

Free: Spark plan and product-specific quotas

Upgrade when: A quota is reached or a paid Google Cloud feature is needed

Formspree

Contact forms

Free: 50 submissions/month

Upgrade when: More than 50 genuine enquiries in a month

Microsoft Clarity

Behaviour insights

Free: Free forever; no traffic limit

Upgrade when: No paid threshold—privacy is the key consideration

Service in the stack

Cloudflare: DNS, delivery, and edge protection

What it does

Cloudflare provides DNS, HTTPS, caching, CDN delivery, and edge protection before traffic reaches the application. For lightweight edge logic, Cloudflare Workers are also useful. The free plan’s 100,000 requests per day and 10 ms CPU-time limit per request are enough for simple redirects, validation, or small edge endpoints.

Traffic alone is not necessarily the reason to upgrade. The more useful triggers are exceeding that request limit, needing more CPU time, or requiring more advanced platform and security features. Cloudflare’s paid Workers plan starts at $5 per month and increases those limits. Read the current Workers limits.

Service in the stack

Firebase: managed frontend services

What it does

Firebase supplies managed frontend services where they are more valuable than custom infrastructure: authentication, Firestore, storage, hosting, analytics, and operational tooling.

The no-cost Spark plan is a good starting point. Several services remain free at scale, while other products provide a usage allowance. Cloud Firestore, for example, has no-cost daily allowances for reads, writes, and deletes. The important detail is that Spark-plan usage is capped: when a quota is exceeded, that product stops until the next billing cycle. Moving to Blaze enables pay-as-you-go use, so budgets and alerts should be configured before that upgrade. See Firebase’s current plan details.

Service in the stack

MongoDB Atlas: data storage for early applications

What it does

MongoDB Atlas provides a managed data layer without operating database servers. Its Free cluster, previously known as M0, is designed for small development environments and proof-of-concept applications. It does not expire, although Atlas allows one Free cluster per project.

It is a sensible fit for early demo data, application metadata, and modest workloads. Upgrade when the application needs more capacity, predictable performance, production-grade operational controls, or database capabilities unavailable on the shared tier. Free clusters also have feature constraints—for example, aggregation pipelines cannot write temporary files to disk. Review Atlas Free cluster limits.

Service in the stack

Google Cloud Run: the future Spring Boot backend

What it does

The next planned component is a Java backend built with Spring Boot. Cloud Run is a natural home for it: package the service as a container, deploy it, and let the platform scale it based on demand. When no requests arrive, a request-based service can scale down to zero.

Cloud Run’s free allowance for request-based billing currently includes 2 million requests, 180,000 vCPU-seconds, and 360,000 GiB-seconds of memory per month. A lightly used API that scales to zero can sit comfortably within that allowance. A constantly active service, long-running processing, large memory allocations, or significant outbound traffic will reach paid usage sooner.

The first backend deployment should include cost controls as part of the design: sensible memory and CPU limits, minimum instances set to zero unless needed, billing budgets, and monitoring of both Cloud Run and database usage. See Cloud Run pricing and free-tier details.

Service in the stack

Formspree: a contact form without a custom email backend

What it does

Contact forms need spam protection, delivery, email notification, validation, and useful failure handling. Formspree supplies that capability without a dedicated email backend.

Its free plan currently includes 50 submissions per month, unlimited forms and projects, notification delivery to up to two email addresses, and 30 days of submission history. For a small business site, that is often enough. If the contact form regularly exceeds 50 genuine enquiries each month, a paid plan is a straightforward and positive next step. Check Formspree account limits.

Service in the stack

Microsoft Clarity: learning from real visitors

What it does

Microsoft Clarity adds session recordings, heatmaps, and behavioural insights. It helps answer questions that page-view analytics cannot: do visitors reach the contact form, are they clicking something that is not interactive, and where do they stop scrolling?

Unlike the other services here, Clarity has no paid threshold to plan for. Microsoft describes it as free forever, with no traffic limits, no sampling, and no forced upgrade. The key consideration is privacy: use appropriate consent and privacy notices, and make sure sensitive information is not captured. Read the Microsoft Clarity FAQ.

Closing perspective

Free tier is a starting point, not a business model

Free plans reduce the cost of learning, experimentation, and early delivery. They do not remove the need for capacity planning. Our approach is to use them while they fit, track usage before limits become a problem, and upgrade the specific component that has outgrown its allowance.

  1. Start with managed services and low operational overhead.
  2. Monitor usage and configure alerts before enabling pay-as-you-go services.
  3. Upgrade when the application’s value and requirements justify it.
  4. Keep the architecture modular so growth in one area does not force a rebuild everywhere else.

That gives emz-systems and the Demo Apps Portal room to build real applications today, while keeping a clear path for the Spring Boot backend and whatever comes next.

Provider limits and pricing change. The figures in this post were checked on 16 August 2026; always confirm the current provider documentation before making a cost decision.

Let’s talk

Build an automation and reliability solution that fits your platform.

Whether you are modernising automation, preparing for a high-demand release, or need stronger confidence in critical integrations, start with a focused conversation.