10 Awesome Web Services You Can Use for Free to Power Your Side Project
In my opinion, nothing makes a programmer happier than launching their projects live. As a matter of fact, I feel very thrilled every time I am about to make my brainchild available to the world on the Internet. As most of my projects are non-commercial and don't require a lot of computing resources or huge databases, I always try to launch them at no cost until they justify any expense. Of course, there are some things that I cannot get for free such as domain names, but the majority of things can be obtained completely for no charge.
There are 10 services listed in this article that you can use to run your pet project for free.
1. Cloudflare#
A service trusted by the owners of more than 20 million web projects on the Internet and which, fortunately, we can use completely free of charge for several purposes:
- Get a free SSL certificate by delegating domain management to Cloudflare
- Provide caching and the fastest possible delivery of static content of your website or application to end users through a huge network of edge servers around the world
- Activate basic protection against DDoS attacks and malicious bots.
- Fast and easy-to-use DNS
Cloudflare requires no active involvement or support from the owner, just activate it at the start and forget about it.
In this day and age, when the speed of your service and the security of your data exchange are crucial for users, I can hardly find a reason not to start using Cloudflare right at the beginning of the life cycle of your application to administer L3-L7 network services absolutely free of charge.
2. Auth0#
If your project requires authentication and/or authorization and you decide to implement these most security-sensitive processes yourself, think again. Do you really want to make every possible mistake? Although authentication is one of the most common features of web applications, at the same time it is the one where most bugs and potential security vulnerabilities occur. This is due to the complexity of implementation and the sophistication of modern hacking techniques.
Even if you consider yourself a security professional and are willing to take all the risks of implementation, ask yourself the question: Are you willing to spend that many resources developing authentication for a project that has yet to prove itself, or would you rather devote those resources to "selling" features?
If you agree with me that this is not a wise investment at the start of a project, consider Auth0.
Auth0 is a well-known representative of the Identity-as-a-service (IDaaS) product family and helps to solve the following main tasks, among many others:
- Takes care of the authentication/authorization flow for the application, whether it's a classic login/password method or via various social networks. It provides a nice customizable page with a form and social buttons. This also includes password reset for users as well as creating, locking and deleting users in a handy admin panel.
- Protects your API with OAuth 2.0 authentication
- Helps to implement Single Sign-on (SSO) end-to-end authentication for more than one application
- Provides the opportunity for implementing Multi-factor authentication (MFA) for your project if you don't believe that entering just username and password cannot guarantee the proper level of security for your users
As for the free tier, you can use Auth0 for free until your user base reaches 7000 accounts.
3. Cloud Firestore#
Cloud Firestore is part of the Firebase platform, perhaps the most popular one; it is the evolution of the Firebase Realtime Database. In a nutshell, it is a NoSQL document-oriented database, built primarily around the concepts of auto-scaling, high performance, accessibility and making developers' lives easier when it comes to database integration into an application.
Among the main features I can mention the following:
- Near real-time data syncronization between the connected clients
- Support for offline mode by caching frequently used data on the client side. This also applies to editing mode. As soon as the application comes back online, all saved data is sent to the cloud and instantly delivered to other clients
- Support for flexible hierarchically structured documents with deep nesting capabilities. Documents are similar to JSON objects and are assembled into collections.
- Possibility to build flexible indexed queries both at the level of single objects and entire collections with the possibility of combining several filters and sorting. Setting cursors for pagination is also supported.
- Automatic multi-regional data replication with guaranteed data consistency.
- SDK for a long list of programming languages and platforms including NodeJS, Java, Python, Unity, C++, Go. As well as REST and RPC APIs.
- Availability of a convenient web interface for CRUD operations with documents and customizable security policies to flexibly limit access to data.
In terms of pricing Cloud Firestore implements a "Pay as you go" model, where many applications won't go over the free limits. For a complete pricing table, please refer to Cloud Firestore.
4. ImageKit#
Consider using the following service if your project needs to upload or distribute static graphic content. ImageKit and similar services offer services for transforming, compressing, and converting images and video content on the fly. At the same time, it's also the fastest possible delivery of content via CDN.
You may be familiar with its competitor Cloudinary, but I like ImageKit's pricing better. The thing is that ImageKit offers unlimited image transformations for free. You also don't have to pay anything unless your content takes up more than 20GB and unless you spend more than 20GB of traffic per month. This is more than enough for many projects.
So, what Imagekit offers:
- Getting rid of the need to store images in multiple resolutions/formats. All this can be done on the fly by passing the required parameters to the URL
- Optimize your images without making any changes to the code. ImageKit can automatically convert images based on the browser's support of the format with the most efficient compression features
- Amazon CloudFront as a CDN under the hood, with all the benefits
- Faster page loading by end users, especially relevant for people without access to high-speed internet. As a bonus, better SEO results, since search engines rank higher for pages that load faster
To learn more about Imagekit's capabilities, visit What is ImageKit.io?.
5. Pusher#
Users have long been used to the fact that they don't need to reload the page to get its content fresh. Everywhere, we see posts appear in feeds, statuses are updated, messages appear in web chats, and the current cryptocurrency price is always updated. Automatically without reloading the page. Clearly, this is not magic at all, but long-proven web socket technology.
To save yourself the hassle of setting up a web socket server, you can use a service called Pusher.
==Pusher also offers a solution for sending Push notifications, called Beams, which can also be useful for many, but today we're talking about Channels.
Pusher Channels is an abstraction over Web Sockets, which saves the developer a lot of time. It's simple as hell:
- Add a new application to the control panel
- Get a Key and Secret pair and use them to connect to Pusher from the client and server (the Secret should obviously remain private and be used only on the server)
- Download a suitable SDK from the dozens of available
- Create each instance on the client and server. Subscribe to channel messages on the client, and publish messages on the server.
Only console.log("Hello world") seems easier.
On the free plan, as of the date of publication of this article, you are allowed to publish 200k messages per day and 100 concurrent client connections. That's enough for a small project.
6. Notion#
It would be challenging enough to find someone these days who is not familiar with Notion, however, if you're that person, Notion is a space to store your thoughts and the thoughts of others. In any form: tables, lists, images, PDF documents, Google Docs, Excel spreadsheets, literally anything you can imagine. It can literally be your second brain.
That's all great, you might say, but why is Notion featured in this article? Here's why: Notion provides a public API that we can use as a CMS to generate static website pages or a blog. This particular blog, by the way, does just that.
Your script should look like this:
- Create a new database in Notion
- You can either write articles directly in Notion's interface or, for example, use your favorite Markdown editor such as Obsidian and then copy the content to Notion, it is up to you
- Create a new integration
- Grant the integration access to the database you created earlier
- Install the Notion client
npm install -S @notionhq/client
- Create a client instance and use it to retrieve the list of documents
import { Client } from '@notionhq/client';
const notion = new Client({ auth: process.env.NOTION_API_KEY });
const fetchArticles = async () =>
await notion.databases.query({
database_id: process.env.NOTION_DATABASE_ID ?? '',
});
- Use a library like notion-to-md to convert the structure the client returned into a markdown string
- Use one of the hundreds of markdown-to-HTML parsers like this one react-markdown
- Enjoy having a CMS to edit and store your articles for free.
7. Upstash#
What is the first thing that comes to your mind when someone talks about an in-memory cache? Likely it's memcached, but even more likely it's Redis. A long-established in-memory data structure store that can serve as a NoSQL database, cache, and message broker.
Upstash offers its services as a Redis cloud provider. The benefits are still the same: you don't need to spend time and other resources maintaining an on-premise Redis server, think about timely backups and data replication. Upstash engineers have already thought and spent time for you.
The service provides a feature-rich control panel enriched with the following features:
- Database creation and customization with a convenient demonstration of various options for connecting to them
- Database usage analytics in terms of various parameters, like daily number of requests, latency, throughput, active number of connections, the total amount of data, etc.
- CLI for making Redis requests on active databases
- Data browser with filtering capabilities
- Backup configuration, etc.
On the free plan, you have access to:
- 10K commands per day and a total 256Mb data size for single region databases
- 2K commands per day for global databases
- A user can create only one database in the Free tier
Besides Redis Upstash offers serverless solutions for Kafka and QStash which I suggest you check for yourself in Upstash documentation.
8. MongoDB Atlas#
The MongoDB Atlas cloud service continues the database topic. And from the name, it is clear which database it is based on. If a NoSQL database meets the requirements of your project and you do not want to spend time on its installation and maintenance on your server, then pay attention to Atlas. This service is worth trusting just because the creators of MongoDB and the creators of MongoDB Atlas are the same people.
On the free plan, you can create a cluster on a virtual machine with a shared CPU and 512MB of RAM. Not a lot, but enough to get some experience with MongoDB or run a small application. You are free to choose the cloud provider that will run the cluster, the list contains all the well-known products from IT giants: AWS, Google Cloud, and Azure. Among other things, you can select the region, but geography varies from service to service and is quite limited.
In order to connect to a database, you need to specify several options: username and password credentials or a certificate, and a list of network addresses from where to connect to the cluster. Attitude towards security, nothing to add.
The administration panel seems a bit confusing at first glance, but it actually takes a few minutes to figure out what's what.
To give you more context about MongoDB to figure out whether this database suits your application, I refer you to the developer documentation Why Use MongoDB.
9. Bit.io#
As the final touch to this database topic, we have the brightest relational representative - PostgreSQL, or rather, the cloud service for managing serverless PostgreSQL databases.
If you need a relational database for your project, finding a way to launch it faster than using bit.io will be difficult. In fact, to create a database of up to 1GB size, you don't even need to have an account on the project. The lifetime of such a database will only be 72 hours. However, that is enough to feed an application with a CSV or XLS file and run a few queries, for example. If you create a bit.io account, you will be able to create 3 databases of 3 GB each with a limit of 1 billion rows requests per month.
Bit.io provides an excellent in-browser SQL-query editor which is a pleasure to use.
The database is by default private, but you can make it publicly available. The link lets an anonymous user in the same SQL editor make queries to your database, but only for reading. This seems to be the killer feature of this service.
In general, if you want to create a functioning PostgreSQL serverless database in a minute with an excellent functional in-browser SQL editor and decent limits even in the free-tier, I strongly recommend this product.
10. Vercel#
We finish with a service without which I wouldn't have thought of launching any of my projects in the last couple of years. Platform Vercel, formerly known as Zeit. Vercel positions itself first of all as a platform for front-end developers, but that is not entirely true. It also allows you to run serverless functions written in JavaScript/TypeScript, Go, Python and Ruby. Functions can be run on Edge servers closest to the user who initiated the run, boosting performance.
Vercel supports the auto-build of many client-side frameworks, including Next.js, Nuxt.js, SvelteKit, Remix, RedwoodJS, Astro, and others. If you don't find yours on the list, it's easy to set up the build manually.
In addition to the building and hosting of your application, Vercel offers the following services absolutely free of charge:
- Linking your domain name to the project and managing DNS records
- HTTP/SSL encryption of your application traffic
- Privacy-friendly analytics of your service usage by visitors in terms of page ranking, referring sites, and demographics
- Performance analytics of your service based on parameters like First contentful paint, Large contentful paint, Cumulative layout shift, and others
- Integration with third-party services such as MongoDB Atlas, Sanity, Auth0, New Relic, Sentry, and others
- Rich CLI utility for users who prefer to work with the platform via a command line interface.
- Integration with major Git providers such as GitHub, GitLab, and Bitbucket to automatically start a build with every change commit.
Check out the restrictions for the free Hobby plan on this page. I can tell you that most pet projects are unlikely to face these restrictions.
Conclusion#
Today you learned about a dozen handy web services that you can use in the early stages of your projects to validate the viability of an idea, or if your audience size is known in advance and you're confident that you won't go over the established limits.
Web services cover different areas:
- Network threat mitigation, traffic encryption, and caching on edge servers
- User authentication and authorization
- NoSQL non-relational and SQL relational databases
- Transformation, storage, and distribution of images
- Real-time client-server communication provider based on web sockets
- Headless CMS
- Web application building and hosting platform
With such a set of services, you can bring almost any idea to life without paying a penny. Choosing the right stack and creating for the joy of yourself and your users is what I wish for you.
Talk to you soon!