Noob cu figuri de batman vrea sa construiasca un website social, de unde incepe?

Salut! Basically the title, dar o sa explic totusi mai exact situaia :sweat_smile:
Sunt la inceput de drum in ceea ce tine de programare, m-am mai jucat putin cu cateva chestii foarte basic in python, dar nimic mai mult.

Ideea e ca sunt adeptul metodei de invatare prin exersare si, ce mod mai bun de a exersa decat un proiect personal :smiley: Mica mare problema este ca n-am absolut nicio idee cum s-o apuc, ce sa invat, etc.

Proiectul meu ar consta intr-un website pentru networking, in special pentru antreprenori. M-am gandit la urmatoarele functionabilitati:

  • Iti poti crea un cont pe site si iti faci un profil;
  • Selectezi niste domenii in care ai experienta, dintr-o lista prestabilita;
  • Poti cauta si vedea profilele altor oameni;
  • Un sistem de conexiuni / friend list asemanator cu ce este pe LinkedIn, respectiv Facebook;
  • Un sistem prin care poti trimite o notificare tuturor conexiunilor tale, sau doar a celor care au experienta in anuimite domenii, care sa le spuna ca ai nevoie de ajutor.

Imi puteti spune, va rog, ce tehnologii si limbaje ar trebui sa cunosc pentru realizarea unui astfel de website?

Dacă tot te-ai jucat cu python, continuă cu asta. Ar mai fi util un framework web (Flask sau Django), ceva SQL pt a ține datele undeva într-o baza de date sau folosești un ORM (Sqlalchemy sau Django ORM), apoi HTML/CSS, poate și ceva Javascript (opțional) pt interfața cu utiliatorii.

Spor

4 Likes

Când am citit titlul, am zis că poate totuși e un subiect inițiat de un programator care înțelege, tehnic, ce se întâmplă într-un site de socializare ca facebook. Bag de seamă că nu prea. Și are sens. Dacă erai programator, nici nu deschideai subiectul ăsta. Ai fi înțeles că nici nu ai cum să faci de unul singur un site ca facebook/twitter etc.

Oricum, să știi că suntem și noi în temă. Se vorbește destul de mult în ultima vreme despre site-urile de socializare. O dată cu asta, hodoronc-tronc, vrei să știi de unde începi construcția unui astfel de site. E așa, cumva. Nici măcar n-ai un plan de bătaie…

1 Like

Cam cat de basic sunt lucrurile cu care te-ai jucat?
Ca daca ai afișat la consola un hello world sau ai trecut prin sintaxa de bază, felicitari - este un pas, dar mai sunt o gramada pana la retea sociala. Tu trebuie sa iti gandesti și implementezi logica.

Nici Batman nu s-a luat la trântă cu toți nebunii din Gotham City de prima dată.

Ce a zis @Cornel este cam standard, dar eu zic sa mai rumegi Python-ul pana acolo. Un framework web iți cere cunostinte de bază despre oop, la fel ca și un orm. Plus ceva despre sql, baze d edate etc. Asta pentru lucruri simple, cum ar fi să inserezi o entitate in baza de date.

Totuși este plin Google-ul de asemenea tutoriale.

A nu se intelege ca vreau sa te descurajez, dar nu sări pași

3 Likes

Exact de genul acesta de raspunsuri am nevoie.

Am făcut putin mai mult decat hello world. Am terminat un curs introductiv de pe youtube, iar momentan parcurg cel mai popular curs de python de pe udemy, “from zero to hero” cred ca se numeste, daca ai timp de cateva clickuri ii poti vedea programa. (O sa atașez eu link cand pun mana pe un laptop).
Ca idee nu sunt chiar la plecare cu programarea, insa cu siguranță sunt la inceput de drum. Ah, am mai facut si primii doi ani in liceu ceva informatica, if that’s worth something.

