一个Indie Hacker的微SaaS技术栈

news2024/11/12 13:17:39

如今,可用的技术非常多,我们每个月都会看到各种新的 JS 框架发布,有时,如果你一开始没有选择正确的技术堆栈,以后扩展起来就会很困难。因此,在今天的文章中,我将与你分享我用于开发微型 SaaS 的技术和堆栈。

为了更好地理解,我将内容分为前端开发、后端开发、数据库、支付、云和安全。我们将逐一检查它们。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、前端开发

对于前端开发,我更喜欢使用 Vite 和 React JS,90% 的时间里,我使用 Next JS 构建了一些项目。但我构建的项目大多需要原生 JS 库,如窗口、位置等。

此外,为了简单起见,我一直在使用 MUI 中已经构建的模板,它们为我节省了大量时间,因为我不擅长前端,想创建一个 SaaS 的 MVP 版本来验证和检查我的想法。一旦我觉得事情进展顺利,并且 SaaS 具有一定的潜力,我们就可以进一步研究改进它的样式。

在开发过程中,我大多数时候都会禁用 ESlint 检查,如果您愿意,您可以保持检查启用,这有助于您为 SaaS 编写干净、良好的代码。

2、后端开发

现在看看后端开发,如果我正在构建一个具有许多功能的复杂 SaaS 项目,那么我将使用 Nest JS,它是 Express JS 的更高级版本。

NestJS - A progressive Node.js framework

与使用 Express JS 相比,该框架更可靠、更可扩展。但如果我正在开发功能较少的 SaaS 或 Micro SaaS,那么你可以尝试使用此 Node JS - Express JS 框架。

我更喜欢用 JS 为 Micro SaaS 编写代码,对于那些功能众多且比 Micro SaaS 更大的项目,我更喜欢使用 TypeScript。

有时为了节省时间并更快地构建 CRUD 操作,我也会使用像 Strapi 这样的无头 CMS。

Strapi - Open source Node.js Headless CMS 🚀

它还提供与其他第三方(如 Stripe 和 Mailchip)的集成,从而节省了我的工作和时间。

3、数据库

对于数据库,我更喜欢在大多数项目中使用 MongoDB,然后在需要收集用户活动的地方,我更喜欢使用 PostgreSQL。

如果需要缓存,我也会使用 Redis,我的所有数据库都来自 PlanetScale、Redis.com、MongoDB.com 等提供商,有时如果我需要 Kafka 这样的排队服务,我更喜欢使用 Upstash。

4、支付

对于订阅和付款,我总是使用 Stripe 来管理它们。除此之外,如果你需要更复杂的税务文件和申报,也可以尝试使用 lemon squeezy。我在上一个项目中使用了它,发现它很有用。

5、托管和部署

由于我不是一名优秀的 DevOps 工程师,因此我主要喜欢使用 Heroku、Render 和 Firebase 等平台进行部署。

除此之外,对于我客户的一些大型项目,我一直在使用 Azure 和 GCP 进行信用评估。

但如果你的 SaaS 是 MVP 并且需要的架构不太复杂,可以尝试使用 Vercel 或 Netfily 进行前端部署,使用 Heroku 或 Render 进行 API/后端部署,使用 Wasabi 进行云存储,使用 Firebase Cloud Function/Vercel Edge Functions 进行无服务器部署。如果你想将所有东西都放在一个地方,并且希望比 Azure 或 AWS 的复杂性更低,我也会使用 Digital Oceans。

对于 AI 模型及其部署,我更喜欢使用 Runpod 进行部署。

RunPod - The Cloud Built for AI

除此之外,如果你喜欢使用 Open AI API,也可以使用 Azure 中的积分,或者如果我需要使用其他重建模型,我会使用 Togerther.ai。

6、安全性

对于我的 SaaS 安全性,首先,你需要确保数据库不是公开的,然后我主要使用 Cloudflare 来确保安全性,它可以保护我的 SaaS 免受大量攻击和渗透。

