Hacker News new | ask | show | jobs
by stanislavb 857 days ago
Not exactly a resource but more of an advice - learn software development. Unless you are familiar to some extent, you will always be dependent on a competent software engineer, and that will make it much harder to build a lifestyle business.

Second advice, use Ruby on Rails or Django as a web framework and don't follow after the complexities of JS and other newcomers. Phoenix (Elixir) is awesome but that will require much more efforts and expertise compared to the established and time-tested Rails and Django.

Good luck!

p.s. I'm writing this as a person managing a lifestyle business (LibHunt & SaaSHub).

p.p.s. I'd also recommend getting into the IndieHackers community for inspiration and shared experience.

5 comments

Contrary view. Your success running a lifestyle software business is likely to be far more dependent on your marketing skills and efforts that what what tech stack you use.
True, but here lies thus the paradoxical thing about tools: a good tools is one that stays out of your way when you want to do something, while a bad tools is one that requires you to focus on itself instead of the underlying objective.

Thus, a tool is the least important part of a project, while choosing the right tools might be one of the most important decision of a project.

The OP isn’t making a point about the software stack insomuch as they are making the point that your developer has you by the short hairs if the stack is too specific or if you have no idea how anything works. Use something that someone else will have a fighting chance to take over when the day comes that your developer gives you two weeks notice. And be sure to document everything.
Yea, but once you’ve solved that you’re at the mercy of the whims of your software engineer.
The right tech stack will not bring success, the wrong one will doom it.
So wouldn't it follow that choosing a low effort stack translates to more time being available for the real task of marketing and business activities?
I was being a bit contrarian. Obviously choice of tech stack is important. But, in my experience, people obsess too much over that and sepnd way too little time thinking about marketing. Also, choose reliable 'devil you know' tech over the latest flashy framework.
I don't want to hijack this thread, but what does Django do?

I ask, cause I have a service that is a Rust backend (kind of specialized in what it does) + a SolidJS frontend... But I've seen a potential area for growth, I didn't imagine at first, and that would be stuff like user profiles, authentication, and managing stuff. And I really don't want to cut all this more "CRUD" like stuff in Rust and an SPA. I don't know Ruby, but have done some rather large Python projects in the past, just never ventured into Django land.

Out of the box Django offers: authentication, database management and migration, a web server, a template engine, URL routing, and probably more - pretty much everything an app needs in a single framework.
Django also has some GIS tools builtin if you need to do anything with geographic data. It has a solid library of error handling, messages, and web security tooling you will probably need, and, the third party ecosystem, both Djano specific modules and the wider Python ecosystem are very powerful.
Django has all that built in: auth, users, CRUD.

It comes with a built in admin portal that lets you work with all your data in list views and detail views, with sorting, filtering, and searching. For a lot of scenarios you can get away with just using the admin portal (like we have accounting people log in there and import CSV files, etc).

It’s great for managing a data model, setting up a database schema and managing the migrations for you. And once that is setup it’s pretty trivial to enable API endpoints to do all the CRUD-style stuff, if needed.

Nothing against Django, just suggesting another option: Laravel offers the same "out of the box" tools that Django does. Django is built with Python, Laravel with PHP. Someone will be along in a moment to start the flame wars about why one or the other or both totally suck, but for your purposes it's most important to choose the language and approach that will be most comfortable to you.
Yeah, these days I'd put Laravel and Rails pretty toe-to-toe on features and productivity. Django is good but it's not in the same tier, imo.
> Django is good but it's not in the same tier, imo.

In what ways does Django lag behind Rails or Laravel?

The ecosystems.

Laravel's first-party ecosystem, both paid and free, on top of the framework is quite widespread. This also brings a lot of people to the party on the third party side with excellent tools like Filament and Ploi. I don't see this nearly as much for Django. Have a look under the Ecosystem tab on the Laravel homepage. Within a few `composer install`s, you can get:

- Local dev environment (i.e. actually running the app): Herd, Sail

- Stripe/Paddle support: Cashier, Spark

- Starter kit scaffolds including all the usual auth goodies (e.g. 2FA): Breeze, Jetstream

