Ask HN: Companies of one, what is your tech stack?

312 points by ecmascript ↗ HN
Hello dear HNers.

Each year for the last two years I have asked companies of one, meaning companies that consists of only one person of what tech stacks you use. Feel free to link to your site or project for show case if you want.

Here is the last two threads:

(2020) https://news.ycombinator.com/item?id=25465582

(2019) https://news.ycombinator.com/item?id=21024041

What is your tech stack?

Why did you choose it?

Do you think your choices had any impact on your success?

Thanks in advance!

326 comments

[ 3.7 ms ] story [ 306 ms ] thread
IOS, native Firebase + Java and Google Cloud, for the backend Database, Firebase Realtime DB, as a NOSQL solution (works better than Firestore for me) and actually build a simple RCP service on top of it.

My next backend might be on Go and just use a simple Rest service, and minimize Firebase usage (it is still good for real time chat type of apps).

I have always used Rails for my projects. In the most recent I took a detour to Django, which was successful, but never felt quite as productive.

If I start something new this year I think I would opt for Rails again. Even though it’s long in the tooth nowadays, I would choose it for productivity, time to market and availability of people if the project scales.

Why did you choose Django for your last one? What's your setbacks/difficulty compared to Rails?
As I mentioned in another comment (https://news.ycombinator.com/item?id=28299878), I recently built a fairly simple GraphQL backend in Django, then switched to Rails as I hit performance issues with Python's GraphQL support.

I had no real experience with either before, but I think I'd agree with your summary. I felt Django was a bit "cleaner" and the code felt less magical, but I definitely spent quite a few hours trying to get things working which "just work" on Rails. The Rails library ecosystem seems a bit better too (both in terms of quality and quantity). Both enabled me to get a lot done with very little code, which when it comes to back-end I'm a fan of!

https://hanami.run email forwarding services with webhook, smtp, disposable emails

Tech Stack:

- Ruby/ for webapp and user facing service: very quick to get the feature out, easiser to work with HTML, database access. Being a one man shop, I have to develop fast

- Go: mail server and anything that isn't user facing or doesn't involve rending HTML. Statically type to reduce bug, performance to cut cost, this is the core of business.

- React Native: for our (upcoming) mobile app so I can share code for both of android/ios

I think the ability to ship out feature fast is important to keep user engage. And with the performance of Go I can keep cost low. https://hanami.run currently handles about 50K domains and processes 10 email per second and the entire infrastructure is ~ $100 per month including redundancy.

Nice service!

You may want to hire a native English speaker to check the text on your website though, it's full of errors and odd wording.

I'll take a look if you want, op. Native speaker, been writing proofreading and translating for a long time. Leave a comment here and I can get in touch.
Getting very close in my large side projects for everything to just be Go + PostgreSQL. Go is the API, business logic, and very soon the entire web layer. This is all on Linode, there are no containers I just put a binary on an LTS Ubuntu and then iptables to just those ports (with SSH configured in their Cloud Firewall to only be possible from my home IP).

I have a long term itch that I want to scratch soon, whether it's possible to dispose of PostgreSQL and just store my data in an S3 compatible object store and yet still have a SQL interface to it. https://blevesearch.com/ is on my list of things to look into for this. I'd already structured the PostgreSQL schema with the possibility of putting individual tables into an object store, but as my databases grow I'm keen to avoid becoming a DBA and I don't use most PostgreSQL features so if I have the chance to reduce my tech stack to just Go I may take it.

What I've learned from having a mix of Python + Django + some NPM... bitrot and maintaining dependencies is a debt that you have to start paying way too soon. Originally only the API was in Go, but that is the one part that over years has required virtually no debt paydown due to the language, environment, dependencies. You can leave a Go application for 8 years and all you need do is compile it to the latest Go and everything works perfectly... I can't even run or upgrade Python apps from half that time ago without major work to bring it up to date. As the side projects proliferated or grew, it is less overall effort for me to rewrite in Go than maintain everything else.

Opinion: Don’t put your business data in s3 objects!

It can work if all you will ever need is a key value store, but as soon as you need SQL-like queries (joins, filtering, transactions) you will be stuck reimplementing a sql engine in your app code.

I recommend to try SQLite with some kind of replication (either Linode disk snapshots, Litestream etc).

Having your state observable and local to your application instead of a slow http hop away makes development much easier.

+1 for SQLite. You might take a look at https://github.com/rqlite/rqlite if you really need replication. SQLite can go pretty far on its own though.
rqlite author here, happy to answer questions about it. I should note that rqlite is a distributed database that uses SQLite as its database engine. This means in practice it does replicate a SQLite database to each node on the rqlite cluster -- but it's not a SQLite replication system per-se.

https://github.com/rqlite/rqlite/blob/master/DOC/FAQ.md

> you will be stuck reimplementing a sql engine in your app code.

Only if you're intent on keeping the s3-only architecture when it no longer makes sense, and the transition to SQL need need not be hard if you've been disciplined about your data structures from the get go.

I've been part of a transition from s3 only to s3/sql when business requirements changed, it only took us a week to set up a db, set up a workflow manager to insert necessary data into the db when something uploaded to s3, and ran some batch jobs for data that already existed. Total data in s3 was ~1pb.

IMO it's all about whether your problem space fits well with s3-only, and sometimes it does!

Athena is a bad tool that if you have too much data or your queries take too long will just error out and give you empty results, and charge you for the privilege. It's cheaper and less pain to host your own Presto if you need it.

How much is too much data? It depends. On things you won't be told. Varies day to day. Totally random.

(comment deleted)
How do you handle DB interactions in Go? I've been interested in how people choose between ORMs and hand written wrappers and how they structure them recently.
Manual via https://pkg.go.dev/database/sql with handwritten SQL in the majority of places... but with a wrapper to handle the more complex search scenarios.

For example these from a multi-tenant SaaS forum platform (it's old, but it's also OSS so I can show you)...

This helper to get connections: https://github.com/microcosm-cc/microcosm/blob/master/helper... used like this for inserts: https://github.com/microcosm-cc/microcosm/blob/master/models... and this for reads https://github.com/microcosm-cc/microcosm/blob/master/models... .

But searches... i.e. highly consistent SELECT queries with different WHERE statements (and potentially FROM statements), then in each project I tend to have an idea of a search struct ( https://github.com/microcosm-cc/microcosm/blob/master/models... ) that will validate the inputs and represent the search query, and then something that will consume that and build the SQL for it ( https://github.com/microcosm-cc/microcosm/blob/master/models... ). This isn't pretty... but it's easy for me to tune, debug, and keeps the rest of the code base very maintainable... all the complexity is here in the search.

The vast majority of SQL is very very simple and needs no ORM, and the complexity is just in the search scenario where I want to be able to tune the performance more than an ORM would allow me to do so.

An environment-health-security app for the B2B market

* Flutter frontend iOS/Android

* Parse Platform backend backed by MongoDb, hosted on Hetzner dedicated server with backups in Azure

- Migrated from Firebase

* ASP.NET 5.0 backend for various other integrations and periodic back office jobs

- Migrated from Firebase Functions

* Back office tools (CRM, billing etc) in React/Redux

- Currently experimenting with Appsmith to allow for quicker iterations

* Landing page in React

- Originally just plain HTML. Re-wrote to React to be hip.

I would try Budibase instead of appsmith
Thanks, I'll check it out. Definitely seems like Budibase fits my use case.
I found Budibase cumbersome to use. It looks sleek, but the overall usability is worse.

To delete a component you have to find it in the component list, open a hamburger menu and delete. This despite having a panel with component details open with plenty of screen real estate for action buttons.

The API I use outputs data in a nested json ("results: ..."). As such Budi parsed everything into a single column. There was no clear way around it. Automations maybe?

In general there was very little use of the screen with most things being empty. I guess it is earlier in development than Appsmith. I do like the aesthetics and SSO support though. It was also much easier than Appsmith to install self-hosted. I'll keep following the project.

Hi CerebralCerb,

I'm a co-founder of Appsmith. Thanks for trying us out. Would love to know the problems you ran into while self-hosting? We are replacing the install script with a docker compose, so errors should reduce. My email is abhishek@ if you need help.

The port used by the docker container could not be setup during installation. Letting the setup fail and then edit the intermediates (docker-compose.yaml) worked fine but it was not elegant compared to Budibase's installation procedure. It's an issue resolved in 5 minutes though so far from a deal breaker, and with the changed install script it should be gone.

You've made a pretty great product and I look forward to following your journey. We're already using it in production.

Hey, co-founder of Budibase here.

This is fantastic feedback, thank you very much for taking the time to write this up.

We totally agree with the points you have raised - in fact we are in the process of addressing the component deletion problem; providing the ability for users to delete components with the keyboard or use an action bar that will be shown in the preview.

As for mapping data - this is something that is requested a lot and as such is high priority. We will be working on this in the coming weeks, providing full JS support and transformation logic for any source of data that you fetch from your Budibase applications.

Great to hear you had a good experience using Budibase self hosted. We are constantly trying to make the Budibase setup process easier, both through our self hosting setup CLI and through standard deployment configurations that developers are used to - such as docker compose and helm charts for kubernetes. Which method did you use?

Please do continue to follow Budibase - We are confident that you will love the features we planned on our roadmap for the next few months!

https://github.com/Budibase/Budibase/projects/10

Those changes sound great! I'll definitely keep following you. I use docker compose.

Your product is solving a very real problem that I think is under served. I developed a lot of back office tools in my old job. It was very easy to find good ideas for tools that would improve the workflow and efficiency of our sales, marketing and accounting departments.

I found that rapid prototyping and quick iterations worked great for finding good solutions for non-technical stakeholders. It made it possible to give them something concrete to "touch and feel" after every meeting. It spurred a lot of engagement.

Low-code tools like yours will really aid this kind of process, and I look forward to seeing where you'll go.

or you could check Dronahq.com
No self-hosted option unfortunately. It seems to be a more mature solution than Appsmith though.
Self-hosted solution is coming up soon. Would love to hear your feedback on the platform though.
I first used my Google account to sign up using my phone, but decided to switch to desktop halfway through the onboarding process. It was then impossible to login because: "Email ID not registered." It was also impossible to register because: "An account already exists for this email address." I started a new free trial using another Google account.

I tried to add my REST API as a data source, but I had to initialize it with an endpoint that returned some entities. My base endpoint ('/parse') does not do this. Therefore it seems like I need to add a new connector for every API resource I have ('/parse/classes/Dog' etc).

I added a table and hooked it up to the data connector I made earlier, but despite using a previously configured connector I had to re-configure authorization headers etc. Inbuilt pagination was nice.

I clicked "Test&Finish", everything looked alright but the table in the designer did not update. After spending a few minutes trying to figure out what went wrong I tried the play button and it seems like it worked all along, just that the data changes is not reflected in the designer. That kinda ruins the WYSIWYG aspect of it.

I figured I should try one of the templates to see how a real DronaHQ app can be. It seemed to me like DronaHQ can do more complex apps than the two others. I tried the Dashboard template. It had a bunch of filter options, but nothing happened when I clicked on them.

Overall it looks like DronaHQ is more ambitious than the others. But the bugs really needs to be ironed out.

Thanks for sharing your experience @cerebralcerb . I can understand for first time user playing around with new tool can be daunting. e.g. there is a small notification on top of Table which highlights that "below is sample data, to view your real data that you bind. Plz go to preview mode"

But these feedbacks encourages the team to smoothen the experience further.

Yes, you are correct the platform is capable of creating quite complex apps too. We have many operational tools built on it by IT and business teams alike.

Thanks again for taking time to share your feedback.

Elixir / Phoenix, Heroku with Postgres addon.

Fronted mostly static with Stimulus + Hotwire for a few dynamic parts.

Images via S3 + Imgix.

Metabase (also on Heroku) for analytics.

Trying to keep it as simple as possible. Not quite successful yet, but pleased with the tech stack so far.

How come you are using Hotwire instead of Liveview?
Main reason is I think it's conceptually simpler. In particular, Liveview is stateful and Hotwire is stateless.

I think there are some potential performance benefits of liveview (less sent over the wire and less work done server side) however I prefer to optimise for simplicity and fewer bugs.

Edit. Caveat this with the fact that I haven't used Livewire in anger.

I'm a fullstack JavaScript dev. I used to write everything in pure React and serve it with Express on Node but two years ago I started experimenting with all the fancy new frameworks and now my every project is:

- Gatsby or Next depending on how dynamic the content is

- Firebase for db, auth, and bucket storage, and sometimes hosting

- Vercel for NextJS hosting

- Recoil for state management; after years of using Redux it feels amazing, like it's a part of React

- ImmerJS for immutability

- SASS for CSS

I love my current stack. It definitely took a while to make everything work together smoothly. I don't understand the complaints about modern web dev. I've been building websites for almost 20 years and this is the most productive and fast I've ever been.

The only thing I still haven't figured out is CMS. Tried all of the fancy new headless CMSs but nothing works for me. Working on my own.

Have you tried sanity.io (a headless CMS)? I used it in conjunction with Gatsby and have had a great experience overall.
Yes, it was my favorite for a while. But recently I switched to GraphCMS for more basic data structure and I love it. Especially the UI.

I think what the market is missing is a sort of locally run CMS that is file based with Sqlite and managed completely with Git. Something that can can be moved around with project easily and have great version control.

Let's say you have a /content folder in your project that is it's own separate git repo, and there you have .md or .txt or sqlite files, and your assets, and there's a browser based client to manage it that runs locally.

I think you've just described getkirby.com including the content folder naming.
I had a look at a lot of the available headless CMS systems last year. Didn't fancy any of them as they just seemed like a UI for building a db schema essentially. So I just added the relevant tables for my content to my db and then it was trivial to add content management UI to react-admin and add react pages on the main website to show the content.
I think you don't find many problems because you're using firebase and that's outsourcing a lot of problems you'd face if you weren't using it.

Many people don't want to be tied to a provider to this level (I think it's all about trade offs, not saying it is a good or bad thing).

In the stack you described, in my experience, it is a real headache to get a stable and realiable system where you need authentication, permissions, users management, a CMS, background jobs, input validation, migrations, internationalization, etc.

Ruby on rails, Laravel, Django, etc provide a clean, well documented and battle tested solution to all of this. The modern stack you describe, if not outsourcing all of this to a third party, it is pretty complicated and no one builds it the same way.

That's why people complain about these modern stacks being complicated, you're just not feeling it because of the trade offs you've made. (Good for you!).

My principle for https://phish.report (a tool for semi-automating the reporting of phishing sites) is: do as much statically or server side rendered as possible.

Deployment: Docker Compose. It's great to just set a DOCKER_HOST environment variable and I can deploy to any server with Docker installed.

Backend: a Go service. Could be any language really but that's what I know. Just takes requests, does some business logic and returns HTML templates.

Frontend: I'm not a frontend dev so I try to avoid it as much as possible. For UI, I use Bulma (a pretty comprehensive bunch of CSS components), with a tiny sprinkling of vanilla JS for small client-side animations (e.g. burger menu toggles). For any user action that hits the backend, I use https://htmx.org/ and just return a small HTML snippet as the API response. No point using client-side JS for that (no latency gains and makes the tech stack less homogenous).

> do as much statically or server side rendered as possible

Love this - a terrific cheat code!

I make a lot of prototypes along with maintaining production systems. A lot of the projects have to do with ML/NLP, which basically means I have to chose python as a core backend language. Which is great, I love python. My core production system and every new prototype is: - Django + PostgreSQL - Celery + redis - for long-running tasks - React - GraphQL - Terraform + Cloud-init to provision the infrastructure

All quite boring and stable, the way it should be :)

