A modern, AI-powered image editing platform built with Next.js, Convex, and Fabric.js. Repimly provides an intuitive interface for creating and editing images with advanced AI features, all while maintaining a clean and responsive design.
- AI-Powered Editing: Advanced AI tools for image enhancement, background removal, and intelligent image extension
- Real-time Collaboration: Cloud-based project storage with automatic saving
- Responsive Design: Works seamlessly across desktop and mobile devices
- Dark Mode: Built-in theme switching for comfortable viewing
- Project Management: Create, organize, and manage multiple image projects
- AI Retouch: Enhance image quality with AI-powered improvements
- AI Upscale: Increase resolution up to 16MP
- Background Removal: Remove backgrounds with AI precision
- AI Image Extender: Extend image boundaries intelligently
- Smart Filters: Apply AI-powered filters and adjustments
- Resize: Change canvas dimensions with aspect ratio locking
- Crop: Crop images with multiple aspect ratio presets
- Adjust: Fine-tune brightness, contrast, saturation, and vibrance
- Text Tool: Add and customize text with various fonts and styles
- Background Controls: Change or remove backgrounds with color or image options
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication pages
β β βββ sign-in/ # Sign in page
β β βββ sign-up/ # Sign up page
β βββ (main)/ # Main application routes
β β βββ dashboard/ # User dashboard
β β βββ editor/ # Image editor
β βββ globals.css # Global styles
βββ components/ # Reusable UI components
β βββ common/ # Common layout components
β βββ ui/ # Reusable UI elements
β βββ features-section.tsx # Features section component
βββ convex/ # Database schema and functions
β βββ auth.config.ts # Authentication configuration
β βββ project.ts # Project database functions
β βββ schema.ts # Database schema definition
β βββ users.ts # User database functions
βββ hooks/ # Custom React hooks
β βββ use-convex-query.tsx # Convex query hook
β βββ use-plan-access.ts # Plan access control hook
βββ lib/ # Utility functions
β βββ schema.ts # Type definitions
β βββ utils.ts # Helper functions
βββ context/ # React context providers
β βββ context.tsx # Canvas context
βββ public/ # Static assets
βββ utils/ # Additional utilities
- Next.js 16.1.5: React framework with App Router
- React 19.2.3: UI library
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Accessible component primitives
- Framer Motion: Animation library
- Lucide React: Icon library
- React Colorful: Color picker component
- Convex: Real-time database and backend
- Clerk: Authentication and user management
- ImageKit: Image storage and transformation
- Fabric.js: Canvas manipulation and image editing
- React Dropzone: File upload functionality
- ESLint: Code linting
- TypeScript: Type safety
- PostCSS: CSS processing
- Node.js 18 or higher
- npm, yarn, pnpm, or bun package manager
- ImageKit account (for image storage)
- Clerk account (for authentication)
-
Clone the repository
git clone <repository-url> cd Image-Editor-AI-main
-
Install dependencies
npm install # or yarn install # or pnpm install # or bun install
-
Set up environment variables Create a
.env.localfile in the root directory:NEXT_PUBLIC_UNSPLASH_ACCESS_KEY=your_unsplash_access_key NEXT_PUBLIC_IMAGEKIT_URL_ENDPOINT=your_imagekit_url_endpoint NEXT_PUBLIC_IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key # Clerk configuration NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key # Convex configuration CONVEX_URL=your_convex_url CONVEX_DEPLOYMENT=your_convex_deployment -
Start the development server
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open your browser Navigate to http://localhost:3000
- Create an account at ImageKit.io
- Create a new folder for your images
- Copy the URL endpoint and public key
- Add them to your
.env.localfile
- Create an account at Clerk.dev
- Create a new application
- Copy the publishable and secret keys
- Add them to your
.env.localfile
- Create an account at Unsplash.com
- Create a new application
- Copy the access key
- Add it to your
.env.localfile
- Click "Sign In" on the homepage
- Choose your preferred authentication method (email, Google, etc.)
- Complete the sign-in process
- You'll be redirected to your dashboard
- Navigate to the dashboard
- Click "Create Project"
- Choose an image to upload or start with a blank canvas
- Select your desired canvas dimensions
- Click "Create" to start editing
- Resize: Change canvas dimensions
- Crop: Crop your image with aspect ratio presets
- Adjust: Fine-tune image properties
- Background: Remove or change background
- AI Tools: Access AI-powered features
- Text: Add and customize text
- AI Retouch: Enhance image quality
- AI Upscale: Increase resolution
- Background Removal: Remove backgrounds
- AI Image Extender: Extend image boundaries
- Brightness: Adjust image brightness (-100 to 100)
- Contrast: Adjust image contrast (-100 to 100)
- Saturation: Adjust color saturation (-100 to 100)
- Vibrance: Adjust vibrance (-100 to 100)
- Changes are automatically saved to the cloud
- Use the save button to manually save
- Export your final image in various formats
The application uses Convex for real-time database management with the following schema:
name: User's name (string)email: User's email (string)tokenIdentifier: Authentication token (string)imageUrl: Profile image URL (optional string)plan: Subscription plan ("free" | "pro")projectUsed: Number of projects used (number)exportProjectThisMonth: Monthly export count (number)createdAt: Account creation timestamp (number)lastActive: Last active timestamp (number)
title: Project title (string)userId: Reference to user ID (string)canvasState: Canvas state data (any)width: Canvas width (number)height: Canvas height (number)originalImageUrl: Original image URL (optional string)currentImageUrl: Current image URL (optional string)thumbnailUrl: Thumbnail image URL (optional string)activeTransformation: Active ImageKit transformation (optional string)backgroundRemove: Background removal status (optional boolean)folderId: Folder reference (optional string)createdAt: Project creation timestamp (number)updatedAt: Last update timestamp (number)
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Components: Reusable UI components in
components/ - Pages: Next.js pages in
app/ - Hooks: Custom React hooks in
hooks/ - Context: React context providers in
context/ - Database: Convex functions in
convex/ - Utilities: Helper functions in
lib/andutils/
- Create components in the appropriate directory
- Add database functions to
convex/if needed - Update types in
utils/types.ts - Add new routes in
app/if needed - Test thoroughly before deployment
- Push your code to GitHub
- Connect your repository to Vercel
- Configure environment variables in Vercel dashboard
- Deploy automatically on push to main branch
- Build the application:
npm run build - Start the production server:
npm run start - Configure your web server (nginx, apache, etc.)
- Set up SSL certificates
- Configure environment variables
- Authentication: Clerk provides secure authentication
- Data Protection: Convex handles data encryption
- Environment Variables: Sensitive data stored securely
- Input Validation: Server-side validation for all inputs
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Use TypeScript for type safety
- Follow Prettier formatting
- Use ESLint for code quality
- Write descriptive commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - React framework
- Convex - Real-time database
- Fabric.js - Canvas manipulation
- ImageKit - Image processing
- Clerk - Authentication
- Tailwind CSS - Styling framework
For support and questions:
- Create an issue on GitHub
- Check the documentation
- Review the codebase for implementation details
Built with β€οΈ using modern web technologies