De asemenea, daca credeti ca folosirea altui limbaj fata de python ar fi cu mult mai eficient, nu ezitați sa menționați. Nu exclud varianta aceasta, am timp suficient incat sa imi termin cursul de python sa stiu ca am o baza in directia aceea, iar apoi sa incerc altele legate de web dev.

Nu cer sa mi se arunce scurtături sau formule magice, doar fac apel la experienta voastra pentru a-mi spune cam ce lucruri ar trebui sa învăț pentru scopul meu, care ar fi cele mai eficiente, acesta este motivul pentru care am detaliat ce as vrea sa fac mai exact.

'cam ce lucruri ar trebui sa învăț? ’ : domeniul e asa de vast incat trebuie sa inveti cel putin cate ceva din ce limbaje iti afiseaza google dupa ce cauti ‘how to build a social network website’
‘care ar fi cele mai eficiente’ : urmeaza sa iti raspunzi singur la aceasta intrebare dupa ce petreci cel putin un an in orice editor/IDE construind diverse.
Tot atunci o sa realizezi ca nu exista raspuns scurt la intrebarea ta ci doar diferite metode de a pune in practica ceea ce ai invatat.
Nu spun cu rea credinta insa din ‘experienta’ mea in loc de a pierde timp postand asa ceva mai bine l-ai petrece tastand acelasi numar de caractere intr-un editor. My 2 cents :slight_smile:

Fair enough.

Hello Batman, uite o știre bună:
Poți face și singur o rețea socială, cel puțin la nivel de MVP. Acum depinde cât efort depui.
Ia https://getstream.io/activity-feeds
Se poate și Python și alte limbaje.

3 Likes

Limbajul Go ar fi o alegere mult mai buna.

1 Like

Limbajul e cea mai mică problemă.

Cel mai important e să imparti proiectul intr-o listă de task-uri realizabile.

Eu as incepe cu interfața, câte un mock (afișezi date dintr-un json) cu componente de react/svelte pentru fiecare funcționalitate ca să
vezi ce trebuie pe backend și să poți testa ușor. Eu aș folosi tailwind css components.

După în loc de fișierul json din care iei datele îți faci un server. Aici sunt multe opțiuni, cel mai ușor e un server graphql cu librarii existente și o bază de date ca postgres/mysql/alte baze de date ca prisma.io sau hasura. Poți evita backendul cu o soluție headless sau Firebase.

La server prima problemă e autentificarea și utilizatorii, in mod ideal îți faci direct jwt cu sso. (Cum are FB, o soluție rapida e o librarie OAuth)
A doua problemă e permisiunea fiecărui utilizator.
A 3-a problemă sunt citirea și scrierea datelor în baza de date. Aici pe frontend poate vrei să faci un Wall sau virtual scroll. Îți trebuie paginare, cu graphql e trivial.
A 4-a problemă e cum stochezi imaginile și resursele într-un mod sigur, ieftin și eficient.
A 5-a problemă e mutatul proiectului pe un server. Frontendul se poate pune pe github pages sau netlify, dar pentru db și servicii îți trebuie un server dedicat.
Mai sunt și alte probleme pentru care îți vor trebui cunostiinte de design patterns ca să le rezolvi. In special la o rețea sociala.

Eu recomand notion.so dacă îți trebuie un program pentru planificarea proiectului.

6 Likes

El este la inceput, dar noi ii zicem de GraphQL si alte sf-uri :facepalm:

3 Likes

Graphql e cel mai simplu mod de a realiza un backend de calitate în 2021.
In mod ideal nici nu trebuie să scrii cod, doar schema.

1 Like

Cateodata cineva mai intreaba pe subs de gamedev (reddit): vreau sa fac un MMO, cu ce sa incep?
Raspunsul este de obicei: daca intrebi asta inseamna ca nu esti pregatit sa faci un MMO.

E bine ca ti-ai setat goals-urile high. Nu-i bine ca incerci sa atingi direct aceste goals fara sa fi atins goals-uri similare mici/medii. Cel putin in tech.

