Nie miałem za sobą zbyt wielu komercyjnych projektów, ale po pierwszym nauczyłem się, że trzeba rządać od klienta szczegółowej dokumentacji tego, co dokładnie chce. Później wychodzą jakieś kwiatki, a że to to nie pasi, a że tego i tego nie ma, a niby w domyśle ma być...
Ze stroną wizytówką to jeszcze da się na oko ocenić, bo jest bardzo dużo ofert wykonania stron wizytówek i widełki cenowe są dość jasno opisane przez rynek. Co innego w przypadku "zaawansowanych projektów". Tutaj taką specyfikację typu "aplikacja ma pobierać dane z kilku sklepów internetowych i porównywać ceny produktu" można sobie o kant d*py potłuc, bo potem tylko frustracja po stronie Twojej i klienta, że klient chciał coś innego a dostał coś innego i zyskujesz złą opinię mimo, że tak na prawdę nic złego nie zrobiłeś. Od czasu, gdy dostałem taką specyfikację i podjąłem się oraz poległem, zawsze proszę o szczegółową specyfikację, na prawdę szczegółową. Wolałem poświęcić 3 godziny na rozmowę z klientem (który całkowicie się nie znał na programowaniu) i pytanie o ilość i nazwę inputów w formularza, formę prezentacji danych, a nawet wersję PHP, żeby potem nie było jakichś niedomówień i lamentu po ktorejkolwiek ze stron(i od tamtego czasu nie mam zbyt wielu projektów komercyjnych, zwlaszcza od obcych, ale przynajmniej śpię spokojnie).
Ale wracając do Twojego pytania, to projekt wycenia się na podstawie ilości godzin, jaką zajmie nam zrobienie tego projektu (i w przypadku freelance) pomnożeniu tego przez płacę godzinową, np. 30zł. Aby umieć ocenić, ile czasu zajmie nam napisanie czegoś musimy siła rzeczy napisać coś podobnego. W zależności od tego, czego zada klient, pisanie np. systemu logowania może zająć godzinę, a może zająć 3 godziny, czy 5 godzin jeśli zechce sobie aktywację przez SMS i inne szmery bajery. Szczegółowa specyfikacja to podstawa wyceny, koniec, kropka.