5 ms·
Ask HN: How much should I charge for a simple CRUD app?
Hey guys, I'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:
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 & event tracking.
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).
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't very big. I know I can build this app as I'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.
This would be a complete app built from scratch, only being aided by the designs and layouts already made.
I have $30/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?
- davismwfl 8y agoHow 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 8y ago2 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 8y agoCool. 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!
- smt88 8y agoDon'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 8y agoWell, 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?
- mrassili 8y agoHi, can we talk ? I have some questions for you. My email is : mrassili@aol.com
- dariuscosden 8y agoemailed you!
- tucaz 8y agoWhat 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 8y agoSo 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!
- potta_coffee 8y ago$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 8y agoI'm starting to get it yes. Thank you for the recommendation! I will definitely go for a higher price.
- saluki 8y agoMake 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 8y agoThanks 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.
- whb07 8y agoNo 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 8y agoFair 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 8y agoYou 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 8y agoIt 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 8y agoHi, 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
- simplecomplex 8y agoThe 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.
- jakobegger 8y agoIt'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.
- BjoernKW 8y agoMany 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 8y ago> 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.
- cimmanom 8y agoCharge 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.)
- dyeje 8y agoYou 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.
- jacobyoder 8y ago"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.
- jacobyoder 8y ago"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.