- View layer alternatives to plain old HTML views: Livewire, Inertia

- API and Social logins: Passport, Sanctum (for SPAs), Socialite

- Fulltext search: Scout

- Robust APM: Pulse, and Telescope on dev

- Admin panels: Nova, and 3rd party Filament

- Websockets: Echo, Reverb (coming soon)

- Infrastructure, both traditional and serverless: Forge, Envoyer, Vapor, Ploi

- Completely alternative PHP runners to replace php-fpm: Octane with Roadrunner, Swoole, or FrankenPHP

- Automated browser testing: Dusk

You can find Django packages for these things too, but I struggle to see many of them coming from the actual Django team. I also think the Django Admin solution is very neat for getting off the ground, but doesn't seem as robust as Nova or Filament.

Lastly, call it my bias, but Python's overall lacklustre developer experience with package and environment management (compared to Composer and Ruby gems) also affects Django as a result.

Thanks so much for the thorough reply! Especially including ecosystem details.
Also PHP has Laravel Spark[0]. They basically bootstrapped a SaaS but for a price. Not sure if it's worth it, but it's from the guys who made Laravel, and everyone only has good things to say about that so...

[0] https://spark.laravel.com

Phoenix is just as easy as Rails to get started and now with LiveView, easier than needing to know Ruby and JavaScript. It’s a secret weapon for indie hackers.
I've tried it. I've built a few products as well. Production level. Again, it's amazing; however, you simply can't beat the usefulness of ActiveRecord (and a number of other gems) with Phoenix.

Again, I'm saying this within the context of data heavy web apps.

ActiveRecord is my least favorite part about Rails. And it’s such a foot(machine?)gun.
Come on. I am a huge phoenix/elixir fan - I am procrastinating from elixir dev writing this very comment - but this is not even close to true. It is a big learning curve. It's absolutely worth it, IMO, but there is no way it is as easy to get started with as rails. Not even close.

It's my framework of choice and a secret weapon indeed but let's not pretend it's rails-easy. It's just not.

Difficulty with Elixir is logarithmic, with Python is exponential. As the product accretes features, Python/JS tends to require much more expertise to deal with all the corner cases. Elixir keeps it long term maintainable. If you wanna explode and sell out, go for the early ease. If you plan on owning it forever, I'd say the upfront investment is more than worth it.
I don't disagree. I agree it's worth the extra effort up front if you're expecting the code base to last. And the exponential complexity you mentioned, well, that's basically why I left Rails. It can be designed well.. but you're going against the grain, and unless the rest of your team is totally on board, it's a struggle.

That wasn't the question though. The question was, which is easier? And let me tell you, you can't beat User.first. Even typing this comment I'm proving my point as I can't remember how to do that in ecto. User |> first() |> Repo.one()? after importing and aliasing a bunch of mysterious (to the beginner) things?

Right tool for the job. If i was building a temporary app, i'd use rails and make very very sure everyone was on board with the idea that it was temporary. I might even sabotage it so it couldn't be used long term (us evil old rails devs have.. tricks). Proper long term infra? elixir.

I also don't disagree with anything you said, except the idea that difficulty is not time dependent. Easy short term and easy long term are different things and that's the point I'm trying to make. Elixir land documentation is top notch and having to look things up is not a bad thing. Why would memorizing how to get started on something be good unless you're greenfielding projects every other week?
Why remember, between the Elixir language tooling and code copilot, that sort of thing writes itself. Or you can even add a helper “one” function to handle that for you.
As a JS developer, I second this. I love node, react and typescript, but they're great tools to build very complex web apps — think Figma or an in-browser IDE.

If you're building a typical CRUD app and don't have a VC-backed budget, just use a Django or Rails.

I’m a TypeScript developer. Don't understand why it requires complexity? You can just as easily build crud APIs in TypeScript.
Of course you could, but it doesn't mean you always should. Typescript doesn't have a kitchen sink framework like Django or Rails.
Exactly what part of it is a lifestyle business if you don't write the software yourself ?

That's a recipe for a very non-lifestyle business