
Ask HN: How much should I charge for a simple CRUD app? - dariuscosden
Hey guys, I&#x27;m a new web app developer who codes mainly in React and Python. I have an opportunity for a booking website and I am unsure how much I should charge. Here are some details of the app without giving anything important away:<p>The app needs to have a fully functional booking system, reviews, payments and monthly subscriptions, user dashboards and abilities to change settings, optimized for conversions &amp; event tracking.<p>The design is already done, so I would need to only build the back-end and copy the designs that they already have. This app would be built from scratch using a custom framework (Flask).<p>I expect this app to take around 200-250 hours to complete at my current skill level. The thing is, I am a relatively new developer and my portfolio isn&#x27;t very big. I know I can build this app as I&#x27;ve done similar projects in the past, but they are taking a risk with a new developer. I assume that has to be factored into the price.<p>This would be a complete app built from scratch, only being aided by the designs and layouts already made.<p>I have $30&#x2F;hr in my head. People have told me for an app of this caliber, that is way too low. Is it? What would you recommend?
======
jakobegger
It's been a while since I have done web development, but to me it sounds like
this is a project that will take a year, and you'll never be more than 50%
done because the requirements will keep changing.

My recommendation would be not to agree on a fixed price for the whole thing
beforehand, because there are too many uncertainties.

First, come up with a rough timeline for the project. Split the project up
into smaller parts.

Together with your client, assign priorities to the parts (eg. payment
integration: highest priority; user dashboard: lower priority).

Then pick one or two of the most important subprojects, and make a detailed
quote for that part. Build the first part, charge your client for it, then
build the next part.

After each part is built, reevaluate the timeline and plan for the next
subproject. As you work on the project, priorities might change. If you do it
a step at a time, you can adjust to changing circumstances.

------
saluki
Make sure you have a tight scope, have a note that features beyond that scope
will happily be quoted and approved by them as an additional milestone/fee.

Break the project up in to milestones.

