I want to build a website where a user can generate an image from a prompt using AI. Front-end: Front page: I want the front-end to use Vite with the ts-node template. On the front page, a user can type in the prompt, press generate and see the result. If you are logged in, you can see your previously generated images. On the front page, you can also log in or create an account. You get 5 free image generations per IP-address, then you are forced to create an account or log in. The back-end keeps track of the IPS and how many generations they have had. Once you create an account, you get 100 free generations and the IP-restriction is no longer enforced. Once you are out of generations and you have an account, you will get asked to fuel your account using the fuel prompt: In the fuel prompt, you can choose in a number picker how many images you want. Each image costs 0,10 DKK The user will then see the final price, and can checkout using Stripe. The user can choose to auto-fuel, which will automatically attempt to charge 100 images from the card when empty. Once the transaction is complete, the user will be returned to the previous page and the generations are updated. User page: You can see how many images you have left. You can see your previously generated images. You can also choose to fuel your account with the fuel prompt. Front-end design: The design of the front-end components should be very clean and simple to look at. You should know immediately how it works, and there should be no confusion. The design should be simple colors, and should look elegant. Back-end: I want the back-end to use NestJS. For authentication, use Firebase Auth. You can sign up with email, Google or Apple account. The generation should use Together AI Here is how you generate a picture with Together AI import Together from "together-ai"; const together = new Together({ apiKey: "" }); const response = await together.images.create({ model: "black-forest-labs/FLUX.1-schnell", prompt: "[]", width: 1024, // Width is from 256 to 1440 and should be divisible by 16 height: 768, // Height is from 256 to 1440 and should be divisible by 32 steps: 4, // Steps is always 4 n: 1, response_format: "b64_json"); console.log(response.data[0].b64_json); The images will be saved in Wasabi S3. Here is how that can be done: // Upload image and thumbnail to Wasabi S3 const accessKey= "" const secretKey= "" const region = "" const endpoint = "" const bucket = "" const s3 = new S3Client({ region, credentials: { accessKeyId: accessKey, secretAccessKey: secretKey, }, endpoint, }) const commands = [ new PutObjectCommand({ Bucket: bucket, Key: uuid + '.png', Body: buffer, ContentType: 'image/png', }), ] try { await Promise.all(commands.map(command => s3.send(command))); } catch (err) { console.error(err); } Once uploaded to wasabi, the url of the images will be https://aah.wituz.com/[uuid].png The images will have their url saved in a node in the database, with a relation to the user. They will also have the current time saved. The back-end should communicate with a Memgraph (neo4j) database. For the rest of the back-end, I want you to look at the details of the front-end, and come up with relavant endpoints needed. Please implement the entire application, every single method and every react component. Please write code instead of text in most cases, unless it is relavant for installation or setup, prerequirements or the like. Please use yarn. First implement the back-end, then the front-end where the back-end is integrated using swagger-codegen. Hand it to me in a step-by-step guide that will assemble the entire application. Most important, make the plan VERY long and detailed, yet concise.