Build a Simple Web App with Nano Banana Pro API (Gemini 3 Pro Image) - 4K Export

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

WAGE / SALARY

100$

HOURS PER WEEK

TBD

DATE UPDATED

May 19, 2026

JOB OVERVIEW

Hello! I’m looking for a developer to build a simple web application for personal use, capable of connecting to Google’s Nano Banana PRO API (gemini-3-pro-image-preview model) and allowing me to generate images using artificial intelligence, which I can then export in 4K resolution.

This is an application for EXCLUSIVE USE. No multi-user system, no payments, no complex authentication. Just a simple, functional tool for me.

WHAT THE APP NEEDS TO DO:

1. A simple web interface where I can:
- Enter a text prompt
- Optionally upload 1–5 reference images
- Select the aspect ratio (1:1, 16:9, 9:16, 3:4)
- Click the ‘Generate’ button
- Make edits to the image (optional)

2. The backend calls the Nano Banana Pro API (gemini-3-pro-image-preview) using my API key

3. Display the generated image in the browser

4. Export/download the image in 4K resolution

5. Save a simple history of generated images (the last 50 will do)

TECHNOLOGY STACK (open to suggestions, but I prefer):
- Next.js + deployment on Vercel (free tier) or any other free hosting solution
- API key stored as an environment variable (NEVER exposed to the frontend)
- Vercel Blob or Supabase for image storage, or any other ideas you may have
- Clean and minimalist user interface (no need for an elaborate design, just make sure it’s functional)


TIMELINE: 1–2 weeks maximum

MANDATORY SELECTION TEST — APPLICATIONS WITHOUT THIS WILL BE IGNORED:

To apply, answer these 3 questions in your application:

1. What is the official name of the API model for Nano Banana Pro? (Hint: it starts with "gemini-")

2. Have you worked with the Google AI Studio API before?

Please also include:
- 2–3 examples of similar projects you have completed (preferably active links or GitHub repositories)
- How many days you will need to complete it

Applications without answers to the selection test will be automatically rejected.

Thank you, I look forward to working with the right person!

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0337
Total Execution Time  0.0350
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,497,128 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Build-a-Simple-Web-App-with-Nano-Banana-Pro-API-Gemini-3-Pro-Image-4K-Export-1650835
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0281 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0008   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1650835
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 878283
 LIMIT 1 
0.0164   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1650835
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-19',ej.date_added) duration_daysDATEDIFF('2026-06-19',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1650835' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1650835 
0.0008   UPDATE employer_jobs SET hit_counts '***May-19-2026=99***May-20-2026=81***May-21-2026=13***May-22-2026=6***May-23-2026=7***May-24-2026=15***May-25-2026=2***May-26-2026=2***May-27-2026=1***May-29-2026=2***May-30-2026=3***May-31-2026=2***Jun-01-2026=2***Jun-02-2026=7***Jun-03-2026=2***Jun-04-2026=1***Jun-06-2026=1***Jun-07-2026=1***Jun-08-2026=1***Jun-09-2026=1***Jun-10-2026=1***Jun-11-2026=1***Jun-12-2026=2***Jun-19-2026=1' WHERE job_id'1650835'  
0.0005   UPDATE employer_jobs SET monthly_hits '***May-2026=233***Jun-2026=21' WHERE job_id'1650835'  
0.0015   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1650835' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1650835 
0.0047   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '878283'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)