除此之外,我还使用 NewRelic 和 Site 24x7 进行登录和监控,以保存日志和通知。此外,如果你想了解有关通知和管理 SaaS 日志的更多信息,请随时查看我的这篇文章。


原文链接:我的Micro SaaS技术栈 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2033659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue使用富文本编辑器+自由伸缩图片

首先要下载依赖,下方是本人使用的package.json,下载完依赖如果有启动项目失败的情况,建议将依赖版本降低或使用和下方一样的版本 package.json代码 {"name": "l","version": "0.1.0","privat…

Linux中线程常用接口(创建,等待,退出,取消)

pthread_create #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); Compile and link with -pthread. 编译时应注意。 #include<iostream> #in…

使用Playwright解决reCAPTCHA的分步指南

您是否在您的网络爬虫中遇到过CAPTCHA&#xff1f;许多网站使用CAPTCHA系统&#xff08;最常见的是reCAPTCHA&#xff09;来防止自动化访问。但是&#xff0c;本文将指导您使用Playwright&#xff08;一种强大的浏览器自动化工具&#xff09;和CapSolver&#xff08;一个设计用…

# 利刃出鞘_Tomcat 核心原理解析(二)

利刃出鞘_Tomcat 核心原理解析&#xff08;二&#xff09; 一、 Tomcat专题 - Tomcat架构 - HTTP工作流程 1、Http 工作原理 HTTP 协议&#xff1a;是浏览器与服务器之间的数据传送协议。作为应用层协议&#xff0c;HTTP 是基于 TCP/IP 协议来传递数据的&#xff08;HTML文件…

AI 的偏见来自数据集,而数据集的偏见来自人类 | Open AGI Forum

作者 | Annie Xu 采访、责编 | Eric Wang 出品丨GOSIM 开源创新汇 Richard Vencu&#xff0c;现任 Stability AI 机器学习运维负责人、LAION 工程负责人兼创始人&#xff0c;他的人生可谓十分精彩。 已过知天命之年的他是个中国通&#xff0c;极其热爱中国的武术、茶叶、诱人…

BugKu CTF Misc:被勒索了 disordered_zip simple MQTT 请攻击这个压缩包

前言 BugKu是一个由乌云知识库&#xff08;wooyun.org&#xff09;推出的在线漏洞靶场。乌云知识库是一个致力于收集、整理和分享互联网安全漏洞信息的社区平台。 BugKu旨在提供一个实践和学习网络安全的平台&#xff0c;供安全爱好者和渗透测试人员进行挑战和练习。它包含了…

03. 剑指offer刷题-二叉树篇(第二部分)

class Solution { public:TreeNode* Convert(TreeNode* pRootOfTree) {if(pRootOfTree nullptr) return nullptr;vector<TreeNode*> cur traversal(pRootOfTree);return cur[0];}// 这道题需要用到「分解问题」的思维&#xff0c;想把整棵链表&#xff0c;可以先把左右…

[upload]-做题笔记

项目下载地址&#xff1a;https://github.com/c0ny1/upload-labs 第一关 查看源代码&#xff0c;可以看到是前端js限制上传jpg,png,gif后缀文件 function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") …

Unity读取Android外部文件

最近近到个小需求,需要读Android件夹中的图片.在这里做一个记录. 首先读写部分,这里以图片为例子: 一读写部分 写入部分: 需要注意的是因为只有这个地址支持外部读写,所以这里用到的地址都以 :Application.persistentDataPath为地址起始. private Texture2D __CaptureCamera…

促进服务消费高质量发展虽好,但不能缺钱

近日&#xff0c;国务院印发《关于促进服务消费高质量发展的意见》&#xff0c;提出6方面20项重点任务。 百度图片&#xff1a;2024讲党课ppt国务院关于促进服务消费高质量发展​ 一是挖掘餐饮住宿、家政服务、养老托育等基础型消费潜力&#xff1b; 二是激发文化娱乐、旅游、…

Upload 上传图标不显示

el-upload如果在使用 Element UI 的 <el-upload> 组件时上传图标不显示&#xff0c;可能是由几个不同的原因造成的。以下是一些排查和解决这个问题的步骤&#xff1a; 如果在使用 Element UI 的 <el-upload> 组件时上传图标不显示&#xff0c;可能是由几个不同的原…

antd react echarts地图组件及使用

地图组件&#xff1a; import { useRef, useEffect } from "react"; import * as echarts from "echarts"; import chinaJson from ./chinaJson;const MapIndex ({option,width "100%",height "100%", }) > {const ref useRef…

08:【stm32】中断二:EXTI(外部中断)

EXTI&#xff08;外部中断&#xff09; 1、EXTI简介2、EXTI的内部结构2.1、EXTI通道2.2、内部寄存器 3、EXTI的编写程序3.1、EXTI的编程接口3.1.1、EXTI_Init 4、编写实验 1、EXTI简介 外部中断控制器&#xff0c;能够检测外部输入信号的变化边沿并由此产生中断。通过检测上升沿…

BugKu CTF Misc:密室逃脱 铁子,来一道 想要种子吗 哥哥的秘密

前言 BugKu是一个由乌云知识库&#xff08;wooyun.org&#xff09;推出的在线漏洞靶场。乌云知识库是一个致力于收集、整理和分享互联网安全漏洞信息的社区平台。 BugKu旨在提供一个实践和学习网络安全的平台&#xff0c;供安全爱好者和渗透测试人员进行挑战和练习。它包含了…

Sql语句出现ORA-00933: SQL command not properly ended的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行sql语句的时候出现如下问题: ORA-00933: SQL command not properly ended截图如下所示: 2. 原理分析 ORA-00933: SQL command not properly ended 是 Oracle 数据库中的错误,指示 SQL 语句存在语法问题 MySQL 和…

聚观早报 | 马斯克xAI新计划;iPhone SE 4将配A18芯片

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 8月13日消息 马斯克xAI新计划 iPhone SE 4将配A18芯片 真我GT7 Pro参数曝光 谷歌Pixel 9 Pro Fold最新配色 苹果…

TikTok达人影响力解析:品牌出海中的信任桥梁与口碑加速器

在全球化背景下&#xff0c;品牌出海已成为企业拓展市场的必然选择。然而&#xff0c;在陌生的国际市场上&#xff0c;如何快速建立品牌信任、提升品牌知名度、并实现有效的口碑传播&#xff0c;成为了企业面临的巨大挑战。在这一过程中&#xff0c;TikTok达人发挥着不可替代的…

systemverilog绿皮书随记(八)-- 功能覆盖率

代码覆盖率&#xff1a; 路径覆盖率&#xff1a;在穿过代码和表达式的路径中有哪些已经被执行过行覆盖率: 源代码中每一行代码是否被执行至少一次翻转覆盖率&#xff1a;哪些单比特变量的值为0或1有限状态机覆盖率&#xff1a;状态机中哪些状态和状态转换已经被访问过 语句覆…

Think | 大模型迈向AGI的探索和对齐

注&#xff1a;节选自我于24年初所写的「融合RL与LLM思想探寻世界模型以迈向AGI」散文式风格文章&#xff0c;感兴趣的小伙伴儿可以访问我的主页置顶或专栏收录&#xff0c;并制作了电子书供大家参考&#xff0c;有需要的小伙伴可以关注私信我&#xff0c;因为属于技术散文风格…

NVDLA专题2:具体模块介绍——Bridge DMA

对于NVDLA&#xff0c;输入图像和处理结果存储在外部DRAM中&#xff0c;但外部DRAM带宽和延迟通常不足以让NVDLA充分利用其MAC阵列。因此&#xff0c;NVDLA给片内SRAM配置了第二个存储器接口。 为了利用片内SRAM&#xff0c;NVDLA需要在外部DRAM和SRAM之间移动数据。Bridge DM…