21
86 Comments

What tech stack are you building on and why?

Im interested to see what Tech Stack other hackers are building on.

I just started a new project, and I was torn between .net and Django, and settled on Django to get going. What went into your choice?
When Im working for a company, it's almost always been decided for me by the architect or manager. How do you choose?

  1. 9

    Rails or Django, every time. I used Python way before I used Ruby, hence using Django, but after spending a bunch of time with Ruby I've started to prefer Rails for most things.

    The answer is ultimately "the stack you know best that will get you moving quickest". Nobody other than other indie hacker types will really care about your stack :)

    1. 1

      What's your favorite thing about Ruby? Particularly in comparison to Python / Django.

      I've always thought of them as similar players in the ecosystem so curious what sets them apart.

      1. 1

        I'd agree they're pretty similar. Part of this is probably recency bias on my part, but the 'convention over configuration' edict of Rails means that there's a bunch of assumptions about how my project works that saves me defining everything myself and helps keep my flow going

  2. 5

    Front-end: Next.js, TypeScript, Redux, RxJS
    Back-end: Spring Boot (Java 17)
    Secondary back-end services: Node.js, TypeScript
    Database: PostgreSQL
    Hosting: DigitalOcean
    CDN: Cloudflare
    CI/CD: GitHub Actions

    This is my go-to stack because it's what I know and happens to be up to the task. Eventually, I want to be competent with AWS and use serverless tech where possible. But for now, I'm fine with wrangling droplets on DigitalOcean.

    1. 1

      I use SWR for data fetching but I am starting to miss the structure that Redux provides (even if it is more boilerplate).

      1. 1

        Yes, there is a bit of boilerplate, but I have a really good structure going. I'm also using Redux Toolkit and my own alternative to Redux Observable.

  3. 4

    Frontend Next.js, TypeScript, Tailwindcss
    Backend Supabase
    Backend secondary service Deno (Supabase edge function)
    Database PostgreSQL (Supabase database)
    Hosting Vercel
    CI/CD: GitHub Actions

    I expect these stacks to have the effect of reducing the sysytem operational load so that I can focus on business.

    1. 1

      I use Netlify functions.
      Serverless is the way to go for me.
      So productive!

      1. 1

        Netflify functions looks good too. I would like to try it sometime!

    2. 1

      How is your experience with deno.

      1. 1

        I should note that I have only used Deno with Supabase Edge Functions, so this is not an evaluation of Deno by itself.
        My experience has been building APIs with AWS Lambda using Serverless Framework.
        I especially like it's fast deployment. Additionally, I was surprised at how easy it is to develop with Typescript.

  4. 4

    Front-end: mostly React/Solid
    Backend: I built my own called Stackless (https://stackless.dev) that's far easier/faster at runtime/faster at dev time than anything else out there. It's basically a JS/WASM container (not Node/Deno, written in C++) attached to a datastore (RocksDB) in-proc with built-in real-time SSE. It stores JS types in the datastore natively so there's no database boilerplate. It also obviates the need for writing routing logic because the service/data/message types you write for the backend are transparently used on the front-end, thus, no API is necessary.

    see https://tinyclouds.org/javascript_containers for what I'm talking about re: JS containers. This isn't another docker/Kubernetes wrapper. It's truly cloud native, built like a real-time trading system.

    here's a high level overview: https://stackless.dev/documentation/overview

    1. 2

      So many questions and the docs and examples don't really seem to tell the full story. Hope you'll add some more information. Really sceptic about the security angle on that approach.

      1. 1

        Feel free to reach out to me at scott at stackless dot dev and I'd be more than happy to fill in any blanks (or respond here.) There's a lot there, true, but it's deceptively simple.

      2. 1

        When you create a new warp it generates a 192 byte user key it stores along with the warp's metadata in the account system database as well as a redis instance. When you run 'warp connect' it hardcodes that user key into the generated client code. At runtime, inside the browser, it specifies this user key to the WebSocket server (aka 'river') when creating the session. River sees if this key exists in redis, if it does, the session is established. If not, it's denied. This is secure, however, it's not perfect as there's currently no way to revoke the user key nor regenerate it. This user key based auth is pretty much how Firebase works except my keys are longer (not that it matters once they get a certain length, I suppose).

        Note: here's where it specifies the user key when establishing the WS session: https://github.com/stackless-platform/sdk/blob/d335e4c6a3c087694fba0645559a72ed7d2c0c83/client/src/internal/service/outerspace-client.ts#L33

        1. 2

          I was more thinking about auth and retrieval on the data store layer. How do you deal with large datasets? Partial retrievals and queries. Who can access which data? That kind of things.

          1. 1

            Note, with Stackless, the data store layer and the app server are one in the same. This system is designed for lots of small, efficient, idempotent calls vs. large result set retrievals with server-allocated result cursors and/or client-side caching.

            As the 'queries' is really just JavaScript that you write by hand (the service methods), you have complete control to return partial results. You could craft a persistent cursor-like object that refers to the last item you retrieved and pass that back when you want more. In general, this is an area where I'm waiting for customers to tell me what features they need that I don't provide as not all databases have in-built paging support much less partial document/blob retrieval.

            Presently, there's no granular access rights. If you have access to the warp at all, you have access to execute all service methods and modify whatever data the service is coded to modify. As before, this is an area where I need customers to tell me what they need so I can add it to future versions.

            1. 1

              It sounds like it's basically just transparent RPC calls (auth by a key, automatically marshalled) from the frontend to the services running on the backend? So in theory the service could even query some old-school data store?
              Would love to see a full real-world example (beyond the chat app).

              1. 1

                Automatic marshalling, with a type system shared between the servers (warps’ services) and clients. Additionally, said objects are remotely observable so you can watch a data object and receive all its changes made by other clients in real time even if that change is the object being deleted. Naturally, this must be used sparingly and intelligently but it’s a site to behold. In addition, service method calls act like they take data objects by reference: meaning you can pass a data object to a service method, make changes to it and see those changes get applied to the local object immediately after the method call.

                re: a demo, I’d be happy to have a zoom call with you to show you a React-based example. It takes about 5-10 minutes to get the “oh shit!” reaction from most people. If you want to do it yourself (less my showmanship): https://stackless.dev/examples/exercise-tracker

                When you're done building it, deploy the client’s build dir to Vercel or Firebase Hosting or whatever static host (or all, even), and run it on your local system too, you’ll see all of your browser windows (regardless of where they’re hosted) keep in perfect sync- even after cache clears and restarts.

                1. 2

                  I just got back to this - but the site seems down?

                  1. 1

                    Well I’m reworking the site and taking the platform open source in the coming weeks.

                    1. 1

                      Cool. Let me know once there is something to see again :)

  5. 4

    React, NextJS, TailwindCSS, and Firebase (for auth and database) works best for most projects for me.

  6. 4

    I'm typically only in these types of threads to simp for lisp.

    And today is no different.

    I use Common Lisp (SBCL for production, and CCL for development), with Hunchentoot as the basis for a custom web framework. I use postgresql as the database, Caddy as the server, and AWS for servers.

    To actually answer your question, though. I love programming and so most of my technical decisions are motivated by the selfish desire to have fun. I've written previously about why I believe lisp is a good choice for IndieHackers and startups, but, truthfully, I just really love using lisp.

    I've found that I perform better when I'm more engaged in the day to day minutia of larger projects, and having fun doing trivial things means that I can stay motivated for much longer than some other people.

    1. 2

      You just gained a follower, sir.

      1. 1

        Much appreciated, king 👑

  7. 3

    Great question!

    I've been wanting to build my own app for years but never did because I was nervous to tackle the security and login side of the equation.

    Keep in mind, I'm no rookie. I've got 30+ years experience as an enterprise dev, 15 of which were spent building websites behind a firewall.

    But still! I just never felt totally sure how to secure user data in my own app, so never even got started.

    Then I found Google Firebase with Angular and Wow! It solves everything. All of the administrative difficulties are removed, and I was able to spin up V1 with O-auth user authentication and data storage interaction in less than a day. Huge fan.

    I did have some experience with Angular and TypeScript prior to working on this project, which definitely sped things up a bit. Angular is an amazing tool, and well worth the learning curve.

    As for other parts of the app:

    It's a journaling app, so I used Quill as a drop-in JS text editor client. Google provides Firestore for persistence (which can store the data while offline and automatically syncs up when back online -- effin' brilliant). And Material for webpage UI and styling.

    1. 1

      Are you me? I have less experience but these are my exact same concerns. There is so much that I could do wrong, sometimes I feel stuck 😅

      1. 1

        So many times... I've built the beginnings of something pretty cool. Published first drafts only to find in a month or so in, the entire site was replace with porn or a strange shopping site. Scary for sure.

  8. 3

    Frontend: Next.js / React (UI wise I tend to use whatever, MUI, tailwind etc)
    Backend: Node.js with NestJS / Express for simple APIs or prototyping / Go (Echo)
    Database: PostgreSQL
    Hosting: Render / Upcloud / Hetzner

    I've also started to expirement with Cloudflare Workers (using durable objects mostly)

  9. 3

    Next.js with Chakra UI (and my own UI lib on top https://saas-ui.dev) is my setup of choice at the moment.

    I'm exploring https://wundergraph.com/ as my new API layer.

    1. 2

      Some feedback: As an indie hacker I like the idea of saas-ui but pricing throws it off for me. I would not pay $99 for 1 project only but would pay $150 for unlimited projects, think like chakra-pro or tailwindui - I know saas-ui is more but still...

      If I had a startup team I would just start off with better fit ui library and build the rest custom. I think you should aim for solo developers and offer them to save time with your boilerplate...

      1. 1

        Great feedback, thanks!

        It's a valid point and I have been considering this, but didn't want to give away too much as I believe the value is there.

        It is time to start experimenting with other pricing options though, so I might reconsider it.

        By the way, the 1 project limit is only for commercial projects. You can also keep using the license if your project fails and start a new one.

  10. 3

    We get a post like this every week we seems...

    Blazor, aspnetcore, mudblazor, bunch of azure stuff.

    Why? It's high performance, highly integrated and dev tools are the best. MSFT offers competitive solution to everything and well integrated second to none. You can't find that kind of quality or dev experience anywhere else. The downside is the MSFT name and some learning curves. But honestly, I find anyone not using it (or at least try it) ignorant these days.

    1. 3

      Agreed - dotnet core all the way for me - for all the reasons you said. The fact it's now open source and cross platform means I'll probably never bother with node.js again for my own projects.

      1. 1

        What's the advantage over node.js?

        1. 1

          Performance, first party libs... Actually what's the advantage of node.js? To me, it used to be smaller framework with lots of add-on instead of a huge monolithic like the old dotnet. Dotnet core changed that completely and works like node.js now

          1. 1

            Well the advantage of node is that is has the largest package ecosystem of all langs.

            .Net has definitely been catching up.

            1. 2

              I am a big fan of first party with good roadmaps so that’s another advantage I guess. I haven’t seen much major discrepancies between node and dotnet (else there to be a good business opportunity).

              1. 1

                For sure, maybe it's time I take a dive into .NET and see what it can do!

                1. 1

                  As IH, just stick with what you know best and move fast. Learning a new framework takes time. Just need to know that it is one of the options, it’s pros and cons. when it’s time to scale or rearchitecture, you can add that into consideration.

                  Like I default to blazor but when I do mobile, I default to swift/SwiftUI. Heck I default to paper and ppt for ui design even though I really like figma.

                  1. 1

                    Absolutely - I default to typescript, nuxt 3 and Vue 3.

                    I can move lighting fast in this stack.

                    The problem here is, if we don't branch out every once in a while (~5yr or so) our stack/langs becomes irrelevant and we miss trends because we're "doing what we know best and moving fast".

                    1. 1

                      In that case, you just need to know aspnetcore is there. They have good path to migrate from angular/react/vue (though vue documentation is a bit thin, but it's there).

    2. 1

      blazor server or wasm?

      1. 1

        depends on your use case. server side is faster to develop but might not be suitable for every use case.

      1. 1

        More like someone kept getting burnt on the latest and greatest stack/fad that ended up nowhere. One day just woke up to the fact that c#/aspnetcore is that much more better. Besides the usual performance, power, etc, I think one thing people don't mention enough is the duration of the support. Apple pretty much requires you to recompile and move to their latest api/framework. Android is all over the map. React was one of the worse in change api without informing dev (they are much better these days)....

    3. 1

      Sometimes I have to deal with it and them I am very happy when I can move away again.

      I never felt productive using MSFT/Azure stuff.

  11. 3

    I tend to go with frameworks that remove the most toil from creating an application, especially now where I don't have any successful launches or income coming in. I lean towards boring tech and the ability to crank out MVP's as quickly as I can.

    Over a year ago I surveyed the web framework landscape and walked away with Django, Rails, and Laravel being my main options. Tried each but ultimately liked Rails the best.

    I really don't think you can go wrong with any of these, but I went with Rails because:

    As you can see, non of these are really "technical" reasons but personal. Because if this isn't enjoyable at some level, then why are doing this? :)

    1. 1

      Never heard of the concept of a "One Person Framework" before but wow that's an Indie Hacker's dream!

  12. 3

    I've been using Flask as my framework of choice, mostly because it is my hammer of choice for APIs and web based projects. Its architecture is plugin based and allows more seamless integrations with new softwares. I also use Redis for background task execution and frontend is plain JS vanilla (need to make some improvements here).

  13. 2

    Elixir/Phoenix/Liveview/Tailwind

  14. 2

    Frontend: Angular
    Monorepo: Nrwl NX
    Backend: NodeJS + NestJS
    Database: MySQL
    Cache: Redis (AWS ElasticCache)
    Email: AWS SeS
    Storage: AWS s3
    Hosting: AWS EC2 + ECS
    CI/CD: Github Actions

  15. 2

    Frontend: Angular
    Backend: .Net 6
    Database: Mongo
    Hosting Frontend: Netlify
    Hosting Backend: AWS EC2 or VPS with someone like Fasthost
    CI/CD: Circle CI and Docker

  16. 2

    My current project (just web) I went Rails and I’m having a great time with it! Super easy to use and gets what I need done. I’m a mobile developer primarily so having this framework helps a ton when doing backend work.

  17. 2

    I wanted something I could build everything with. Like PHP but with JS, because that's where community seem to be moving towards. Initially started with Nocode (Webflow, Airtable, Integromat), now gradually moving to code:

    • NextJS (replaces Webflow)
    • Supabase, which is a PostgreSQL + extras like auth
    • Make.com (former Integromat) still using it for some automations/scheduled jobs.
    • Mailerlite, Mailersend for newsletters/emails
    • Considering Retool for internal tooling to replace Airtable.

    I am really curious to try Remix though and compare to NextJS thought. I am struggling a lot with forms and posting data in NextJS.

  18. 2

    Frontend: Angular
    Backend & Hosting: Firebase
    CI/CD: Github Actions / Cloud Build

  19. 2

    C++ & Qt6, mostly to get cross-platform and actually because I love both C++ and Qt. They are both high performance and Qt widgets can be customized for the looks to get a custom UI.

    Don't ask me why I didn't go with Electron, please.

  20. 2

    For my own projects, I'm building with a custom PHP framework and vanilla HTML, CSS, and JS for the frontend. Some of my work is also done in Node with custom code.

    I'm currently doing the 12 startups in 12 months challenge and open sourcing my startups. One of my biggest reasons for using PHP is because I want setup to be easy for my users and you can host a PHP project just about anywhere. With a lot of other languages and frameworks, hosting becomes much more complicated for people just getting started in web development. That being said, I'm really interested in Golang and Deno, so some of my later projects may also make use of those.

    For client projects, I typically use/recommend Laravel. Because Laravel is one of the most popular PHP frameworks, it makes it real easy to find hosting and also for my clients to use/bring on other developers if necessary.

    1. 3

      Pretty interesting! I was listening to some of the episodes with Pieter levels and he mentions how he just has "a php file and some css" and its made me consider if I am not massively overcomplicating my own solutions. I definitely need a bit more than what he is doing at RemoteOk, though. I need some type of user account management for my offerings but I'm trying to keep it as simple as possible.

      1. 1

        I believe he has user account management too - I know he uses SQLite so I'm assuming he is just using PHP session management for user logins (https://www.php.net/manual/en/function.session-start.php).

        Writing session management code from scratch may not be a good idea unless you are comfortable with it and understand the basic security concerns. User management isn't that difficult (it is just saving a cookie on the client and then matching that cookie up with either a session file or a session row in the database). But it can be real easy to mess something up or not realize you need some basic security if you haven't worked with it much (like hashing the passwords in the database, clearing out older sessions, using Secure Cookie Attribute, etc.).

        If you have time or your project isn't in need of too high security, it may be something you could try learning how to write from scratch (what I've learned over the years is writing from scratch makes it a lot easier to understand what is really going on behind the scenes and also makes things that seem really complex much easier to understand - there have been numerous times where I have built something from scratch and realized..."oh, that is what that other code was trying to accomplish - why did they make it so complex?").

        I haven't worked with Django before (I used Flask before expecting to really like it and walked away really unimpressed - I'm not sure if it just didn't match up well with the way I think or if my expectations were different, but I found it really frustrating to work with). I'm assuming Django comes with user management. If you are happy/comfortable with Django, that is probably a good decision.

        I would think through long term plans. Are you wanting to be able to bring other developers on board easily, are you wanting this to be more of a learning experience, are you wanting investors (they are going to want to see a respectable tech stack - Django would definitely be respectable), etc. Thinking through your long term plans can help spotlight the best framework for your use case.

        All that being said, I wouldn't spend too much time pondering tech stack. I would recommend staying as simple as you can. If you need to use something more complicated, go ahead and use it but see if there is a simpler way to accomplish what you are wanting and try the simpler way first. A lot of modern stacks are focused on getting large groups of developers on the same page at large corporations but for smaller shops and solo developers, some of these modern frameworks just provide a lot of unneeded complication.

        1. 1

          Thanks,

          Im definitely aware I shouldn't be rolling my own auth - however I do choose to manage my auth I will want to eventually add the ability to setup a subscription with multiple seats per for a client, and it got me thinking about how I want to build this out, and It got me wondering if this is easier in any existing frameworks.

          I appreciate the input!

  21. 1

    I used to work with Rails, but lately I use nextjs and hasura more and more. Loving it ♥

    I would still use Rails with View Components for data heavy stuff (AdminPanels etc).

    Also postgres and tailwind css!

    Ruby is awesome btw. Kind of missing it's expressiveness. But I think a strictly typed language like typescript prevents bugs and offers a great DX with linting and autocompletion.

  22. 1

    Use what you know!

    Frontend: React/Apollo
    Backend: Node/Express/Apollo GraphQL
    Auth: Firebase
    CI/CD: Gitlab
    DB: MongoDB
    Hosting: AWS

  23. 1

    I think the best tech stack will depend on the problem you're solving and who's doing the solving. But generally I think it needs to fulfill 3 things:

    • Dev Experience - it should be productive and enjoyable to work in
    • Stable - your tech stack should not break you or prevent you from building what you are trying to build
    • Scalable - your stack should have a clear path to scale if your app gets big

    Whatever stack fits those best for you is probably a good stack to try.

    The best stack that I've found for me is:

    • Frontend: Svelte / Sveltekit - Incredibly simple, wish all frontend was like this
    • Backend: C# + .NET - Battletested, fast, and C# is a beautiful language
    • Storage: Postgres - Stable, trusted, scalable
    • Hosting: Google Cloud (Run and CloudSQL) - Easy to use, relatively cheap, and ability to scale

    I run all my code in containers so it's easy to spin up / deploy to a dev laptop, production machine, or even switch cloud hosts altogether.

    I detail more reasons for each choice in: https://labs.hamy.xyz/posts/the-best-tech-stack-saas-apps-2022/

  24. 1

    Frontend: NextJS, ChakraUI, Bootstrap, Typescript
    Backend: Serverless Framework, ExpressJS, NodeJS, Typescript
    Auth: Auth0
    Database: MongoDB Atlas
    Hosting: AWS Amplify

  25. 1

    Front-end: Vue.js, Nuxt, Tailwind CSS and Tailwind UI
    Back-end: Node.js, Express
    Database: MongoDB Atlas
    Hosting: DigitalOcean or AWS
    CI/CD: GitHub Actions

  26. 1

    Serverless Nodejs on Netlify functions.
    It’s so productive you won’t believe. Once you got used to it.

    Maybe I will do a write up and a screencast about serverless if enough people are interested.

  27. 1

    It depends on what your goal is. Recently I switched companies and was introduced to Python for the first time. Instead of using the stack I already know, I decided to "learn something new", so right now I'm using:

    • FastAPI, Poetry, Pydantic, SQLAlchemy
    • Postgres
    • React
    • GitHub with GitHub Actions
    • Heroku
    1. 1

      I've started to play with the exact same stack(AWS instead of Heroku). Was curious what you think so far. Why not go all in on Python and just use Django + the templating system?

  28. 1

    I love these posts. It's cool to see how everyone creates.

    I wonder though...

    Which stack is the fastest?
    Which stack scales the best?
    Which stack is fast and scales well?

    I know a lot of this comes down to experience but there certainly will be stacks that are just BETTER.

    1. 2

      My reaction to these questions these days is: "what problem are you trying to solve and for how many people that right now are willing to part with money for your solution?" Not to "sell before you buy", I just think finding the right problem and solution are so hard that people tend to avoid talking about what that problem is and either talk about "tech" or about "features". Never about the epicenter of the problem/solution. I tend to hunt on IH for these posts and the replies. Don't tend to find much.

      1. 1

        I completely agree.

        I think, because it's our craft, many of us engineer first product builders get roped up in what we know: the tech.

        Being an indie hacker requires more from us though. As you point out, finding the right problem and right solution is where our focus should really be.

  29. 1

    It really depends on what you're comfortable working with.

    I have chosen the full javascript approach (VueJS + NodeJS) just because I like to keep things simple and MySQL for the database just because it works.

    Don't worry about what tech stack to choose, all you need to do is, just start. :)

  30. 1

    Next.js, Chakra UI, Firebase (Auth, Firestore, Storage, Analytics)

  31. 1

    I have my own SaaS boilerplate in Symfony/PHP (getparthenon.com) so for my SaaS' I use that.

    But I choose that framework because it would fit in with the type of customers I wanted for the boilerplate. In PHP you have Symfony and Laravel. Symfony has the rep for being for larger applications and Laravel for smaller ones. THis is because large in-house teams use Symfony and agencies use Laravel. I want larger inhouse customers and mines is designed to solve problems they experience.

    For my current SaaS which isn't even in public beta yet, which is a live chat system that doesn't need cookies and uses slack. I went with Parthenon for all the SaaS stuff. Then for the chat server, I used Go. it has good concurrency, uses low memory, and most importantly, I like coding in it. That is a major reason I choose my languages and frameworks. For the database I have PostgresSQL for the main SaaS stuff and then ClickHouse for the analytics (My SaaS will provide you web analytics, I just need to work on all the dashboards but the data is there) The databases are where you need to spend time figuring out what one actually solves your problem in the best way, in my experience. If your database can scale your website can scale. Nearly every time I've seen a production system have trouble scaling it's because of its database. They used the incorrect database for their data model.

  32. 1

    Front end: React
    Backend: Java

    For an enterprise saas software

  33. 1

    Nextjs, tailwindcss, planetscale.

  34. 1

    Just use what you already know or are most comfortable with. For most indie projects the tech stack is quite irrelevant as you shouldn't need to think about scale etc. Keep it simple, don't over engineer.

    The more different tech you throw in the bowl, the more you have to maintain and have to keep up with.

    Personally my go to is an old-school monolith using Elixir/Phoenix with SQLite or PostgreSQL if a database is required. I'll also add Tailwind to move quickly.

  35. 1

    URL: git18n.com
    Tech stack: NextJS for frontend and backend (API routes).
    Deployment: DigitalOcean's App Platform with hosted MongoDB.
    Advantages: Fast development with everything in one place.
    Disadvantages: Rigid structure (I would consider doing API endpoints completely separate next time).

  36. 1

    I am using golang to build https://github.com/newbeelearn/sserver.
    I like golangs approach of having everything built in single binary it makes lot of operational headaches of installing libs, configuring env etc. go away.
    Lot of errors are caught during compile time which makes it safer to use than languages that don't have types.

  37. 1

    We're building https://tolt.io with the MERN stack, mainly because that's what we're familiar with. But at the end of the day, it doesn't really matter, right? :)

  38. 1

    I'm dog-fooding my own framework Neuman which is a low code platform I built. So far it's been real good barring a few hiccups.

    But I usually find a stack that I can build quickly with. If I wasn't using Neuman, I'd be on vue + express js + postgresql.

    1. 1

      Do you have a link to Neuman? I’d love to check it out

      1. 1

        It's https://neuman.so. But it is in a closed beta stage. I'll be building a few SaaS apps (for marketers/agencies etc.) myself before releasing it in public.

  39. 1

    This comment was deleted 10 months ago.

  40. 2

    This comment was deleted a year ago.

Trending on Indie Hackers
How I Launched My AI Startup with a Warm Email List and Zero Marketing Budget? 27 comments What you can learn from Marc Lou 19 comments Here's how we got our first 200 users 18 comments Software Developers Can Build Beautiful Software 10 comments Worst Hire - my lessons 8 comments Transforming Habits: What I Learned from 90+ Days of Regular Workouts 7 comments