Kokon
A free, local alternative to Nano Banana and Generative Fill. Brush an area, type the change, and your own GPU does the edit. One installer for Windows, Mac and Linux.
Restore old photos, remove objects or backgrounds, recolor, and extend images to new aspect ratios in the browser.
DesignGitHub @Stroller15OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
ImageAlchemy Restore old photos resize for any display remove objects change colors and remove backgrounds easily with advanced image editing features
Loading the full README.
Read the full README ↗Restore, erase and extend your photos in the browser.
Live app · How it works · Run it locally
ImageAlchemy is a photo editor built on Cloudinary's image models. Upload a photo, pick an edit, preview the result next to the original, then save it to your library or download it at full size. Every transformation costs one credit, and new accounts start with 20.
| Tool | What it does |
|---|---|
| Image Restore | Removes noise, scratches and blur from old or damaged photos |
| Generative Fill | Extends a photo to a new aspect ratio with outpainting: square (1:1), portrait (3:4) or phone (9:16) |
| Object Remove | Name an object and it is erased from the photo, along with its shadow |
| Object Recolor | Name an object and a color, and only that object changes |
| Background Remove | Cuts the subject out cleanly, ready for a new background |
[!NOTE] The AI behind these tools is still experimental, so result quality varies. Image Restore works best on photos that are blurry or over-compressed.
Credits are bought as one-time packs through Stripe, with no subscription.
[!IMPORTANT] This is a portfolio project, so Stripe runs in test mode and nothing is ever charged. To try checkout, use card
4242 4242 4242 4242with any future expiry date and any CVC. The Credits page and the landing pricing section say the same.
| Plan | Price | Credits | Per credit |
|---|---|---|---|
| Free | $0 | 20 on sign-up | Free |
| Pro Package | $40 | 120 | $0.33 |
| Premium Package | $199 | 2,000 | $0.10 |
The UI is built around the idea of a photo darkroom and lightbox.
#ED5E06 marks the primary action, the selection and key figures, and nothing else.1 credit or 1200 × 800.All colors are CSS variables in app/globals.css, mapped to Tailwind in tailwind.config.ts. Components use role names like bg-surface, text-fg-2 and border-border, so a theme change never touches component code.
| Area | Tools |
|---|---|
| Framework | Next.js 14 (App Router), React 18, TypeScript |
| UI | Tailwind CSS, Radix UI, Lucide icons, Geist, next-themes |
| Image processing | Cloudinary AI, next-cloudinary |
| Auth | Clerk |
| Database | MongoDB with Mongoose |
| Payments | Stripe |
| Forms | React Hook Form, Zod |
Requires Node.js 26 (see engines in package.json).
git clone https://github.com/Stroller15/imagealchemy-ai.git
cd imagealchemy-ai
npm install
Create .env.local with these variables:
# MongoDB
MONGODB_URL=
# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
WEBHOOK_SECRET=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/home
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/home
# Cloudinary
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
# Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
If the project is linked to Vercel, npx vercel env pull .env.local fills these in for you.
Then start the dev server:
npm run dev
Open http://localhost:3000.
/api/webhooks/clerk creates, updates and deletes the matching user in MongoDB. It needs WEBHOOK_SECRET. Accounts created before the webhook was connected have no database record, so sign up again after pointing the app at a new database./api/webhooks/stripe adds purchased credits to the buyer on checkout.session.completed. It needs STRIPE_WEBHOOK_SECRET. Create the webhook with Stripe's Test mode switch on, and use test keys (pk_test_…, sk_test_…) everywhere.app/
(marketing)/ Landing page
(auth)/ Sign-in and sign-up, with the demo account panel
(root)/ Signed-in app: home, editor, image details, profile, credits
api/webhooks/ Clerk and Stripe webhooks
components/
marketing/ Landing sections and the before/after slider
shared/ App shell, editor, collection, plan cards, theme toggle
ui/ Radix-based primitives (button, input, select, dialog, toast)
constants/ Navigation, plans, transformation types, aspect ratios
lib/
actions/ Server actions for images, users and transactions
database/ Mongoose connection and models