I have a longer writeup, along with my reasoning for the technologies I chose: https://kubami.com/articles/my-modern-saas-software-stack/

How time flies... React, GraphQL and Terraform are considered boring and stable.
Fair enough for the GraphQL.

However I'd say React is so widely use I'd say it is boring and stable (as the frontend tech goes)

Terraform, well, what is the alternative? Clicking through web interfaces, or bash scripting the cloud-provider CLIs.

Terraform hit 1.0 quite recently, so let's wait for all that boring and stable please, otherwise the words lose meaning...
50+ sysadmin told me Ansible is the rock-solid.
Could you share what python libraries you use in your projects for ML and NLP?
Some of the libraries I use

- nltk - preprocessing

- spacy - preprocessing, entity recognition, part of speech recognition

- gensim - Similarity and clustering

- pytorch - ML model building

Decision Log SaaS with Slack Integration:

* PHP with Laravel + Postgres on the back

* Blade + Livewire on the front

* hosted on Clever Cloud

I chose it, because it's a stack where almost all problems have already a solution because others had it before. Also, and this was really important at the time: There is just so much built in, PHP+Laravel is a powerhouse for rapidly developing MVPs.

I'm still pretty happy with it. It can take you pretty far if you keep your code base clean, use all the existing tooling like static analyzers, code formatter, and write tests. While success is still moderate, I don't think I could have done it with a different Tech Stack, at least not in the same time-frame and with the same confidence.

