Sto se tice navedenih karakteristika, to je ok, samo kad budes pricao sa programerom, razradite obavezno tacno detalje, sta hoces da korisnik daje od podataka pri registraciji (obrati paznju i na zakone o cuvanju podataka o licnosti), sta oglasi trebaju da sadrze, ima li nekih i kakvih ogranicenja, itd, itd. u sitna crevca. Naravno, mozes izvesnu kolicinu tih stvari prepustiti i njemu/njoj ali nemoj posle da ih krivis ako se ne poklapa sa tvojom zamisli (i plati ih za menjanje ako moraju da menjaju ako im nisi u startu rekao sta tacno zelis).
Za upload fotografija ne brini. Ako hoces da im se radi promena velicine, kazi "hocu da se radi promena velicine". Ako jos zas i na koju velicinu, kazi i to. Za algoritme ne brini, to vec postoji implementirano u raznim komponentama z amaltene svaki jezik pa ce taj znati ili naci sta mu treba. Ako ne ume, nemoj mu ni davati da radi, to nije komplikovana stvar.
Sto se baze tice, u startu je manje vise svejedno. Generalno tu idu neke kombinacije sa programskim jezikom/platformom. Ako se radi .NET stack, tu obicno ide MS Sql Server, uz Javu obicno ide Oracle, uz PHP MySql. Kazem obicno, da mi se ne nakaci sad neko sa pricom da ne mora. Naravno da ne mora. Tu i je i PostgreSQL. Svaki se moze kombinovati sa svakim ali obicno su te kombinacije. Ono sto je bitno je da ako ti neko dobro napravi aplikaciju promena baze bi trebala bude uz minimalne dorade (izmene samo na delu koji radi sa bazom). Stavise, moze se i u startu napraviti podrska za vise baza i kasnije prebaciti. Naravno, svaka migracija podataka je manje ili vece cimanje, zavisno od situacije.
Sigurnost.. Ima tu raznih stvari. Najvise validacija unosa, da ne bude sql injection-a, ubacenih javascript kodova i sl. Takodje, hash-ovanje password-a, zahtevanje slozenosti password-a (ne preterivati ali ipak mora donekle), ima tu jos raznih stvari za zastitu moderatora/admina itd.
Ono sto ti preporucujem je da nadjes dizajnera, da sa njim razradis koje strane hoces da imas, koje procese i da on uradi dizajn za njih. To ce ti pomoci da definises sve funkcionalnosti koje hoces da sajt ima i kako da izlgeda. Onda ces sa tim dizajnom moci mnogo lakse da predstavis sta hoces da ti napravi jer bukvalno si mu nacrtao (ok, nisi ti, dizajner je ali ne menja sustinu). A dizajn je deo posla koji svakako treba da se odradi. I nemoj terati programera da ti dizajnira. Retko kad te dve stvari idu zajedno. Poenta je da je u sklapanju tog posla najvaznije da klijent (ti) zna tacno sta 'oće a da developer zna kako to da napravi.
Neko ce ti mozda ponuditi neko gotovo resenje (ne znam da li za ovo ima nesto konkretno ali vrlo moguce). To moze da ustedi i vreme razvoja i novac ali ima velikog potencijala da kasnije zadaje muke. Prvo zato sto takva resenja uglavnom imaju jako mnogo funkcionalnosti jer ih autori prave tako da zadovolje potrebe sto veceg broja klijenata iako ni jedan klijent nema potrebe za svim stvarima. To ume da komplikuje koriscenje. Drugo zato sto je znatno teze komplikovan sistem prepraviti kada ti treba nesto novo. Ja sam imao pre 10ak godina situaciju da su mi dali Drupal sa idejom da se neki postojeci plugin za zakazivanje termina prepravi za sajt tipa Booking-a (samo znatno jednostavniji) i to je vec bilo poceto. Posle se ispostavilo da sam ja treci koji radi na tome i da se to oteze vise od godine a i ja sam se namucio i na kraju van radnog vremena uradio custom resenje koje je radilo tacno to sto treba nekih 70% i predlozio da nastavimo sa tim sto je na kraju i uradjeno. Jbg, bio sam junior. Sad ne bih radio neplaceno van radnog vremena :D
Sto se cene tice, to jako zavisi od detalja. Kad svaku funkcionalnost razradis u detalje i predstavis onom ko ce to raditi moci ce da ti kaze neku cifru ali nemoj insistirati da ti odmah da broj jer ipak treba da proanalizira i proceni. ista stvar se odnosi i na rokove. Ako hoces odma'-sad-odma' vrlo moguce da ce ti zaokruziti na vise da se osigura i imas veci rizik da zapravo ne proceni dobro vreme i da se otegne. Za vreme je najrealnije da se procenjuje u etapama jer je jako tesko percizno i tacno procniti unapred za iole veci projekat.
Ako ti neko ponudi nisku cenu, ono.. Ne kazem odbij ga ali dooobro razmisli. Prilicna je sansa da ce ti zbrzati i imati losu arhitekturu, los kod ili nabacane sablone i sl. Imao sam priliku da radim online prodavnicu za jednu jednu domacu knjizaru/izdavaca koju je poceo neko drugi. 90% onoga sto je uradjeno su bile automatski generisane forme koje alat u kojem se radi napravi ali cim je trebalo bilo sta konkretno isprogramirati ili prepraviti te forme da rade ono sto konkretno treba, lik je malo nesto probao i zbrisao :) Sad, koliko je on konrektno bio placen ne znam ali ako je neko bas jeftin verovatno ces dobiti nesto tog tipa.
Sto se tice konkretnih tehnologija, ja bih naravno preporucio .Net stack jer bih ga ja licno koristio jer radim u njemu, onaj ko radi Javu bi ti preporucio nju, PHP-ovac - PHP i sl. Tako da... To ti je kao Windows vs Linux, kad je ovaj forum poceo prepucavali smo se oko toga koji je bolji. Sad, 20god kasnije, rezultat je da se i dalje prepucavamo samo sa manje energije jer smo matoriji a i manje nas je :).
PS. Dobro, OK je i Java :)