A modern, AI-powered image editor alternative to Photoshop/Photopea, powered by Google's nanobanana API from fal.ai.

npm run install:all
cd backend
cp env.example .env
Edit backend/.env and add your fal.ai API key:
FAL_API_KEY=your_fal_ai_api_key_here
PORT=3001
Note: Get your fal.ai API key from fal.ai. You'll need to sign up and create an API key in your dashboard.
Start both frontend and backend in development mode:
npm run dev
Important: The application uses fal.ai's NanoBanana APIs:
Select your model in the UI, and the backend automatically routes to the appropriate endpoint. If fal.ai updates these URLs, adjust MODEL_ENDPOINTS in backend/server.js.
To verify the correct endpoint:
1. Check the fal.ai documentation
2. Look for the nanobanana model endpoint
3. Update the fetch URL in backend/server.js if needed
/api/edit-imageEdit an existing image using AI.
Request:
- image (file): Image file to edit
- prompt (string): Natural language editing instructions
- negativePrompt (string, optional): Things to avoid in the edit
Response:
{
"images": [{"url": "data:image/..."}]
}
/api/generate-imageGenerate a new image from text.
Request:
{
"prompt": "a beautiful landscape...",
"negativePrompt": "blurry, low quality",
"width": 1024,
"height": 1024
}
Response:
{
"images": [{"url": "data:image/..."}]
}
nanobanana-studio/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── App.tsx # Main application component
│ │ ├── api.ts # API client functions
│ │ ├── types.ts # TypeScript type definitions
│ │ ├── utils.ts # Utility functions
│ │ ├── App.css # Styles
│ │ └── ...
│ └── package.json
├── backend/ # Express backend server
│ ├── server.js # API server with validation & error handling
│ ├── env.example # Environment variables template
│ └── package.json
├── package.json # Root package.json
├── README.md # Full documentation
└── SETUP.md # Quick setup guide
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
$ claude mcp add fal-nanobanana-studio \
-- python -m otcore.mcp_server <graph>