Great thread!

I have a question for everybody who uses Laravel or Symfony:

Did you compare it to the other one before you made a decision? What made you decide on the one you are using now?

I also would be interested in the same question regarding Django and Flask!

Does it even make sense to "compare frameworks"? I've got an impression they all do more or less the same and it's a matter of preference really.
Personally I think comparisons are useful not for the framework itself but the ecosystem. Available libraries, resources for common scaling/implementation problems, available consultants, etc.
Wouldn't that be exactly the reason to compare them? If both work fine, but they are just different, the comparison helps you know which you'd prefer.
Postgres -> Django w/Graphene -> Vue.js w/ Apollo

Breakfast of champions right there.

Do you leverage types on the FE from Graphene/GraphQL?
For my side company I design and build audio electronics for DJs.

https://cardinia.net/

Here is my tools & workflow:

https://nudge.id.au/v5/img/Cardinia-Electronics-Workflow-202...

Professional CAD tools are not cheap, so I'm basically breaking even. I'm mainly doing it for the love it -- I love to create things to inspire others to also create.

Luckily I have a full time job to keep me going :)

Tell me about it, I also use some professional CAD tools (Revit) but on my day job.

I hate to say it, but maybe no one would really care if you would pirate it? It just doesn't seem right to spend so much money on such expensive software that is probably that expensive due to big business using it and no competition.

