I built MockMyData.io in 10 weeks - a multi-tenant SaaS that lets developers generate mock REST APIs in seconds. Each project gets its own subdomain, API key, andI built MockMyData.io in 10 weeks - a multi-tenant SaaS that lets developers generate mock REST APIs in seconds. Each project gets its own subdomain, API key, and

I Built a Mock API Platform in 2.5 Months (Django + React + Redis + PostgreSQL)

The Problem

When building frontends, I didn't want to hardcode JSON data everywhere. I wanted to build against actual API endpoints and practice the integration work, but spinning up a real backend for every prototype felt like overkill.

After doing this dance too many times - writing throwaway Express servers or mocking fetch calls with static JSON - I realized other developers probably face this same friction.

The typical workflow looked like this:

1. Start building a React component

2. Realize I need user data

3. Choose between: hardcoded JSON arrays OR spinning up Express/Django

4. If I chose Django: pip install requirements, define models, run migrations, write views/URLs, configure CORS

5. All this before writing a single line of frontend logic

This context-switching killed momentum. I'd spend 30 minutes on backend setup for a feature that takes 10 minutes to prototype. Multiply this across dozens of projects, and you've lost days to infrastructure overhead.

That's why I built MockMyData.io.

What It Does

MockMyData.io lets developers generate mock REST API endpoints in seconds. When you sign up, you're automatically assigned a subdomain and API key. Then you define your data schema (field names and types) to create your endpoints.

You can either:

Enter custom JSON - Full control over your mock data

Auto-generate records - MockMyData.io creates realistic data based on your field types

Want to try it? Head to https://mockmydata.io - you can generate a demo mock API right from the landing page and start making requests immediately. No sign-up required.

Perfect for:

  • Frontend developers building features before backend APIs are ready
  • Mobile app developers testing API integration without backend dependencies
  • Building portfolio projects and demos without complex backend setup
  • Students and bootcamp grads learning API consumption
  • Rapid prototyping when you need to validate ideas fast

The Journey: 2.5 Months Solo

I went from concept to launch in about 10 weeks, building everything myself. The aggressive timeline kept me focused on shipping rather than over-engineering.

Tech Stack:

  • Backend: Django REST Framework
  • Frontend: React with Material-UI
  • Database: PostgreSQL
  • Caching: Redis
  • Payments: Stripe
  • Auth: Firebase SSO
  • Hosting: Render.com

Architecture Decisions

Multi-Tenant Subdomain Architecture

The core challenge was giving each project its own API endpoint while keeping infrastructure simple. I went with subdomain-based routing where users get automatically assigned subdomains on signup (e.g., `random-name-123.api.mockmydata.io`). Pro users can create custom subdomains and change them anytime.

How it works:

- User signs up and gets assigned a subdomain

- Pro users can customize: `mycompany.api.mockmydata.io`

- All API requests hit their subdomain endpoint

Implementation challenges:

1. DNS Management

Had to set up wildcard DNS records pointing all subdomains to the same server. Used Cloudflare for DNS with a wildcard A record (`*.api.mockmydata.io`).

2. SSL Certificates

Needed wildcard SSL certificates to handle unlimited subdomains. Render.com handles automatic SSL certificate provisioning and renewal for wildcard domains, which simplified deployment significantly.

3. Request Routing

Django's URL routing doesn't natively support subdomain-based tenant isolation. Built custom middleware to:

- Extract subdomain from request

- Look up project in database

- Attach project context to request object

- Route to appropriate data

# Simplified middleware example class SubdomainMiddleware: def init(self, get_response): self.get_response = get_response def call(self, request): subdomain = request.get_host().split('.')[0] try: project = Project.objects.get(subdomain=subdomain) request.project = project except Project.DoesNotExist: return HttpResponse('Project not found', status=404) return self.get_response(request)

Database Design

Used PostgreSQL with a shared schema approach rather than separate databases per tenant. Each endpoint and record has a `project_id` foreign key. This keeps infrastructure simple while maintaining data isolation through application-level filtering.

Why not separate databases per tenant?

- Simpler infrastructure (one database to manage)

- Easier backups and migrations

- Cost-effective for free tier users

- Row-level security handles isolation

Technical Challenge

#1: Multi-Tier Rate Limiting

This was trickier than expected. I needed two types of rate limiting:

Daily Quotas - Tier-based limits

- Free: 100 requests/day,

- Pro: Unlimited

Request Throttling - Spam prevention

- All tiers: Max 60 requests/minute

Why Redis?

Needed atomic increments and TTL support. Redis handles both perfectly:

def check_daily_quota(self, user): """Hard limits for FREE users""" daily_count = self.get_daily_count(user.id) DAILY_LIMIT = 100 if daily_count >= DAILY_LIMIT: return False, f'Daily limit reached ({DAILY_LIMIT} requests/day)' return True, 'OK' # CloudFlare helps with rate limiting and makes it simple and reliable

The Challenge: Making this performant at scale

- Redis calls add latency

- Need to fail fast for rate-limited requests

- Must be accurate (can't lose count data)

Solution: Batched Redis commands using pipelines reduced roundtrips, cutting rate-check latency significantly. I also implemented a circuit breaker pattern - if Redis goes down, requests pass through to prevent complete service outage.

Technical Challenge #2: Handling Pro-to-Free Downgrades

Free users can create up to 3 endpoints. However, when Pro users downgrade to Free, they might already have dozens of endpoints created. Rather than force them to delete endpoints, I let them choose which 3 remain active and accessible via API.

This required:

- Real-time enforcement in middleware before database queries

- Caching to avoid N+1 queries on every API request

- Graceful Redis fallback if caching fails

The system checks endpoint access on every API request:

#(Sample code) def _check_endpoint_selection(self, request, user, project):     """Check if endpoint is accessible for downgraded free users"""     # Pro users: all endpoints accessible     if user.is_pro_active:         return True, None       # Count total endpoints (cached)     endpoint_count = cache.get(f'project:{project.id}:endpoint_count')     # If <=3 endpoints total, all are accessible     if endpoint_count <= 3:         return True, None     # They have >3 endpoints (downgraded from Pro)     # Check if THIS endpoint is in their selected 3     endpoint = cache.get(f'endpoint:{project.id}:{path}')     if not endpoint.default_selected:         return False, JsonResponse({             'error': 'Endpoint Not Selected',             'message': 'This endpoint is not in your active selection. Free users can only have 3 active endpoints.',             'action_required': 'Visit your dashboard to manage active endpoints'         }, status=403)  # If cache miss then we fetch from database

This gracefully handles downgrades without data loss - users keep all their endpoints but must choose which 3 are live.

Technical Challenge #3: Handling Anonymous Demo Endpoints

Users can create temporary mock APIs without signing up. These urls expire within a short time and have strict limits on the total requests. The challenge was:

- Storing temporary projects in Redis (not database)

- Enforcing limits without database writes

- Supporting full CRUD operations on anonymous data

- Updating Redis cache after POST/PUT/PATCH/DELETE

All anonymous endpoints get a `demo-` prefix and live entirely in Redis with proper cache updates after mutations.

Technical Challenge #4: Storage Limits & Payload Validation

Implemented 4-layer protection to prevent abuse:

Layer 1: Request payload size

- Free: 5KB per request

- Pro: 30KB per request

Layer 2: Individual field size

- Free: 2KB per field

- Pro: 10KB per field

Layer 3: Item count per endpoint

- Free: 20 items

- Pro: 200 items

Layer 4: Total endpoint storage

- Free: 15KB per endpoint

- Pro: 400KB per endpoint

This prevents users from storing massive datasets while keeping the service performant and cost-effective.

What's Next: Django Project Generator

I'm building a feature that exports your mock API as production-ready backend code starting with Django. Here's how it works:

Input: Your MockMyData.io project with endpoints defined

Output: Complete Django REST Framework project with:

- Models generated from your schema

- Serializers for each endpoint

- CRUD operations

- URL routing configured

- Authentication setup (Optional)

- README with additional instructions & Suggestions

Example transformation:

Your MockMyData endpoint:

{ "name": "users", "fields": { "username": "string", "email": "email", "age": "integer" } }

Generates Django model:

class User(models.Model): username = models.CharField(max_length=255) email = models.EmailField() age = models.IntegerField() created_at = models.DateTimeField(auto_now_add=True)

Plus serializers, views, and URLs - everything a user need to run their server right away. I also plan on exploring other backends too

Why this matters:

Turns MockMyData.io from a testing tool into a full development accelerator. Prototype with mock data, export to production code when ready.

Lessons Learned

1. Ship fast, iterate faster

The 2.5-month timeline was aggressive but kept me focused on shipping. Rather than building every possible feature upfront, I launched with the core product working and plan to aggressively iterate based on what users actually need.

2. Rate limiting is harder than you think

Especially across multiple tiers and preventing race conditions. Redis pipelines were essential.

3. Cache everything strategically

Redis saved my infrastructure costs. Without caching, I'd be paying 3-4x more for database and compute.

4. Stripe webhooks are your friend

Once you understand them. The documentation is excellent, and webhook-driven subscription management is reliable

6. Build for failure

My circuit breaker pattern for Redis means the service stays up even when caching fails. Graceful degradation is better than complete outages.

Try It Out

🚀 [https://mockmydata.io]() - Free tier available, no credit card required

🎉 Launching on Product Hunt January 14th - Would love your support!

💬 Questions I'd love feedback on:

What backend frameworks would you want for code export? (Django, Express, FastAPI, Rails?)

What's missing that would make this a must-have tool for you?

Drop a comment below - happy to answer questions about Django, React, multi-tenant architecture, or building a SaaS solo! You can also connect with me @marcuscodes.

Market Opportunity
Wrapped REACT Logo
Wrapped REACT Price(REACT)
$0.03329
$0.03329$0.03329
-7.98%
USD
Wrapped REACT (REACT) Live Price Chart
Disclaimer: The articles reposted on this site are sourced from public platforms and are provided for informational purposes only. They do not necessarily reflect the views of MEXC. All rights remain with the original authors. If you believe any content infringes on third-party rights, please contact service@support.mexc.com for removal. MEXC makes no guarantees regarding the accuracy, completeness, or timeliness of the content and is not responsible for any actions taken based on the information provided. The content does not constitute financial, legal, or other professional advice, nor should it be considered a recommendation or endorsement by MEXC.

You May Also Like

Republic Europe Offers Indirect Kraken Stake via SPV

Republic Europe Offers Indirect Kraken Stake via SPV

Republic Europe launches SPV for European retail access to Kraken equity pre-IPO.
Share
bitcoininfonews2026/01/30 13:32
cpwrt Limited Positions Customer Support as a Strategic Growth Function

cpwrt Limited Positions Customer Support as a Strategic Growth Function

For many growing businesses, customer support is often viewed as a cost center rather than a strategic function. cpwrt limited challenges this perception by providing
Share
Techbullion2026/01/30 13:07
Unlocking Massive Value: Curve Finance Revenue Sharing Proposal for CRV Holders

Unlocking Massive Value: Curve Finance Revenue Sharing Proposal for CRV Holders

BitcoinWorld Unlocking Massive Value: Curve Finance Revenue Sharing Proposal for CRV Holders The dynamic world of decentralized finance (DeFi) is constantly evolving, bringing forth new opportunities and innovations. A significant development is currently unfolding at Curve Finance, a leading decentralized exchange (DEX). Its founder, Michael Egorov, has put forth an exciting proposal designed to offer a more direct path for token holders to earn revenue. This initiative, centered around a new Curve Finance revenue sharing model, aims to bolster the value for those actively participating in the protocol’s governance. What is the “Yield Basis” Proposal and How Does it Work? At the core of this forward-thinking initiative is a new protocol dubbed Yield Basis. Michael Egorov introduced this concept on the CurveDAO governance forum, outlining a mechanism to distribute sustainable profits directly to CRV holders. Specifically, it targets those who stake their CRV tokens to gain veCRV, which are essential for governance participation within the Curve ecosystem. Let’s break down the initial steps of this innovative proposal: crvUSD Issuance: Before the Yield Basis protocol goes live, $60 million in crvUSD will be issued. Strategic Fund Allocation: The funds generated from the sale of these crvUSD tokens will be strategically deployed into three distinct Bitcoin-based liquidity pools: WBTC, cbBTC, and tBTC. Pool Capping: To ensure balanced risk and diversified exposure, each of these pools will be capped at $10 million. This carefully designed structure aims to establish a robust and consistent income stream, forming the bedrock of a sustainable Curve Finance revenue sharing mechanism. Why is This Curve Finance Revenue Sharing Significant for CRV Holders? This proposal marks a pivotal moment for CRV holders, particularly those dedicated to the long-term health and governance of Curve Finance. Historically, generating revenue for token holders in the DeFi space can often be complex. The Yield Basis proposal simplifies this by offering a more direct and transparent pathway to earnings. By staking CRV for veCRV, holders are not merely engaging in governance; they are now directly positioned to benefit from the protocol’s overall success. The significance of this development is multifaceted: Direct Profit Distribution: veCRV holders are set to receive a substantial share of the profits generated by the Yield Basis protocol. Incentivized Governance: This direct financial incentive encourages more users to stake their CRV, which in turn strengthens the protocol’s decentralized governance structure. Enhanced Value Proposition: The promise of sustainable revenue sharing could significantly boost the inherent value of holding and staking CRV tokens. Ultimately, this move underscores Curve Finance’s dedication to rewarding its committed community and ensuring the long-term vitality of its ecosystem through effective Curve Finance revenue sharing. Understanding the Mechanics: Profit Distribution and Ecosystem Support The distribution model for Yield Basis has been thoughtfully crafted to strike a balance between rewarding veCRV holders and supporting the wider Curve ecosystem. Under the terms of the proposal, a substantial portion of the value generated by Yield Basis will flow back to those who contribute to the protocol’s governance. Returns for veCRV Holders: A significant share, specifically between 35% and 65% of the value generated by Yield Basis, will be distributed to veCRV holders. This flexible range allows for dynamic adjustments based on market conditions and the protocol’s performance. Ecosystem Reserve: Crucially, 25% of the Yield Basis tokens will be reserved exclusively for the Curve ecosystem. This allocation can be utilized for various strategic purposes, such as funding ongoing development, issuing grants, or further incentivizing liquidity providers. This ensures the continuous growth and innovation of the platform. The proposal is currently undergoing a democratic vote on the CurveDAO governance forum, giving the community a direct voice in shaping the future of Curve Finance revenue sharing. The voting period is scheduled to conclude on September 24th. What’s Next for Curve Finance and CRV Holders? The proposed Yield Basis protocol represents a pioneering approach to sustainable revenue generation and community incentivization within the DeFi landscape. If approved by the community, this Curve Finance revenue sharing model has the potential to establish a new benchmark for how decentralized exchanges reward their most dedicated participants. It aims to foster a more robust and engaged community by directly linking governance participation with tangible financial benefits. This strategic move by Michael Egorov and the Curve Finance team highlights a strong commitment to innovation and strengthening the decentralized nature of the protocol. For CRV holders, a thorough understanding of this proposal is crucial for making informed decisions regarding their staking strategies and overall engagement with one of DeFi’s foundational platforms. FAQs about Curve Finance Revenue Sharing Q1: What is the main goal of the Yield Basis proposal? A1: The primary goal is to establish a more direct and sustainable way for CRV token holders who stake their tokens (receiving veCRV) to earn revenue from the Curve Finance protocol. Q2: How will funds be generated for the Yield Basis protocol? A2: Initially, $60 million in crvUSD will be issued and sold. The funds from this sale will then be allocated to three Bitcoin-based pools (WBTC, cbBTC, and tBTC), with each pool capped at $10 million, to generate profits. Q3: Who benefits from the Yield Basis revenue sharing? A3: The proposal states that between 35% and 65% of the value generated by Yield Basis will be returned to veCRV holders, who are CRV stakers participating in governance. Q4: What is the purpose of the 25% reserve for the Curve ecosystem? A4: This 25% reserve of Yield Basis tokens is intended to support the broader Curve ecosystem, potentially funding development, grants, or other initiatives that contribute to the platform’s growth and sustainability. Q5: When is the vote on the Yield Basis proposal? A5: A vote on the proposal is currently underway on the CurveDAO governance forum and is scheduled to run until September 24th. If you found this article insightful and valuable, please consider sharing it with your friends, colleagues, and followers on social media! Your support helps us continue to deliver important DeFi insights and analysis to a wider audience. To learn more about the latest DeFi market trends, explore our article on key developments shaping decentralized finance institutional adoption. This post Unlocking Massive Value: Curve Finance Revenue Sharing Proposal for CRV Holders first appeared on BitcoinWorld.
Share
Coinstats2025/09/18 00:35