VeloAI is a comprehensive AI-powered platform that provides various content creation tools including article writing, blog title generation, image creation, background removal, object removal, and resume review services. Built with modern web technologies and powered by cutting-edge AI APIs.
- Article Generation - Create long-form content with customizable length using Google Gemini AI
- Blog Title Generator - Generate engaging titles across 8 different categories
- AI Image Creation - Text-to-image generation powered by ClipDrop API
- Background Removal - Automatically remove backgrounds from any image
- Object Removal - Remove specific objects from images with AI precision
- High-Quality Processing - Maintain image quality during transformations
- Resume Review - AI-powered analysis and feedback for resumes
- PDF Processing - Extract and analyze content from uploaded documents
- Content Sharing - Publish and discover AI-generated content
- Like System - Engage with community creations
- User Profiles - Track your creations and activity
- Free Tier - 10 free requests to get started
- Premium Plans - Unlimited access with advanced features
- Usage Tracking - Monitor your API usage and limits
- Framework: React 18 with Vite
- Styling: Tailwind CSS for responsive design
- Authentication: Clerk for secure user management
- Routing: React Router DOM for SPA navigation
- HTTP Client: Axios with interceptors
- UI Components: Custom components with Lucide React icons
- Notifications: React Hot Toast for user feedback
- Markdown: React Markdown for content rendering
- Runtime: Node.js with Express.js
- Database: PostgreSQL with SQL template literals
- Authentication: Clerk Express middleware
- File Upload: Multer for multipart form handling
- Image Storage: Cloudinary for cloud-based image management
- AI Services:
- Google Gemini AI via OpenAI SDK
- ClipDrop API for image processing
- PDF Processing: pdf-parse for document analysis
- CORS: Configured for cross-origin requests
- Frontend Hosting: Vercel with automatic deployments
- Backend Hosting: Vercel serverless functions
- Database: PostgreSQL (Neon)
- CDN: Cloudinary for image delivery
- Environment Management: dotenv for configuration
VeloAI/
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ AiTools.jsx # AI tools showcase
β β β βββ CreationItem.jsx # Individual creation display
β β β βββ Footer.jsx # Site footer
β β β βββ Hero.jsx # Landing page hero
β β β βββ Navbar.jsx # Navigation component
β β β βββ Plan.jsx # Pricing plans
β β β βββ Sidebar.jsx # Dashboard sidebar
β β β βββ Testimonials.jsx # User testimonials
β β β βββ Toggle.jsx # UI toggle component
β β β βββ TrustedBrands.jsx # Brand logos
β β β βββ TrustedUser.jsx # User trust indicators
β β βββ pages/ # Route components
β β β βββ BlogTitles.jsx # Blog title generator
β β β βββ Community.jsx # Community content feed
β β β βββ Dashboard.jsx # User dashboard
β β β βββ GenerateImages.jsx # Image generation
β β β βββ Home.jsx # Landing page
β β β βββ Layout.jsx # Dashboard layout
β β β βββ RemoveBackground.jsx # Background removal
β β β βββ RemoveObject.jsx # Object removal
β β β βββ ReviewResume.jsx # Resume analysis
β β β βββ WriteArticle.jsx # Article generation
β β βββ assets/ # Static assets
β β βββ App.jsx # Main app component
β β βββ App.css # Global styles
β β βββ index.css # Base styles
β β βββ main.jsx # App entry point
β βββ public/ # Public assets
β βββ package.json # Dependencies and scripts
β βββ vite.config.js # Vite configuration
β βββ vercel.json # Vercel deployment config
β βββ .env # Environment variables
β
βββ server/ # Express.js backend
βββ controllers/ # Route handlers
β βββ aiController.js # AI service controllers
β βββ userController.js # User management controllers
βββ middlewares/ # Custom middleware
β βββ auth.js # Authentication middleware
βββ routes/ # API route definitions
β βββ aiRoutes.js # AI-related endpoints
β βββ userRoutes.js # User-related endpoints
βββ configs/ # Service configurations
β βββ cloudinary.js # Cloudinary setup
β βββ db.js # Database connection
β βββ multer.js # File upload config
βββ server.js # Main server file
βββ package.json # Dependencies and scripts
βββ vercel.json # Vercel deployment config
βββ .env # Environment variables
- Node.js 18+ installed
- PostgreSQL database
- API keys for required services
- Clerk - User authentication (clerk.com)
- Google Gemini AI - Text generation (ai.google.dev)
- ClipDrop - Image processing (clipdrop.co)
- Cloudinary - Image storage (cloudinary.com)
- PostgreSQL - Database ( neon.tech)
Frontend Environment Variables (.env)
VITE_BASE_URL=http://localhost:3000
VITE_CLERK_PUBLISHABLE_KEY=pk_test_your_clerk_publishable_keyBackend Environment Variables (.env)
# Server Configuration
PORT=3000
# Database
DATABASE_URL=postgresql://username:password@host:port/database
# AI Services
GEMINI_API_KEY=your_google_gemini_api_key
CLIPDROP_API_KEY=your_clipdrop_api_key
# Image Storage
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
# Authentication
CLERK_PUBLISHABLE_KEY=pk_test_your_clerk_publishable_key
CLERK_SECRET_KEY=sk_test_your_clerk_secret_key- Clone the repository
git clone https://github.com/yourusername/veloai.git
cd veloai- Install frontend dependencies
cd frontend
npm install- Install backend dependencies
cd ../server
npm install- Set up environment variables
# Copy environment templates
cp frontend/.env.example frontend/.env
cp server/.env.example server/.env
# Fill in your API keys and configuration- Set up the database
-- Connect to your PostgreSQL database and run:
-- Users table for additional user data
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
clerk_id VARCHAR(255) UNIQUE NOT NULL,
plan VARCHAR(50) DEFAULT 'free',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Creations table for storing AI-generated content
CREATE TABLE IF NOT EXISTS creations (
id SERIAL PRIMARY KEY,
user_id VARCHAR(255) NOT NULL REFERENCES users(clerk_id),
prompt TEXT NOT NULL,
content TEXT NOT NULL,
type VARCHAR(50) NOT NULL CHECK (type IN ('article', 'blog-title', 'image', 'resume-review')),
publish BOOLEAN DEFAULT false,
likes TEXT[] DEFAULT '{}',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Indexes for better performance
CREATE INDEX IF NOT EXISTS idx_creations_user_id ON creations(user_id);
CREATE INDEX IF NOT EXISTS idx_creations_type ON creations(type);
CREATE INDEX IF NOT EXISTS idx_creations_publish ON creations(publish);
CREATE INDEX IF NOT EXISTS idx_creations_created_at ON creations(created_at);- Start development servers
Terminal 1 - Backend:
cd server
npm run dev
# Server runs on http://localhost:3000Terminal 2 - Frontend:
cd frontend
npm run dev
# Frontend runs on http://localhost:5173- Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
All protected routes require a Bearer token in the Authorization header:
Authorization: Bearer <clerk_jwt_token>
-
Push your code to GitHub
-
Connect repository to Vercel
-
Configure deployment:
- Framework: Other
- Root Directory:
server - Build Command:
npm install - Output Directory: (leave empty)
-
Add environment variables in Vercel dashboard
-
Deploy and note the backend URL
-
Create new Vercel project
-
Configure deployment:
- Framework: Vite
- Root Directory:
frontend - Build Command:
npm run build - Output Directory:
dist
-
Add environment variables:
VITE_BASE_URL=https://your-backend-url.vercel.app VITE_CLERK_PUBLISHABLE_KEY=your_clerk_key -
Deploy frontend
Update your backend's CORS configuration with production URLs:
app.use(cors({
origin: [
'https://your-frontend-url.vercel.app',
'http://localhost:5173', // Keep for development
],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization', 'x-api-key'],
}));- Add custom domain in Vercel project settings
- Configure DNS records as instructed
- Update CORS and Clerk settings with new domain
- Sign Up/Sign In - Email, social providers
- User Profiles - Managed through Clerk dashboard
- Session Management - JWT tokens with automatic refresh
- Middleware Protection - Custom auth middleware for API routes
- Free Plan: 10 requests across all AI features
- Premium Plan: Unlimited access to all features
- Usage Tracking: Stored in user metadata
- JWT token validation on all protected routes
- CORS protection for cross-origin requests
- File upload validation and sanitization
- Rate limiting and usage quota enforcement
- Mobile-first approach with Tailwind CSS
- Optimized for all screen sizes
- Touch-friendly interface for mobile users
- Real-time loading states and feedback
- Toast notifications for user actions
- Progressive image loading
- Smooth animations and transitions
- Semantic HTML structure
- Keyboard navigation support
- Screen reader compatible
- High contrast color schemes
# Frontend tests
cd frontend
npm run test
# Backend tests
cd server
npm run testUse the provided Postman collection or test with curl:
# Test article generation
curl -X POST https://your-backend-url.vercel.app/api/ai/generate-article \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"prompt": "Test article", "length": 500}'- Image optimization via Cloudinary
- Lazy loading for community images
- Efficient API response caching
- Minimized bundle sizes with Vite
- Error tracking with try-catch blocks
- API response logging
- User activity tracking
- Performance metrics via Vercel Analytics
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Add tests if applicable
- Commit your changes
git commit -m 'Add amazing feature' - Push to your branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow existing code style and conventions
- Add comments for complex logic
- Update documentation for new features
- Test thoroughly before submitting
CORS Errors
// Solution: Update CORS origins in server.js
origin: ['https://your-frontend-domain.com']Build Failures
# Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm installDatabase Connection Issues
# Check DATABASE_URL format
postgresql://username:password@host:port/databaseAPI Key Issues
- Verify all API keys are correctly set in environment variables
- Check API key permissions and quotas
- Ensure environment variables are properly loaded
- Open an issue on GitHub
- Check existing issues for solutions
- Join our Discord community (link in bio)
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 VeloAI
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- OpenAI for AI capabilities via compatible API
- Google for Gemini AI services
- Clerk for authentication infrastructure
- Cloudinary for image management
- ClipDrop for advanced image processing
- Vercel for hosting and deployment
- React & Vite for the development framework
- Tailwind CSS for styling capabilities
Built with β€οΈ
Empowering creativity through artificial intelligence