Looking at the workflow I guess it's SOLIDWORKS.

I used to pirate everything, but is it a solution? In the past perhaps, I wanted to use expensive software, I was experimenting, didn't have the means to buy a license, and there weren't many alternatives to mainstream software, either proprietary or free. But nowadays things has changed for the better, so I try to build my workflow around what I can afford.

On a tangent, in my opinion, the advent of crazy cloud subscriptions have stimulated the community to find alternatives and promote more sustainable software. GIMP or Blender wouldn't be what they are today if everyone kept easy pirating Photoshop or Maya for example.

To op, if SOLIDWORKS is draining your pockets look at these alternatives[1], it's not my field, I can't say anything about them.

[1] https://expertratings.net/solidworks-for-free-and-alternativ...

I've managed to find some middle ground by taking advantage of short term licenses, i.e. renting software for a couple of months to get the work done after balking at four to five-digit sums to own perpetual licenses. Still, would be nice to own the software outright.

Appreciate the links! Indeed, we're seeing OSS tooling getting better and better!

> I used to pirate everything, but is it a solution?

Well it could be a solution if you are just starting out. CAD is very complex stuff so it's not likely that there will be a good open source replacement to Revit for example any time soon.

I really don't want to pirate software in general but if the license is like $2500 / yearly it's such a ridicolous amount that there is no good options left.

