Идеята за този сайт идва от сайта customerthink.com. Сървърът на сайта е писан от мен на Express, като съм си помагал с тези от упражненията. За client-side съм ползвал react без redux, като за дизайна съм използвал bootstrap 4 и react bootstrap. За routing ползвам react router, а за съобщенията при всяка заявка - react toastify.
Сайтът е разделен на три секции взависимост от това дали клиентът има профил, дали е гост или е администратор.
Когато клиентът е влязъл като гост, може да гледа Home страницата, съответно показаните в нея новини и да разглежда новините по категории. Ако иска да се регистрира, клиентът трябва да предостави име и фамилия, Username и e-mail, като те трябва да са уникални. При успешна регистрация на потребителя се връща токен, който се запазва в localStorage, който ще бъде използван за неговото удостоверяване при заявките.
Токенът е валиден в срок от един ден. Ако клиентът има профил, той може да влезе, като предоставя своя Username и парола. Съответно при грешна информация при влизане или регистрация, на клиента ще се покаже адекватно съобщение с нещата, които трябва да попълни, за да бъде вярна валидацията. Когато клиентът влезе в профила си, той ще може да праща новини към администратора на сайта, който впоследствие има възможността да ги одобри и те да се покажат в сайта. При пращане на новина потребителят трябва да изложи нейното заглавие (което да е уникално), нейното съдържание, категория и може да upload-не снимка като файл. При празни полета или при съществуващо заглавие се изкарва адекватно съобщение. Снимките се пращат като Base64 код, запазват се в папка на сървъра, а в базата се запазва пътят към този файл и се сервира като статичен файл на клиента. Освен това потребителят има възможност да прегледа профила си, в който са показани одобрените и неодобрените му новини. От профила си потребителят може да редактира или изтрива одобрените новини и да гледа как биха изглеждали все още неодобрените новини ако бъдат одобрени. Също така, когато потребителят иска да види детайли за новината, той вече може да оставя коментари под нея.
Ако потребителят има роля на администратор, той вече не може да праща новини, но за сметка на това може да ги одобрява, редактира или отхвърля преди те да се покажат на обикновения потребител. Той може да създава категории и да преименува или изтрива вече съществуващите. Администраторът може да редактира одобрените новини като отиде на страницата с техните детайли. Администраторът не трябва да има достъп до своя профил, понеже той не е нормален потребител.