Independent Developer Tech Stack 2025
1/11/2025
I'm writing this article to celebrate reaching 10K followers on X/Twitter 🎉. I suddenly felt like sharing my thoughts. With so many tech stacks and cloud service providers available today, what should we choose for independent development?
Why Independent Development
Why do I focus only on tech choices for independent development? Because if we're not doing independent development but working for companies or clients, I think there's not much room for tech choices, and it's not as fun.
First, except for a few startups, most existing companies or projects already have established tech stacks and standards. They usually recommend refactoring on existing tech stacks or gradually replacing old microservices with new ones that use new technologies, rather than completely starting over just to use the latest tech stack.
Even when introducing new tech stacks to old projects, the priority is to use tech that helps team collaboration - like technologies that make it easier to hire people and work together as a team.
So if you want to satisfy your technical passion, the best way is to join open source projects or develop your own independent projects.
Alright, let's start with the recommendations!
Frontend
Next.js
If you're mainly building frontend apps or projects with frontend + lightweight backend APIs, I highly recommend Next.js, which is an open-source framework based on React.
Why I recommend it:
- Easy learning curve with very friendly official tutorials: https://nextjs.org/learn
- Rich ecosystem with many scaffolding tools for different needs, like create-t3-app - an open-source scaffolding project that lets you choose to integrate auth, ORM, UI, and other features and tech stacks.
- Simple deployment since it's made by Vercel's parent company, so you can deploy to Vercel very smoothly.
Why recommend Next.js right away? First, Next.js is a framework that lets you create and deploy projects quickly. Second, Next.js works very well with all the other tech stacks and platforms we'll recommend later.
For example, if you want to deploy a static website like documentation or tutorials, you can use Next.js's Static Site Generation (SSG) with CDN hosting services. I highly recommend Cloudflare Pages - it's the only cloud service provider I give five stars to. We'll talk about Cloudflare more later. For example, nextra is an open-source documentation project based on Next.js + SSG.
You can also deploy full-stack projects that need lightweight APIs, like blogs or AI chatbots. You can use Next.js's Server Side Rendering (SSR) and API Routes with cloud functions like Vercel's Serverless Functions or Cloudflare Worker to quickly deploy a full-stack project.
For example, leerob's blog (he's a core person in Next.js + Vercel) is a great example. His personal blog uses SSR + API Routes for features like comments and subscriptions, and it's deployed on Vercel.
For independent developers, the most important thing is to get projects online quickly, not spend lots of time building everything from scratch, deploying, and maintaining. So Next.js + Vercel is a great choice. Even if Vercel becomes expensive or stops being free later, you can switch to other cloud providers like Cloudflare.
TailwindCSS + Shadcn/ui
For UI styling frameworks, there are many choices. I have to admire how rich the frontend developer ecosystem is - this is hard to imagine in other language ecosystems.
Here I only recommend what I personally find comfortable to use: TailwindCSS + Shadcn/ui.
Why I recommend TailwindCSS:
- Much more convenient than traditional CSS writing, with built-in shortcuts.
- Highly customizable with consistent code standards.
- Works well with modern frontend tools like PostCSS and PurgeCSS.
Another important reason I recommend TailwindCSS is that with AI code generation tools like GPT and GitHub Copilot becoming popular, AI can generate TailwindCSS + JSX code very well. It's an AI-friendly coding style.
Why I recommend Shadcn/ui:
- Super flexible UI framework that works great with TailwindCSS.
- Beautiful default designs with lots of code examples you can use directly, like the examples in blocks.
Shadcn/ui is different from common component libraries like Ant Design and Chakra. It's a project that uses Tailwind CSS to wrap radix-ui (a headless UI component library with no styles). This approach has pros and cons. The good part is high customization and using only what you need. The bad part is that installing and updating is not convenient, and future updates might be affected by radix-ui changes.
I recommend shadcn/ui for another AI-related reason. The shadcn/ui author has joined Vercel to develop V0, an AI frontend code generation tool. So I'm optimistic about shadcn/ui's future.
Overall, you can choose shadcn/ui based on your needs. For more details about shadcn/ui, you can read this article.
Other common UI frameworks worth trying include daisyui and chakraui.
Others
- Prisma: Database ORM. Even if performance isn't the best, it has the best ecosystem with support from all kinds of databases and cloud providers. Makes it easy to switch databases later when you have more data.
- Drizzle: If you choose Serverless solutions, consider using Drizzle ORM. It's optimized for Serverless scenarios and is only 31 KB after bundling.
- NextAuth.js: Authentication library for Next.js. The documentation is a bit messy, but it has the best ecosystem and functionality.
- SWR: HTTP request library from the Next.js team. Solves component data fetching and caching problems.
- zod: A schema validation library that can be used for frontend and backend data and form validation.
- Zustand & jotai: Zustand is a simple React state management library that can replace Redux. Jotai is an atomic state management library, and you can choose based on your needs.
- For state management library choices, I highly recommend this video: React Query Essentials. For articles on state management, I recommend this series: practical-react-query.
- driverjs: A library for guiding user operations, useful for onboarding and operation guides.
- wxt: A browser extension development framework similar to Nuxt, useful for developing Chrome, Firefox, and other extensions.
- orama: A frontend full-text search solution that can replace Algolia. The new Node.js website uses this search engine.
Backend
After talking about frontend libraries and platform choices, let's move to the backend. Actually, there aren't many pure backend choices. Since backend services need CPU, memory, bandwidth, and other resources, and these all cost money, I recommend Serverless solutions more. If you want to use familiar backend frameworks, you can also use platforms like Railway and Fly.io to deploy containers.
Cloudflare Worker
Choosing Serverless is the most cost-effective solution because everything is pay-as-you-go. This means you don't have to worry about service costs in the early stages of your independent project. The only thing to be cautious about is cloud service platforms that lure you in with free offers and then charge you heavily once you're deeply invested. Switching Serverless platforms can be quite troublesome. So, if you want to choose a Serverless solution, my only recommendation is Cloudflare Worker.
The Free Plan offers 100,000 requests per day, which is sufficient for most projects. The only downside is the 10ms CPU execution time in the Free Plan, which is very short and can cause many computations to time out. However, the $5/month Standard Plan is not expensive and increases the CPU execution time to 30s with ample time quotas, which is sufficient for most projects.
Moreover, Cloudflare Worker integrates well with other Cloudflare services we will recommend later, such as KV (key-value database), Pages (static pages), R2 (object storage), D1 (relational database), Queue (MQ queue), etc. Most of these services can be used for free and share the Standard Plan quota.
After choosing Cloudflare Worker, you can use native Node.js because its Worker code is based on the V8 engine, allowing you to write your Worker code in JavaScript, TypeScript, Rust, and other languages.
You can also use Serverless frameworks like hono.dev, which is a web framework for edge runtime, offering many out-of-the-box features like routing and middleware. It also provides compatibility with different Serverless platforms like Vercel and AWS Lambda.
Railway & Fly.io
If your project is not suitable for a Serverless solution, as Serverless has some drawbacks like CPU time, usability, and debugging issues, you can choose your familiar backend language and opt for container deployment.
Regarding backend languages and frameworks, I won't make specific recommendations here because the choice depends more on your familiarity. Due to work and open-source projects, I have used various backend frameworks like Java/Spring, C#/.NET, Ruby/Rails, Node.js/Express, Python/FastAPI, and Go/Gin. Each framework has its pros and cons, so I recommend using the one you are most familiar with and has a good open-source ecosystem. Familiar frameworks can improve development efficiency, especially when deployment costs are similar.
I recommend using container deployment instead of managing servers yourself. For container deployment platforms, I recommend Railway and Fly.io. Both platforms have smooth container deployment and management, and you can also deploy databases and other services. I recommend these platforms because they gave me $5 monthly free credits due to my open source activity, and they work well after using them.
Mobile
If your project also needs mobile apps, I'm not very familiar with native app development (except for some Android development long ago). I recommend T4 Stack, which mainly uses Expo for mobile. It overlaps with most of the tech stack in this article, which can reduce learning and development costs.
Auth
For auth-related frameworks and cloud services, my personal experience is that if your business auth needs aren't complex and you're using tech stacks like Next.js + NextAuth.js, then directly using NextAuth.js to integrate social logins like Google OAuth, GitHub OAuth, Azure AD, and JWT authentication is most convenient.
No need to manage user passwords or handle login security yourself. Just simple configuration and code can achieve this. More importantly, you don't need to integrate other cloud services, reducing complexity and costs.
Traditional services like Auth0 or newer ones like Clerk have good functionality and ecosystems, but their free plans are limited and later charges are very expensive. So you need to choose based on your needs.
For example, Clerk's free plan only supports 10,000 MAU (Monthly Active Users), and later charges are $0.02/MAU
. This means every additional 10,000 monthly active users costs $200
more, which is quite expensive. So for independent developers, if your project has mostly paying users, choosing Auth0 or Clerk early on is convenient and stable. But if you have many free users, you need to consider costs when choosing these cloud services.
Supabase Auth
If your business auth needs are more complex, like custom login, registration, password recovery, 2FA authentication, etc., I recommend Supabase Auth. It supports 50,000 monthly active users ($25/month later supports 100,000 MAU, which is enough for most projects). It's stable, user management can be combined with databases, and it supports social logins, email-password logins, 2FA, and other features.
Cloudflare Zero Trust
If your user base is very small (less than 50 people) or you need to provide secure access to your project for partners, family, or friends, I highly recommend using Cloudflare Zero Trust. Zero Trust is a security service based on Cloudflare that allows you to restrict access to your project to specified user emails or fixed IPs through simple configuration without modifying a single line of code.
The downside of this solution is that your domain must be hosted through Cloudflare, and the free quota of Cloudflare Zero Trust is 50 users, with very high costs beyond that. So, this solution is only suitable for small teams or personal use.
However, the advantage is very obvious: no additional code or services are needed, just simple configuration to make your project securely accessible. It is very suitable for private projects, such as setting up GPT projects like Lobe Chat or ChatGPT-Next-Web for family and friends. You can even use Cloudflare R2 to set up a private image hosting service, but I won't go into that here.
Database
Choosing a database is very important and diverse because there are many database options (MySQL, PostgreSQL, MongoDB, SQLite, Redis, etc.), and the competition among cloud service providers adds to the complexity. Here, I only recommend some useful cloud service providers.
Supabase Database
For traditional relational databases, I recommend using PostgreSQL. The open-source community of PostgreSQL has always been the best, excelling in functionality, usability, and open-source ecosystem compared to MySQL.
The corresponding cloud service provider is Supabase, a highly praised database provider. It offers two free database projects with 500MB of storage, supports all Postgres features, and has many plugins and tools, such as Vector vector databases. Although subsequent charges are not cheap, the free and standard versions are sufficient for independent developers in the early and mid-stages. If it becomes insufficient later, you can consider setting up your own database on Fly.io and migrating.
The Supabase team is very active, and the open-source community is excellent. In addition to Supabase Auth mentioned earlier, they also offer services like Supabase Storage, Supabase Realtime, and Supabase Functions, all of which are good services.
Similar to Supabase Database, Serverless Postgres like Neon is also good.
Cloudflare D1
If you want a cheaper database that can support stable project operation, I recommend using Cloudflare D1, an edge SQLite database. Although SQLite is not as powerful as Postgres, it can be deployed on CDN nodes worldwide, meaning your database can be closer to users, reducing latency and improving speed.
Recently, I saw that D1 can integrate with Prisma, meaning you can use Prisma ORM to operate the D1 database, which is very convenient for full-stack projects. For more details, you can read this blog.
The biggest advantage of choosing D1 is its low cost. The free quota is 5GB, and subsequent costs are only $0.75/month. You can also use Cloudflare KV, R2, Queues, and other services, which integrate well with Cloudflare Worker.
Upstash
If your project needs lightweight Redis usage, I recommend using Upstash, which can be used to store hot data, cache, etc. This cloud service provider also offers services like Kafka and vector databases. Subsequent charges are also pay-as-you-go, making it a recommended option.
Payment
There aren't many payment service provider choices because payment involves security, taxes, financial regulation, legal issues, etc. It's most not recommended to build your own or use small cloud service providers. I only recommend big and suitable ones.
Stripe
Stripe is internationally recognized as the best payment service provider. It supports currencies from most countries worldwide and has reasonable fees. From a development perspective, it has complete documentation and the most comprehensive open source ecosystem.
I don't want to spend too much time on Stripe. Its advantages are obvious, but so are its disadvantages. Most people in China find it very difficult to register and use Stripe. To register Stripe, besides some alternative methods with risks of being banned, the most stable way is to register a company abroad, then register Stripe through the company.
But for independent developers, operating a company abroad isn't easy. Registering a company through some channels is relatively easy, but company taxes and legal issues are quite complex. So I only mention it here. If you have the conditions to register Stripe, I recommend using it.
Lemon Squeezy
If you don't have conditions to use Stripe, I recommend Lemon Squeezy as an alternative. It's also an international payment service provider that supports foreign credit cards, PayPal, and other payment methods. It also supports domestic Alipay and WeChat payments. Especially for subscription payments common abroad, Lemon Squeezy supports Alipay for recurring subscription payments, achieving unified payments for both domestic and international users.
Although its fees are higher than Stripe and stability isn't as good as Stripe, domestic independent developers can register and use it directly without registering a company. It also has various value-added services like discount management, subscription management, providing payment pages, etc. So if you plan to test your business model early, you can consider using Lemon Squeezy initially, then consider registering a company to use Stripe later.
Similar alternatives include Paddle.
Statistics
For data observation, there are generally business data analysis (like traffic, which pages get more clicks, which features are popular) and technical data analysis (like website performance, error log analysis). Here I recommend some good data analysis tools.
Website Analysis
For website analysis, I recommend Umami. It's an open source website analysis tool that can be hosted for free on Vercel + Supabase. By including a script, you can collect data yourself without worrying about data leaks and privacy issues.
My blog currently uses Umami for data analysis. You can click this website to see the effect.
If you want more powerful data analysis like user behavior recording and website heatmap analysis, I recommend Microsoft's Clarity. It's a website analysis tool that claims to be permanently free. Microsoft collects data to feed AI but doesn't share it with third parties.
Similarly, Google Analytics is also a good choice. If you have time, consider integrating all of them since having data helps you find useful information.
Analysis Tools
- Logs: Log analysis
- NewRelic provides 100GB usage quota for recording logs, APM, analyzing error logs, API performance, etc.
- Betterstack provides 1GB/month, often used for integrating log analysis in pure frontend projects.
- Sumologic is a recently discovered log platform that works well.
- Performance: Performance analysis
- PageSpeed Google's PageSpeed Insights for analyzing frontend web performance.
- LightHouse Google's tool for improving web quality, including but not limited to analyzing web performance, SEO, accessibility, etc.
- SEO: Search engine optimization
- Google Search Console Google's official SEO tool for analyzing website performance on Google search.
- META SEO inspector Chrome extension for analyzing webpage SEO information. SEO might not be well-known among domestic developers, but in many international business scenarios, SEO's importance affects project success.
Others
IAC (Infrastructure as Code)
For independent developers, you often need to use many different cloud service providers. For example, using AWS SES for sending emails, Azure for some Identity features, Cloudflare for some services, NewRelic for creating log collections. These cloud service providers all have their own APIs and CLI tools, but switching between multiple cloud providers is mentally taxing.
So I recommend using IAC tools for unified management. I recommend Pulumi. Pulumi supports managing your cloud services using code. Main reasons for recommendation are its support for mainstream cloud providers, multiple languages (JS, TS, Python, etc.), and lots of community support.
Other Development Tools (what I remember for now)
- Buildkite: Additional pipeline supplement. If your chosen cloud provider doesn't offer CI/CD services or can't integrate with GitHub Actions, consider using Buildkite.
- Bruno: A local HTTP request tool similar to Postman for debugging API requests.
- Proxyman Proxy packet capture tool for debugging, forward proxy, reverse proxy, etc.
Conclusion
Recently while reading "Small and Beautiful: Rules for Sustainable Profitability," I found the author made some interesting points. The author believes that if you want to be an independent developer and run a product independently, you should focus most on: deliver quickly, charge early, don't spend money until the last moment.
First, deliver quickly means rapid product iteration and quick trial and error. Creating products is a process of learning from rapid feedback loops and iterations. If products can face consumers early, consumer communication and feedback can help individual developers avoid building behind closed doors. Compared to spending a year building an initial version then releasing major updates quarterly, shortening product build time to months and releasing small versions weekly or even daily might help independent developers reduce trial and error costs and find profitable paths faster.
Second, charge early is also very important. Even if your product charges $1, it's fundamentally different from free. Independent developers can provide tiered pricing starting from free, but should never be completely free. Free will drag down product operating costs and make it impossible to judge actual product value. As economist Dan Ariely wrote in "Predictably Irrational": "People will rush toward free things, even if it's not what they want."
Once products start charging, consumers will seriously consider whether this product brings them actual value and solves their actual problems. Charging and pricing is a good evaluation standard to help independent developers judge whether their developed products have actual value. Otherwise, developers should consider early whether to put energy into other products that can bring more actual value.
The last suggestion is don't spend money until the last moment, which is also this article's theme. Although the book means independent developers shouldn't expect huge growth through advertising and burning money, I think reducing costs is a problem independent developers must seriously consider. Otherwise, excessive costs will bring heavy growth pressure, causing the goal to become pursuing quick profits rather than making a good product.
Energy is the Biggest Cost
For most independent developers, early stages are solo battles. From product market research to design and development, finally to operations and promotion, every step is very time-consuming for individuals. Everyone's energy is limited, and for independent developers, energy and time are the biggest costs. My advice is to use GenAI to assist in unfamiliar areas and use mature SaaS services and various PaaS platforms in early product stages.
Besides pure mobile tool developers who only need to consider app publishing, most developers need to consider building official websites, constructing backend APIs, considering authentication, authorization, payment, statistics, storage, and other series of needs. These needs all require deployment and hosting to some extent, so I recommend using cloud service providers to build services.
Writing to the end, I suddenly realize I don't have much actual success experience. It's more based on building open source demos and learning from international forum success stories, mainly facing international traffic. So for the above suggestions, everyone needs to make reasonable judgments based on their own needs and focus on their business needs for tech stack selection.
Also welcome everyone to leave comments below sharing your independent development tech stacks and cloud service provider choices. Let's learn and exchange together.
References
- https://nextjs.org
- https://pages.cloudflare.com
- https://nextra.site/docs/guide/ssg
- https://developers.cloudflare.com/pages/framework-guides/nextjs/deploy-a-nextjs-site/
- https://tailwindcss.com/
- https://medium.com/%E6%89%8B%E5%AF%AB%E7%AD%86%E8%A8%98/why-shadcn-ui-is-so-popular-in-2023-0f95e66f3ddc
- https://www.radix-ui.com/
- https://github.com/t3-oss/create-t3-app
- https://ui.shadcn.com/blocks
- https://developers.cloudflare.com/workers/platform/pricing/#workers
- https://next-auth.js.org/
- https://blog.cloudflare.com/prisma-orm-and-d1
- https://www.cloudflare.com/zh-cn/products/distributed-sql-database/
- https://neon.tech/
- https://supabase.com/
- https://clarity.microsoft.com/
- https://developer.chrome.com/docs/lighthouse/overview/