Pe de alta parte poate ai nevoie sa te convingi de faptul asta cu ochii tai. Multi dintre noi am facut asta la un moment dat, in anumite fields sau ptr. anumite proiecte.
O sa-ti pierzi timp si o sa castigi peri albi…si experienta din greseli, daca nu din sfaturi.

Io unul daca ar fi sa vreau sa construiesc un proiect mare intr-un field relativ necunoscut, m-as intreba:

  1. Ce techs trebuie sa stiu? Cat de bine le stiu acum?
  2. Ce zic alti oameni care au incercat ceva similar, la nivelul meu de experienta?
  3. Cat timp o sa-mi ia?
  4. Care-i cea mai scurta cale de a atinge acest obiectiv?
  5. Sunt in stare sa termin un proiect similar dar la scala mult mai mica? Daca pot sa fac un prototip functional mic, am sanse si la ceva mare.
  6. Ce asteptari financiare am? (hint: e bine sa ai zero, sa nu te amagesti sau sa pariezi resurse ptr. un ROI care nu se va materializa niciodata.)
2 Likes

Eu as zice ca și erlang ar merge, daca vrea performanță și sa nu fie asa aproape de métal. :grin:

Dupa toate răspunsurile, am tras o concluzie interesanta.
Fie am descris eu eronat ceea ce vreau si pare mult mai complicat decat scopul meu, fie am subestimat cat de complicat e ceea ce vreau sa fac. Cel mai probabil a doua variantă.

Anyway, apreciez răspunsurile tuturor, cel mai probabil o sa revin in cateva luni cu un update legat de unde am ajuns.

Am fost si eu in situatia ta si consider ca e de ajuns imaginea “in mare” pe care ti-ai facut-o. Cand esti la inceput nu te intereseaza asa mult calitatea finala a produsului, cat te intereseaza sa iti bagi nasul prin toata ciorba asta de tehnologii/patternuri web.
Eu am inceput cu un site care se ocupa de pregatirea elevilor pentru BAC. Nu aveam un plan clar in minte pentru ca habar nu aveam de ce unelte dispun si nu stiam cat de mult ma pot baza pe ce stiu.
Si uite asa am inceput de la continut static banal (efectiv HTML si putin CSS), la continut incarcat din baza de date, ca mai apoi sa ajung la editarea/crearea completa a unei lectii (Puteai asocia o categorie, aveai o lista de componente vizuale cum ar fi: grafice, formule matematice, sectiuni de text, pe care le puteai insera si ordona in pagina dupa bunul plac).
Rezultat: Un fisier de 4k linii de cod JQuery pentru ca nu stiam de la inceput de frameworkuri precum React/Angular si chiar si asa nu as fi inteles utilitatea lor. Mi-a parut rau ca m-am “chinuit” atat? Nu. Altfel vezi utilitatea componentelor React dupa ce ai facut cod duplicat la greu :smiley: .
So, apuca-te cum te taie capul si raspunsurile vin pe parcurs. Multa rabdare si sa te astepti la multe rescrieri de cod dupa ce vei da de o metoda mai buna de a face lucrurile.

5 Likes

Ai deja planul facut - vezi lista ta. Fiecare punct este un task. Eu zic sa continui cu limbajul pe care il stii - cu cat avansezi mai repede cu atat castigi mai multa incredere si nu risti sa abandonezi proiectul.

Nu as pierde mult timp pe frontend/înfrumusețare. Baga tare la features, sa faca ce iti propui si la urma ii pui culoare.

Judecand după cum ai intrebat cred ca ai nevoie sa intelegi arhitectura mai mult decat orice.

La fiecare punct fa o lista de entitati si proprietățile lor ca sa stii unde si cum tranzactionezi informația, e.g. users, permissions, connections, etc…

Foloseste orice tool de desenat ca sa iti faci un wireframe al aplicatiei. De ex. Figma.

Mai întreabă odata ce ai bucăți făcute - e bine sa faci brainstorming cu peers.

Good luck!

1 Like