A Solo Dev’s Serverless Stack for a Competitor Analysis MVP
ReviewBolt.com is a competitor analysis tool built by a self-taught developer. It pulls data from seven sources to estimate a company’s ad spend, revenue, traffic growth, tech stack, and user reviews. The project has generated $150 in revenue, attracted 50 users, analyzed over 3,000 websites, and reached 5,000+ researchers. It was also featured on Betalist.
The author, an English major from McGill University with minimal programming experience, built the MVP during lockdown in London. The core stack is React, Next.js, and Fauna as the serverless database.
Why Fauna Served as the Database
The application originally stored every search result as a row in a Google Sheet. That worked until roughly 1,000 searches, when the spreadsheet became too slow to load. The need for a more stable, scalable backend led to Fauna.
Key selection criteria were the generous free tier (100k reads and 50k writes per month) and low operational cost for a solo project. The developer initially used Fauna’s GraphQL API but switched to the native FQL query language, finding its documentation better.
Data Model and Collections
Fauna stores two main types of data:
- A collection of
110,000scraped company bios. - A collection of live website data, including Google Ads, Facebook Ads, Google Trends, tech stack, and user reviews.
Instead of setting up relational databases, the author stored everything as one large object per website. This simplification was a deliberate choice to move faster during development.
The Fauna dashboard provides usage insights, and the built-in web shell is useful for testing queries without launching a local IDE.
Page Load Flow with Fauna Indexes
Each search generates a URL like reviewbolt.com/r/[website.com]. The backend uses a Fauna Index to quickly check whether that website has already been analyzed. This lookup remains efficient even across the 110k-document collection.
When a match is found, the saved data is rendered directly. When no match exists, the page shows a spinner while the backend queries public APIs for the requested website. Once the data is compiled, it is saved to the Fauna collection, so subsequent users load the saved result rather than triggering a full set of API calls again.
Next Steps and Learning Resources
The next planned feature is a charts section with more advanced queries. The developer aims to use Fauna’s index binding to create multiple indexes—Top Facebook Spenders, Top Google Spenders, Top Traffic, Top Revenue, Top CRMs by traffic—to improve competitor research.
For newcomers to Fauna, the author recommends working through the CSS-Tricks tutorial on building a Twitter clone as a serverless app and the Fauna quickstart on fireship.io for the basic concepts.
Bottom Line
For this use case, Fauna functioned as a simple CRUD system without requiring upfront cost concerns. The free tier covers ReviewBolt’s current traffic level. The FQL language is straightforward for basic operations, and the dashboard and shell made it easier to learn and iterate as a developer with limited backend experience.



