A modern web application that allows users to build websites and applications using natural language prompts. The project uses AI to generate code from user descriptions and provides a live development environment.
- AI-Powered Code Generation: Convert natural language descriptions into functional code
- Live Development Environment: Built-in web container for real-time code execution
- Multiple Template Support: Various starter templates including:
- React + Vite + TypeScript
- Next.js with shadcn/ui
- Vue.js
- Remix TypeScript
- Astro Basic
- SvelteKit
- Qwik TypeScript
- Vanilla + Vite
- Real-time Preview: Instant preview of your application changes
- Authentication: Secure user authentication via Clerk
- Project Management: Save and manage multiple projects
- File System Management: Create and edit files directly in the browser
- React 18+ with TypeScript
- Vite for build tooling
- Tailwind CSS for styling
- shadcn/ui components
- Web Container API for browser-based development
- Node.js
- Express.js
- Prisma ORM
- PostgreSQL (via Prisma)
├── client/ # Frontend application
├── server/ # Backend API server
├── packages/ # Shared packages
│ ├── common/ # Shared types and utilities
│ ├── db/ # Database configuration and Prisma client
│ └── prisma/ # Prisma schema and migrations
- Clone the repository
git clone https://github.com/Sasidhar-Sunkesula/no-code
- Install dependencies
npm install
- Set up environment variables
Create
.env
files in both client and server directories with necessary configurations:
Required environment variables: Check .env.example
files for reference.
- Start development servers
# Start all services
npm run dev
# Start specific services
npm run dev:client # Frontend only
npm run dev:server # Backend only
- Build for production
npm run build
- Projects start with a natural language description
- AI selects appropriate templates and generates initial code
- Files are created in the web container environment
- Live preview updates as changes are made
- Projects can be saved and resumed later
- Install Nginx on your server:
sudo apt update
sudo apt install nginx
- Copy the configuration file to Nginx sites-available:
sudo cp nginx.conf /etc/nginx/sites-available/no-code
- Edit the configuration file to replace placeholders:
sudo nano /etc/nginx/sites-available/no-code
Replace:
- your-frontend-domain.com with your actual frontend domain
- your-api-domain.com with your actual API domain
- Update SSL certificate paths if needed
4. Create a symbolic link to enable the site:
```bash
sudo ln -s /etc/nginx/sites-available/no-code /etc/nginx/sites-enabled/
- Test Nginx configuration:
sudo nginx -t
- If the test passes Reload Nginx to apply changes:
sudo systemctl reload nginx
- Configure SSL: This configuration assumes you have SSL certificates from Let's Encrypt. If you don't have them yet, you can obtain them using Certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-frontend-domain.com -d your-api-domain.com
- Set up automatic SSL certificate renewal:
sudo certbot renew --dry-run
If you're experiencing CORS errors, make sure:
- The Access-Control-Allow-Origin header in the API server block matches your frontend domain exactly
- Your backend isn't also setting CORS headers (which would cause duplicates)
For WebContainers to work properly, the frontend server must have these headers:
- Cross-Origin-Embedder-Policy: require-corp
- Cross-Origin-Opener-Policy: same-origin If WebContainers aren't working, check that these headers are being sent correctly.
npm run dev
: Start development environmentnpm run build
: Build all packages for productionnpm run start
: Start production serversnpm run clean
: Clean all build artifacts and node_modules
The application uses Clerk for authentication and user management. Users need to sign up/login to:
- Create new projects
- Save projects
Key entities:
- Projects
- Files
- Messages
- Users
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request