I built up my CAD and rendering chops with the free tier of fusion360. Legit and cheap way to learn the basics.
Did you take a look at Shapr3D?
Wow thanks for the heads up on Shapr3D, definitely going to check it out :)
https://volt.fm

- TypeScript / Node / Express

- PostgreSQL / RabbitMQ

- HTML / Tailwind CSS / Vanilla JS

- Hosted on two DigitalOcean droplets

- Deployed as Docker

- AWS SES for sending emails

Ruby on Rails, with a couple React bits in there for “islands of interactivity”. Coupled with old-skool Heroku it lets me punch above my weight class, iterate like you would not believe, and focus on the business.

I only recently moved to Rails though. Before that I was full stack TypeScript, which was cool and I still miss the static types, but it’s worth going without them.

Yeah I was evaluating back-end tech stack for a recent side project, most of my work these days is in TypeScript or C++, so a large part of me wanted to have types and go with a TypeScript/Node stack... but on further evaluation, both Django and Rails let you do so much on the back end with so little code, just by following their conventions and using off-the-shelf libraries, that I'm willing to trade off types in exchange for much less code to maintain (and easy Google-ability of problems).

Node is great, but I didn't come across any frameworks that rival Django or Rails in terms of maturity, and for a side project with no special requirements in terms of scalability etc., I'm not really interested in piecing together multiple libraries or writing a lot of code myself.

I actually ended up building the back-end twice lol - I was looking for the opportunity to try out GraphQL (overkill really, and it goes against what I said about keeping things simple, but I felt it was a good opportunity to try it) and ended up hitting some big performance issues with Django + Graphene – not sure how much of it was my fault vs. Python's GraphQL being slow, but in the end I rewrote the API in Rails + ruby-graphql in half a day and the performance is 5-10x faster there.

