3Dify web application.
The architecture comprises a web application, a file store, and a NoSQL database.
- The
web application
is built with the Next.js framework, which allows us to develop both the front-end and back-end using TypeScript. The front-end is designed as a Single-Page Application (SPA) and written in React, also taking advantage of the abstractions offered by Next.js. Another benefit of Next.js is the possibility to use Next.js API Routes to create a serverless back-end to optimize resource utilization. - MinIO is used as
file store
for persisting uploaded photos, generated avatars, etc. - For the
database
, the application leverages MongoDB capabilities for storing users' information and more.
Git LFS is required in order to correctly clone the repository.
The easiest way to start the application is to run the development server:
# install missing required dependencies
npm install
# run the development server
npm run dev
Alternatively, run using Docker:
# build the image
docker build -t 3dify .
# run the container
docker run -d -p 3000:3000 --name 3dify 3dify
Watch with Docker Compose is also supported:
# launch application
docker compose -f dev.docker-compose.yml up -d
# watch application
docker compose -f dev.docker-compose.yml watch
# stop the application
docker compose -f dev.docker-compose.yml down
The following features have been tested:
- Correct functioning of front-end and back-end operations when uploading an image of a face
- Blocking of the execution if a file other than an image is sent through
- Blocking of the execution if an image of something other than a face is sent
- Correct functioning of operations for downloading the zip file containing the finalized human model