Nie rozumiem, czemu się martwisz MongoDB czy inną bazą, jak największą trudność będziesz miał pewnie przy samym robieniu 3D - mniejszą, jeśli już robiłeś coś w 3D / z użyciem wspomnianych bibliotek Babylon, Three.js, albo większą, jeśli w ogóle nic nie robiłeś w 3D - ale mimo wszystko - naklepać coś w MongoDB, a stworzyć mini-edytorek do 3D (jak rozumiem) z animacjami itp. - to jednak myślę, że to drugie może być bardziej wymagającym problemem.
W projekcie chce użyć istniejących wzorców projektowych / architektonicznych i nierelacyjnej bazy danych. (...) Chciałbym, żeby było to konkretnie rozbudowane tak żeby jak najwięcej się przy tym nauczyć. (...) Chce wykonać to jak najbardziej elegancko i profesjonalnie jak tylko się da, z
To się nie kompiluje XD Profesjonalizm polega m.in. na doboru narzędzi do problemu, a ty już na wstępie wybierasz sobie, że będzie nierelacyjna baza danych "bo tak". i chcesz na siłę ` użyć istniejących wzorców projektowych / architektonicznych".
Piszesz, że chcesz zrobić to elegancko, ale elegancja polega na prostocie, a nie na tym, żeby zakładać, że użyjemy "istniejących wzorców projektowych / architektonicznych" (skąd wiesz, że w ogóle będą ci potrzebne?) czy na tym, żeby było to konkretnie rozbudowane tak żeby jak najwięcej się przy tym nauczyć.. Elegancja i nauka to są trochę sprzeczne cele xD
Tym niemniej jeśli twoim głównym celem jest nauka nierelacyjnej bazy danych, czy nauka "istniejących wzorców projektowych / architektonicznych", a projekt to tylko pretekst do nauki, to takie podejście może być uzasadnione. Tylko że wtedy powinieneś zrezygnować z ambicji zrobienia czegoś profesjonalnie i elegancko, bo to jeszcze nie ten etap. Ciężko zrobić coś elegancko używając MongoDB, jeśli będziesz uczył się korzystania z Mongo na żywca. Ciężko zrobić elegancko taką mini-apkę 3D jeśli wcześniej nie robiłeś podobnej, ciężko użyć elegancko danego wzorca projektowego (oraz wiedzieć, kiedy go nie używać), jeśli dopiero go poznałeś i się po prostu bawisz(=uczysz).
Czy może lepiej jakoś to rozbić na front/back?
Frontend nie powinien wiedzieć, jaka jest baza danych, czy zapisujesz to do Mongo czy do pliku JSON albo na Google Drive... Kod odpowiedzialny za GUI powinien być odpowiedzialny za GUI, a jak potrzebny jest zapis danych albo pociągnięcie skądś, to powinien to przekazywać do oddzielnej warstwy w aplikacji, która by się kontaktowała z bazą.