Having had the opportunity to build the same thing in them both, I'd say that Django's ORM is quite a lot better (I prefer the Django way of "update the model and the ORM will work out what migrations you need" vs Rails where you explicitly create migrations) and I prefer the Python language (simpler syntax, Ruby has so many ways to express the same thing); but Rails is probably actually quicker to work with and the quality of the Gems available for common stuff seems better than the Django equivalents.

Ultimately both Rails and Django let you get a lot done with not much code and are pretty similar conceptually – I'm impressed with both!

I completely agree about the Django ORM. I used Prisma for a couple projects and that sold the idea of "changing the model and generating the migrations" for me. Now, it feels a bit silly to explicitly define migrations. I'd love to hear some pros of the Rails/Phoenix way though.
Same, I am sure they went with that way for a reason (or perhaps it's just technically easier to implement?). I also found things like many-to-many relationships were trivial in Django, much more manual in Rails.
https://webcrate.app - OSS bookmarking tool to help you organize your web

- Vue / Nuxt / Plain CSS

- TypeScript / Node / Express

- Hosted in your own personal cloud thanks to Deta Space (https://deta.space/discovery/webcrate)

Nuxt made the frontend super simple and fast to build, it takes care of a lot of things for you! Deta is also awesome for devs

-Ubuntu

-NGINX

-PHP

-MariaDB

All running on 3 VPS's. Everything I want to do can still be done with this stack.

I turn existing websites into apps at https://webtoapp.design

I went with Flask (python) + Bootstrap for my website.

The apps are created in Flutter, which was a great choice looking back on it. This allows me to have 1 codebase for both Android & iOS apps (most customers want both). If developing an app for just Android would be 100% effort, developing an app for Android and iOS with Flutter is around 130% effort I'd say. Those additional 30% mostly come from inconsistencies in Flutter between Android & iOS and from desired differences between the platforms, e.g. Material vs Cupertino design.

I developed native Android apps before and now I'd even use Flutter if I wanted to just create an ordinary Android app. It's just so much nicer to use in my opinion.

Summary: Flutter was a great choice, Flask is fine too, nothing to complain about there.

How long did you spend on the Droste effect on your homepage? :D
Haha i spent like 3 days on that image in total. The starting point of the image is from undraw.co (i think it's called "web app"). First I wanted to use recursion but in the end it was a lot easier to just make a simple loop to nest the image 3 times or so (beyond that it just unnecessarily increases the DOM size without a big visual difference)

Also make sure to hover the image, it's animated! I love how the nested images get animated too.

All in all it was fun to work on and I learned a lot about SVG while I had nothing super important to do :)

It sparked joy, I like it!
.lifting-card {height: 100%}

If you like the column heights aligned on /convert/appdetails.

Thanks for the tip! I might use that, need to think about a good way to deal with the additional white space in the card :)
Wow sounds fun, the idea for the website sounds fun as well and congrats on the launch.

Small suggestion, could you not automatically display the pricing according to the location of the IP address of the user. My IP is being guessed as its from Indonesia and I see pricing that I am unable to read. And I don't see an easy way to look at the pricing in a more familiar currency.

Far too many websites do this, its so annoying :(

Thanks for the feedback! That makes sense, thanks for letting me know. I fetch the prices via an API from my payment processor, which does the guessing.

I'll add it to my todo list to offer a manual override :)

Any particular reason for choosing Flutter over React Native?

Also seems like a very low price tag, I guess you're working with cheaper developers, have some automation in place and/or take on simple websites? Or maybe I overestimate the difficulty of doing this?

$850 for both android + ios is about a day's worth of work as a medium paid contractor in the U.S, and I imagine it takes longer than that to do this.

I hadn't worked with React or javascript before this project, but did a small Flutter project in university. I found dart easy to pick up because it's quite similar to Java, which I've used quite a bit. Also I find that there's more progress being made with Flutter (with Google as a backer), than with React native. But I might be in a bubble there.

Creating the apps is mostly automated and the apps use webviews along with a few native components. Without webviews and automation this would never be possible at that price point, you're totally right.

There's lots of competitors that offer pure webview apps at ridiculous prices (I've seen $5 even). You can't publish those in the app store though (even if you manage to submit it for review without any help). So native components and help with publishing the apps are quite essential. And that's where a lot of the involved effort lies: communicating and helping customers.

Working on improving that day by day though :)

