Helix - Web - Iași - Lucrari 2023 Nationala

Informatii generale

Descriere

Helix este prima retea sociala dedicata programatorilor. Aici, pasionatii din domeniu pot invata noi lucruri, discuta cu alti cunoscatori si sa-si exerseze cunostiintele pentru problemele de informatica.

Fiecare pagina este gandita adresarii unei diferite necesitati, pentru a aduna totul, convenabil, pe aceeasi platforma, eliminand frustarea si cautarea unui workflow ideal:

  • Forum: postari organizate in grupuri, aici poti sa afli un lucru nou din domeniu, sa ai o dezbatare, sau sa ai propriul blog personal cu articolele tale.
  • Code Runner: poti executa cod rapid in 10 limbaje de programare, oriunde ai fi, cu si fara cont. Poti sa testezi ceva rapid fara sa creezi un proiect, sa inveti un nou limbaj sau sa iti reiei munca de pe orice alt device.
  • Online Judge: aici se afla problemele de programare competitiva, fie ca rezolvi de placere, te pregatesti pentru olimpiada sau pentru un interviu de angajare, aici vei gasi probleme explicate pentru toate nivelurile de cunostinte
  • AI Coach: propriul tau antrenor sau asistent AI, cu acces la tot continutul site-ului, acesta iti pastreaza mesajele private, cu performanta similara cu GPT 4, acesta are codul sursa open source si este independent

Tehnologii

Helix are o arhitectura bazata pe micro-servicii. Astfel, frontend-ul comunica cu servicii izolate. Principalele tehnologii folosite:

  • pentru Typescript: NextJS, Tailwind, NextAuth, TRPC, Cypress, StoryBook, Prisma
  • pentru Rust: Axum, Tokio, Serde
  • Docker: Alpine Linux
  • HuggingFace

Frontend

Nu exista un serviciu dedicat frontend-ului, acesta fiind generat de backend pe baza strategiei aleasa pentru fiecare ruta (generare statica - SSG sau generare statica incrementala - ISR).

Backend

Serviciul principal, si cel cu care interactioneaza utilizatorul, este responsabil cu generarea paginilor. Am folosit framework-ul Next.js 13, cu deploy pe Vercel. Unele pagini sunt statice (landing page, termeni si conditii, etc.), iar altele sunt generate dinamic (forum, online judge, etc.) prin streaming-ul resurselor (informatii din baza de date).

Citirea si scrierea din baza de date (PostgreSQL) este realizata folosind functii serverless. Acestea sunt rulate tot de Next.js pe Vercel, dar a fost folosit TRPC pentru definitii client-server a tipurilor de date.

Serviciul responsabil cu rularea si testarea codului trimis de client (“Exec” - GitHub - NikolaTesla13/exec: Yet another code execution engine written in Rust.) este scris in Rust si foloseste libraria Axum pentru web server. Acesta ruleaza intr-un container Docker si foloseste la randul lui tehnologii de virtualizare pentru rularea solutiilor.

Aceasta este o prezentare succinta, mai multe detalii despre arhitectura fiecarui serviciu, comunicarea dintre acestea si toate tehnologiile folosite sunt prezentate in documentatie.

Cerinte sistem

Pentru vizitarea online a proiectului:

  • Conexiune la internet
  • (recomandat) Browser relativ modern (Chrome 113+)

Pentru rularea locala a proiectului este necesar urmatorul software:

  • NodeJS 18.0+
  • Rust 1.68.0+
  • Docker 23.0+

Realizatori

Stefan Alexandru Asandei

  • Scoala: Colegiul Național Iași
  • Clasa: 9
  • Judet: Iași
  • Oras: Iasi

Screenshots