I would move your estimate up to 300 hours (or more if you think they have the
budget for it). And break it in to 10 milestones, over a time of 10 weeks. (or
2 week milestones if you've worked with them before, and they pay reliably)

I would probably not show hourly amounts in your estimate but I would use at
least $50/hour for your quote/estimate for total fee of at least $15k.

Work through the project milestone by milestone, you complete a milestone,
setup the app on a test location, they review that milestone, give feedback
and pay for that milestone. If you have worked with them before you could go 2
weeks at a time if you/they don't want weekly invoices. The important thing is
you don't do too much work without them seeing it, testing it and paying for
it. That way you are both happy with the project.

Use stripe for payments/subscriptions.

I know you're mainly React and Python, and considering Flask but I would check
out Laravel (it has Laravel Cashier built in for working with Stripe
Subscriptions, there is also Laravel Spark (SaaS in a box using Vue for the
front end). These could save you some time.

If you can build it don't discount yourself, there are lots of seasoned
developers that would have trouble with this and you will too, you will bear
that cost in extra time figuring things out that you didn't expect to take you
very long.

Include a monthly fee for maintenance, updating the framework as new versions
are released, automated backups, etc. This shouldn't be a non-trivial amount.
Maybe set it up as an annual maintenance fee, include it in your quote for the
first year, and then invoice them after the first year.

Good luck with your first large app.

~~~
dariuscosden
Thanks for taking the time! That milestone idea is a really great one
actually. It minimizes the risk of conflict or dissatisfaction a lot and I
really like it.

They already have a website and want to completely switch over to something
new with a brand new design and all. They already have existing clients and
it's all on stripe already, so that's good. I just have to set it up on my end
via their API.

I looked at Laravel but it's PHP. I know little of PHP. I mean, I could figure
it out but there is a deadline for this project and I feel my time would be
better spent working with what I already know (especially since I've built
payments/subscriptions through stripe specifically using Flask and I didn't
find it too complicated).

I am expecting that the extra time it would take me to learn an entire new
framework would be more than the time it would take me to figure out how to do
it in Flask.

Thanks for the maintenance fee tip. I also wasn't too sure how to structure
that but it will be included in the quote for the first year.

~~~
saluki
Doing milestones prevents them being unhappy with the app when it's complete
and you unhappy because you aren't being paid.

Stick with what you know, was just throwing it out there.

y, it's important to keep the framework updated, and things running properly.
Plus gives you a nice recurring fee.

Good luck.

------
tucaz
What you are saying is that this whole money making machine is going to cost
them around 7500USD out the door?

I’ll pay you double if you can do everything you say with the quality I
believe you are saying this is going to have.

What I’m trying to say here is that this is just to good to be true,
therefore, not realistic.

If an application like this, with all these optimizations and knobs cost as
low as this and be complete as this, people wouldn’t spend hundreds of
thousands of dollars on developers.

~~~
dariuscosden
So I haven't told them any price yet. I've just been coding for the past 2
years and only now feeling ready to take on professional projects. I'm new at
this I don't have experience with prices and what not.

Check out [https://www.letsconvert.app](https://www.letsconvert.app). I built
all of it. Took roughly 250 hrs to do, but I spent a large part of it learning
stuff like Stripe payments and picture conversions. This is the quality I can
do.

The project is in beta testing but is fully functional. Although, there have
been times when the server (PythonAnywhere) fails on a request due to a
database error on their part. I am currently working with them to fix it.

If that matches the quality of work you thought I could deliver, I'm open to
hearing about any project you might have!

------
jacobyoder
"People have told me for an app of this caliber"

Also, that's not really a good yardstick to use. Bigger issue for you is...
you. Even without looking for outsized "profits", you have living costs.
_Assuming_ you work in the US (or similar western-ish country), $30/hr to
provide the level of professionalism you'd want to provide is not enough. For
the project: adequate time/money for meetings, travel, equipment, tools,
testing, documentation. For your operation - time/money for dealing with your
taxes/finances, investigating any server stuff you need to do, any other
miscellaneous stuff...

On 'hourly' \- I typically, use between $100 and $150. I go less sometimes if
certain criteria are met (history of client paying on time, largish duration
of project, interesting space to learn new skills and meet new people, etc). I
do _not_ bill for 5 minute meetings or 3 minute emails. I usually don't charge
for travel time (driving 30 min for a meeting). If I need a $50 service or
tool for the project, I'll buy it, if it helps me get the project done. I do
not bother adding on misc line items like that, as in the majority of cases,
these tools/services just make me better at my craft, and possibly can be used
in other projects later too.

Higher rate (project or hourly, whatever) give you the opportunity to budget
to get better - again, tools, or videos, or conferences to meet specific
people, etc.

Assuming a western country, look to budget for _at least_ $60/hr, regardless
of your experience level. The rate _should_ help you take your own process and
your own image of yourself more seriously. Missing a deadline may be easier
for some people who say "well, they're only paying $25/hr". Treat everything
as if it's high priority and urgent, and charge accordingly. Then deliver on
that.

------
smt88
Don't charge hourly. It's going to cause friction and disappointment on both
ends. Estimate how long it'll take you and give them a flat rate.

200-250 hrs is wildy optimistic, especially for a new developer. I built a
booking system as an expert developer, and it took longer than that. You
should at least double your best guess at a time estimate.

> _they are taking a risk with a new developer_

They, and you, shouldn't take this risk with sensitive data and payment info,
unless you plan to have it reviewed by a security pro.

~~~
dariuscosden
Well, I built a picture converter from scratch in 250 hours.

It has a fully functional conversion system converting images to 9 different
formats, it has a payment system and monthly subscription system through
Stripe, it has its own custom REST api build from scratch to give access to
other developers to use in their apps, and it has conversion tracking and
measures in place to prevent abuse, to the best of my ability.

The above is why I feel confident about this project as it is nothing I
haven't seen before.

I do agree about the sensitive data and payment info. Would that still apply
given that I immersed myself in security for this specific purpose and do not
actually keep anything on server? Stripe handles everything and it's all
carefully encrypted. Maybe I'm missing something.

And yes, this will be a flat fee. I'm trying to get to a flat fee based on an
hourly estimate + rates. In that regard, would you have a recommendation?

------
whb07
No way all this takes 200 hours. If your gut is telling you 200ish I’d go
ahead and double that estimate. I don’t doubt your skill and confidence, but I
do doubt your time estimate and management skills. That’s a whole different
beast that comes along with more experience!

~~~
dariuscosden
Fair enough. I might be way off. I am basing this estimate on a very similar
project I did that took the same amount of time and involved
payments/subscriptions/client management, etc.

Although similar, this may very well end up surprising me. I am very curious
how long it will actually take.

I will include a higher hour estimate in my quote, as you and others have
recommended. Thanks!

~~~
whb07
You keep referring to your image converter project as a reference point, but
if it’s just a single page form that does the converting and nothing else
that’s substantially less than the project you’re talking about. Not only
that, but the work required to extend Flask that much is going to drive you a
bit crazy from time to time.

Best of luck!

p.s ~id check Django if I were you to simplify a number of things for you.

~~~
dariuscosden
It is simple in essence yes, but it's more than a one page app. Theres a lot
more that went into building that app!

Definitely am looking into Django as well. I built stuff with it in the past
and am trying to figure out which one of the two to pick for this.

Thanks for the advice!

~~~
pydeveloper22
Hi,

Just checked out a couple of your projects on your portfolio site. Although
simple they were looking clean and neat. I'm an aspiring python developer and
was wondering if you have any advice on how did you go about your learning
path for web development? Did you start with learning the basics through books
as I'm doing before dabbling with the frameworks? Any help is always
appreciated? Thanks

------
potta_coffee
$30 is way too cheap. I charge $50 to do light work for friends and
acquaintances, and that's too cheap. My rate for serious projects is around
$75, and it's that low because I'm not on the coast and I'm working with local
clients.

~~~
dariuscosden
I'm starting to get it yes. Thank you for the recommendation! I will
definitely go for a higher price.

------
BjoernKW
Many important aspects about estimation, hourly rates and breaking such a
project down into smaller, more manageable parts have already been brought up
in this thread, which is why I'd like to offer a different angle on this, i.e.
value-based pricing:

What would this 'simple' CRUD app be worth to your client? Is it possible to
quantify the value this app will generate per year, e.g. by the client's own
projections?

Is it a new app or will it replace an existing one? If the former: What are
the revenue projections? If the latter: How does the client expect this new
application to improve upon the existing one?

In both cases: What are the alternatives? Could the client use WordPress or an
off-the-shelf backend-as-a-service product to achieve the same outcome -
albeit at a perhaps lower quality, with less customised behaviour and maybe
even at a higher price?

Asking these questions will allow you to get a much clearer picture about the
project than you'd be able to do by merely estimating your own cost.

Value-based pricing doesn't mean that you charge your client the value the
finished product prospectively will generate, though. It's really about
changing the premise from development work being a cost centre to something
that adds value to an organisation.

This can make a huge difference in both perspective and perception.

Let's say by asking your client these questions you both come to the
conclusion that the product will generate $100,000 for the client over the
next 3 years and buying and maintaining an off-the-shelf alternative will cost
$50,000 during that period. You'd then be able to quote - for instance -
$30,000 and create significant value for the client, both in terms of the
potential revenue these $30,000 afford the client and the costs saved compared
to a competing solution.

This approach might not be as straightforward and more difficult to achieve
than the hourly billing one but it's more honest and allows for more
sustainable business for all parties involved.

Remember, what the client actually wants (or should want) is not your time but
the product you'll be able to create. Framing this product in terms of time
spent rather than value created gives rise to all the wrong incentives.

~~~
jacobyoder
> Framing this product in terms of time spent rather than value created gives
> rise to all the wrong incentives

Mostly agreed, however, when you leave the determination of the value created
in someone else's hands, other wrong incentives come up. And... the value is
often reliant on execution of other areas of business outside your control
(support, marketing, pricing, etc). I can do the same project for 2 companies
- one will struggle to get any value from it, another will get millions.

~~~
BjoernKW
I get your point. However, is a client who tries to play down the value you
create for them really the right client? If what I can contribute has so
little value to the client why would they need my services in the first place?

As for vastly different execution on the client's part: Yes, that's why it's a
value projection and not a revenue or profit share model.

------
simplecomplex
The price is what people will pay for. What you charge should depend entirely
on the clients budget and competing bids. You should charge as much as they
can bear.

------
cimmanom
Charge based on business value provided.

In terms of minimum rates, expect 50% of freelance income to go to overhead
including taxes and expenses and (if you’re in the US and this is your main
gig) health care.

And that your billable hours will be no more than 30/wk even if you’re doing
this full time (once you factor in dry spells, vacation and sick days, and
time spent on administrative and account management tasks.)

------
davismwfl
How much experience do you have? Have you built something similar before?
Where are you located? Where is the client located? Are you to be on-site or
is this all remote? How large is the client?

Your location determines pay ranges, clients location & size determines their
comfort & expectations with respect to costs. Remote or on-site determines
costs of delivering the product.

There are other factors too, but those get the basics covered.

~~~
dariuscosden
2 years total of programming, the last year being the year I seriously
committed to programming full time.

The client is a one year old startup with a few tens of thousands in sales
since launch.

I have built a picture converter from scratch that involves payment
processing, client settings management, email capturing, so I feel very
comfortable being able to do this. This one is live and online.

Other than that, my experience is simply spending the last year and a bit of
the year before learning Python, React, Redux and building projects with them
but not releasing them all yet. It's not a ton of time, but I learn very
quickly and don't see this potential project as that big of a challenge, given
I've seen and done most of this stuff at least once before.

The client and me are in Canada and this is all remote with a few progress
update meetings here and there.

~~~
davismwfl
Cool. A few comments with all that in mind.

Contracting rates in Canada are not the same as the U.S., but my best estimate
would be probably in the C$50-75 at the low to high end given your experience.
$30 is a little too inexpensive, but to be fair $35-45 might be a good
starting point for you to get some experience and raise your rate for the next
gig. That is if you need to do hourly. I personally disagree with hourly and
prefer weekly rates, or for longer gigs monthly even. It takes away the hours
being the issue and makes results be more the focus. I would _not_ flat rate
anything given your experience level right now. Not that you are bad, but you
need more time to gain experience with interpreting peoples requests for what
they really mean vs what they say. In addition, estimating is hard as hell
even for people with 10+ years of experience so it is a hard thing to do
unless you have serious scoping and change management controls in place for
flat rates.

A complete app like this is likely more like 3-4 man months of effort
depending on level of sophistication and 3rd party component usage. So that is
more like 450-600 hrs, including writing all the tests and client testing etc.
The MVP should be done pretty fast, and if the UX is already done and in HTML
than I'd say you could cut a decent amount of time off this.

While you feel pretty solid and comfortable in your skills, I would just be
careful of the dynamic nature of a small company and changes they keep
shooting your way etc. It can really chew your time up and you have to be
super diligent about telling them this and pushing back or getting more
scope/money for the extra work/changes. This is the biggest risk IMO, assuming
you have all the skills to do all the work which I have no reason to question.

No matter what, good luck and I hope you kill it!

------
dyeje
You think you're going to knock out a booking app with those features in 5
weeks? That's wildly optimistic. Charge a reasonable hourly rate (at least
$50), do not do a fixed bid.

------
mrassili
Hi, can we talk ? I have some questions for you. My email is :
mrassili@aol.com

~~~
dariuscosden
emailed you!

------
jacobyoder
"The design is already done"

I've heard this one _hundreds_ of times over the years, and it's actually
never been the case. Ever. There's _always_ some functionality question that
the design creates/raises/highlights which often becomes a stopping point
until a hard decision is made.

I was handed a 240 page mockup - team had spent _weeks_ working on this, with
a skilled team of design professionals. I was told "everything's been thought
of - just make this (pixel perfect!) in to a web app". Well, basic things like
"these select box and radio button together lead to 11 different combinations,
3 of which are mutually exclusive scenarios. How should we deal with this?
Disable the items in that case? Or show an error to the user? Both? Neither?
Should we log that people are trying those combos (so the business process
could be adjusted to accommodate that expressed need)?"

"Dude, we've already planned it all out - you don't need to think about this,
just implement it - all the hard work has been done. These people know what
they're doing."

With all respect to the talented design folks out there, sometimes "design"
people are just putting buttons and boxes in to photoshop. Just one example I
dealt with last year: in 240 screens, site shell wasn't consistent in use of
fonts between screens - step 1 of 7 had 12 pt font in the 'step X of 7' area,
step 2 had 11 pt font, step 3 had 12, step 4 had 10.5,.... So anyone looking
at an individual process I'd put together would take 'step 3' and say "this
isn't exactly what the design team put together" "Fixing it" would then get
feedback from someone else indicating "the font changes when I move between
the steps - this is bad".

Toggle slider to "enable" X and "enable Y" (two services), and a pulldown at
the top also indicating if you want "X" or "Y" or "X and Y". Pull down X, "X"
toggle slider is enabled, and "Y" toggle slider is disabled. Pull down Y, the
reverse happens. If you toggle X on, the "Select X" from the pulldown is
selected. If toggle Y is on, "Select Y" in pulldown is selected. If X and Y
are both toggled "on", 'Select X and Y' is chosen. If X and Y are both toggled
off... what should happen to that pulldown? ("it's gotta be a dynamic
representation of the state of those two options" \- but there's only 3
options and 4 possible states) ... reply was "well, they can't do that - it's
not possible for those to happen". Except... that's the state the screen
_starts_ in.

This was two examples of 8-10 "issues" I found in just a few weeks. "Winging
it" \- just making an basic educated "I'll choose a sane default in the
absence of guidance" \- every time that path was chosen, it was the 'wrong'
choice (even when a right one was never given).

So... yes, minor rant, but "the designs are already done" \- by other people,
especially those who will not bear any cost of actual implementation....
_TRIPLE_ your time estimate. From the already doubled one. And go buy some
Dale Carnegie material to brush up on winning friends and influencing people.