Is most of the design just bootstrap from scratch? Very nice
Thank you! Yes, it's almost exclusively bootstrap :)
https://recordwise.ch - helping founders incorporate in Switzerland:

- Django/Python

- SQLite

- Celery and Redis for task queues

- Bootstrap4

- jQuery

- Sentry for error tracking

- Stripe for payments

- EmailOctopus for newsletter

- SendGrid for transactional emails

- NameCheap for the domain

- Linode for hosting

Running costs are USD 7/month for Linode + USD 15/year for the domain. SendGrid is currently free through the Twilio Startup Program.

Why did I choose it?

I am a lawyer and startet to learn how to code from scratch.

Python was being recommended because it is easy to learn. So I chose that.

Further, there are many Python/Django tutorials available online and I was always able to find my answers online. That definitely helped me to keep going and not give up.

Hey, is this service open for non-Swiss residents? If yes, is there an English version of the website available? Thank you. :)
The service is aimed at founders domiciled in Switzerland; in principle, formation by foreign founders is also possible. However, it is mandatory that the company is represented by a person domiciled in Switzerland. This can be a managing director (GmbH) or a member of the board of directors (AG).

For capacity reasons (company of one) and due to my focus towards Swiss founders, the site is currently only available in German.

Very nice UI design and colors. How'd you design the jumbotron/blue design at the top?
Not a single-person company but I worked on projects and in roles where I was the single person making decisions. Here is my small overview of the ML (machine learning) and DS (data science) world. Hope you find it useful

> What is your tech stack?

The choices are python, scala, julia, matlab and R. Of these python takes at least 90% of the market. I am using python and will do so for the forseable future. Don't like it but it's super practical thing to do. Fingers crossed Julia hits mainstream in the next few years.

Since I am mostly in the computer vision world my stack is torch, torchvision, pytorch-lighting, opencv, scikit-image, scipy and numpy. From time to time i call upon numba when it is impossible to avoid a loop (python loops are sloooooow, numba JIT compiles). Very rarely i coded stuff in C++ and used cython to link it to rest of python. Most of the stuff is already there. For model inference serving i use fast api.

> Why did you choose it?

I chose python because there is no real choice here. It's a monopoly. Winner with most ready to use packages takes all. I am rooting for Julia to eventually win over python as using python as the (big) data language is contradictory given how slow the interpreter is. Also it is not a GPU native language.

Torch was more of a personal choice as I really hated tensorflow 1.X versions and the compute graph. It was hard to debug and follow what is going on. Tensorflow 2.X moved to same mode of computation like torch but it was already too late for me.

> Do you think your choices had any impact on your success?

I think going with tensorflow would have worked as well. Lot more annoying but good base. Using language other than python would have been a bad idea. Practical ML is a lot like JavaScript WebDev. Get a bunch of stuff from 3rd party packages and write some glue code.

I run a side project podcatcher site https://jcasts.io. As I don't have a lot of spare time and this isn't making money, simple+cheap are important factors, so I stick with what I'm familiar with and only adopt new things when I have the need.

- Django

Enough said, really, it's a solid workhorse with a healthy ecosystem. The admin feature is very useful for simple backend data management. No other particular reason to pick this over Rails, Laravel etc other than my familiarity with Python and the framework.

- PostgreSQL

No issues here, works just fine. I use the full text search instead of a separate search indexer such as Elastic - it makes the deployment simpler and reduces overhead of serializing and syncing the search index and database. You can get good performance by paying attention to queries and indexing.

- Redis

Caching and queuing. I use rq [1] rather than Celery for running background tasks, it's less complex and generally easier to work with, especially if your needs are simple.

- HTMX and AlpineJS

SPAs can be a pain to build and maintain if you are a solo developer - it's almost like building two separate applications, and then you have to handle the integration of your backend API and frontend app. HTMX [2] lets me get 90% of the way there while still using plain Django views and templates, while still providing a smooth end-user experience. AlpineJS [3] is great for dealing with the more complex interactions where Javascript is really needed, but I still want some lightweight structure.

- Tailwind

I'm not a designer/CSS guru, so Tailwind is great for providing sensible defaults. Was a bit skeptical at first of maintaining long inline class names vs something like Bootstrap, but Tailwind turned out to be surprisingly productive.

- Dokku

Basically Heroku without the expense. Has a ton of features and buildpacks for managing single-node applications, from LetsEncrypt integration to database backups. As I run the whole thing on a single Digital Ocean droplet, this is perfect - not sure what the next step would be when/if I need to scale up to a multi-server setup.

