Interfața aplicației poate fi construită cu orice tehnologie cunoașteți (ReactJS, Angular, Vue, chiar plain HTML). For the sake of example și pentru a nu ne pierde în detalii, în această secțiune voi folosi componente vizuale preluate din surse publice (librării de componente deja stilizate cu ajutorul TailwindCSS) și le voi modifica sumar. În înregistrarile video voi descrie procesul de dezvoltare într-un mod mai detaliat.
1. Definirea scopului aplicației
Vom crea o aplicație web care va trimite mail-uri care conțin mesaje traduse în una sau mai multe limbi straine. De asemenea, aplicația va stoca mesajele inițiale și le va afișa într-o listă.
Mesajele sunt stocate într-o baza de date în Cloud gestionată de Google Cloud Platform, mesajele sunt traduse din back-end cu ajutorul serviciului Cloud Translation API, iar mail-urile sunt trimise cu prin intermediului serviciului cloud pus la dispoziție de Sendgrid.
2. Definirea componentelor React principale
Pentru a păstra aplicația cât mai simplă, aceasta va avea doar 3 componente principale: o componenta pentru Antet (Header.jsx), o componenta care gestionează afișare listei de mesaje (MessagesList.jsx) și o componentă care gestionează trimiterea de mesaje (MessagesSubmit.jsx)
În folderul "components" vom crea 3 fișiere .jsx pentru cele 3 componente
Mesajele pe care ne dorim să le afișăm sunt stocate într-o bază de date externă și le putem accesa prin intermediul Back-end-ului. Pentru a putea actualiza interfața aplicației în momentul sosirii datelor, vom folosi funcțiile useEffect și useState puse la dispoziție de React Hooks.
Astfel, în interiorul componentei MessagesList() definim un state și îl modificăm cu datele cerute la momentul creării componentei de către browser.
Observăm că am stocat calea către serverul Back-end în fisierul .env
În momentul publicării aplicațiilor (Front și Back), calea către serverul back-end se va schimba. Având în vedere că fișierul .env nu este urmărit de git, vom putea cu ușurință să specificăm noua cale creând un fișier env personalizat pentru aplicația aflată în producție.
Atenție!Fiecare variabilă de configurare din .env în React trebuie să aibă prefixul REACT_APP (exemplu mai jos)
Componenta MessagesSubmit.jsx constă într-un formular și mai multe butoane care vor trimite câte un apel către Back-end pentru a traduce mesajul introdus și a trimite un mail.
Limbile disponibile le-am stocat într-un array în fișierul de constante. De asemenea, am stocat adresa de pe care se vor trimite mail-urile tot în fișierul de constante
Planul curent oferit de Sendgrid ne permite să trimitem mail-uri dinspre o singură adresă (adresa cu care am creat contul de Sendgrid). De aceea senderMail este o constantă stocată în utils/constants.js
Pentru ușurință, limbile introduse în LANGUAGES_ARRAY au același format cu cele cerute de Back-end Translate API
După ce am introdus un nume, un mail și un mesaj, putem apăsa pe unul dintre butoanele de trimitere pentru a expedia un mail. Date despre mesajul original vor apărea în lista din stânga după un refresh, iar mesajul tradus va apărea printr-un window alert. (pentru a păstra exemplele cât mai simple și compacte)