- Ansible

For any server setup and routine maintenance stuff.

- Mailgun

Email sending. Still on free tier.

- Github Actions

CI/CD pipeline. Works fine, very few outages or issues, pretty easy to set up.

- [1] https://python-rq.org/

- [2] https://htmx.org

- [3] https://alpinejs.dev/

I use almost the same stack, except instead of Alpine + htmx I just use Unpoly. Have you tried it? If so, why did you prefer your choices? Any reason you'd recommend your approach?

https://unpoly.com

I looked briefly at Unpoly - it looks an interesting project, but htmx had all the features I needed and the developer was very responsive to questions and bugfixes. It also had good library support for Django (django-htmx).

I also used Hotwire for a while, but that seemed much more of a Rails thing and again, htmx was just a better fit for what I needed to do.

Really nice and fast UI. Will definitely have to check on Dokku.
Both API and web app served out of AWS lambda/API Gateway/Cloudfront. Back office app served from S3.

- React and next.js for the web app.

- Node.js & express for the API.

- React-admin for the back office.

- Postgres for the DB.

The biggest benefit to me of the above stack is running it out of AWS lambda. Pay only for what actually gets used, and more importantly it will scale to any sudden surge in customers without any effort on my part.

Hi, honest questions of things I struggled a lot with when tried to build applications with his stack:

What do you use for accessing the database or as ORM, etc?

How do you do validations server side and show error messages to the user?

How do you do i18n in general, and also related to the previous question (error messages)

Do you use any CMS? How do you explore your data?

How do you do background jobs?

How do you do migrations?

How do you do authentication and permissions?

All these things are what drove me back to Django. I wonder how people solve this without reinventing the wheel or having to write and test a ton of glue code. I wonder if I'm missing something or I'm just too lazy or not good enough (I'm not trolling, just genuine concerns)

Presumably Next answers some of those, and things like background jobs must just be lambdas as well?
Can you point me to the docs or those solutions? I haven't found them when I looked for. Of course there are tons of examples integrating with third party libraries, etc...but tying everything together is what worries me.
Nowadays I'm using Django + Unpoly + tailwind. I just discovered a few days ago slippers which is just what I was missing. Also using Huey for background jobs, whitenoise for assets, esbuild for building js. And finally dokku to deploy (and just doing daily VM images for backup)

https://mitchel.me/slippers/

https://unpoly.com

Single person company with a few products out now:

https://surplusci.com - Rentable dedicated CPU runners for GitHub Actions/GitLab CI https://ragtime.cloud - Hosted storage for Joplin the note taking application

> What is your tech stack?

- Front: Vue + NuxtJS

- API: NestJS + Typescript

- DB: Postgres

- Infra: Kubernetes + Ansible + Pulumi

- Hosting: Hetzner

> Why did you choose it?

- Front: Vue is less complex than React, NuxtJS enables SSR and pre-rendering which is ideal for SEO (not that I'm chasing SEO too agressively just yet)

- API: NestJS is the best implementation of light yet structured MVC I've seen for (spend enough time with wild Express/Fastify codebases and you'll want some structure), has a lot of concerns taken care of just about the same way I've (re)written them on various projects myself. Typescript because life is too short to not have a compiler do some of the work for you.

- Infra: I've paid the initial cost of learning Kubernetes so it's actually a really easy way to deploy containers and manage my infra (TLS certs, open ports, machines, virtual machines, etc) for me. Ansible is great for initial setup, Pulumi is great for managing big IaaS provider pieces (AWS Route53, SES, etc)

At this point I've actually built a set of reusable projects to launch SaaSes, and at this point what it takes for me to launch a new SaaS is copying ~3 repos, find/replacing and running make a few times.

I want to make that SaaS-launching setup a SaaS itself -- as a completed/perfect implementation would cut this down to only value changes in a single file, which I could easily make a web form and then people could launch their own things. That's far in the future though.

> Do you think your choices had any impact on your success?

It delayed launching quite a bit, but I'm convinced that my problems might lie in the markets I'm aiming for and products I'm making more than the technical choices.

The technical choices are on the fanciful side -- I could have gotten by just fine with Rails + Caprover/Dokku, but at this point that cost is paid so it's much more about finding traction.

My iteration speed is much faster now as I've developed a reusable set of repos, so it should be much easier to take more shots.