A no-code platform for building generative AI applications with a visual drag-and-drop interface. Create powerful AI workflows by connecting components like LLM engines, knowledge bases, and web search—without writing code.
- Features
- Tech Stack
- Architecture
- Getting Started
- Environment Variables
- API Endpoints
- Project Structure
- Deployment
- Contributing
- License
- Visual Workflow Builder: Drag-and-drop interface to create AI workflows
- Multiple AI Components:
- 🤖 LLM Engine: Powered by Google Gemini AI
- 📚 Knowledge Base: RAG (Retrieval Augmented Generation) with vector embeddings
- 🔍 Web Search: Real-time web search via SerpAPI
- 💬 Chat Interface: Interactive chat with your workflows
- User Authentication: Secure JWT-based authentication
- Workflow Management: Create, save, load, and manage multiple workflows (stacks)
- Per-User Isolation: Each user sees only their own workflows
- Responsive Design: Works on desktop and mobile devices
| Technology | Purpose |
|---|---|
| React 18 | UI Framework |
| Vite | Build Tool |
| React Flow | Visual Workflow Editor |
| Tailwind CSS | Styling |
| Shadcn/UI | UI Components |
| React Router | Navigation |
| Technology | Purpose |
|---|---|
| FastAPI | REST API Framework |
| PostgreSQL (NeonDB) | Database |
| SQLModel | ORM |
| ChromaDB | Vector Database |
| HuggingFace | Embeddings |
| Google Gemini | LLM |
| SerpAPI | Web Search |
| JWT | Authentication |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ React App │────▶│ FastAPI │────▶│ PostgreSQL │
│ (Frontend) │ │ (Backend) │ │ (NeonDB) │
│ │ │ │ │ │
└─────────────────┘ └────────┬────────┘ └─────────────────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ChromaDB │ │ Gemini │ │ SerpAPI │
│ (Vector) │ │ (LLM) │ │ (Search) │
└──────────┘ └──────────┘ └──────────┘
- Node.js >= 18.x
- Python >= 3.11
- PostgreSQL (or NeonDB account)
- Git
-
Clone the repository
git clone https://github.com/yourusername/nocode-webapp.git cd nocode-webapp/backend -
Create virtual environment
python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Create
.envfileDATABASE_URL=postgresql://user:password@host/dbname?sslmode=require GEMINI_API_KEY=your_gemini_api_key SERPAPI_API_KEY=your_serpapi_key JWT_SECRET_KEY=your_jwt_secret_key
-
Run the server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
-
Access API docs
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
-
Navigate to frontend directory
cd nocode-webapp/frontend -
Install dependencies
npm install
-
Create
.envfileVITE_API_URL=http://localhost:8000
-
Run the development server
npm run dev
-
Access the app
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | ✅ |
GEMINI_API_KEY |
Google Gemini API key | ✅ |
SERPAPI_API_KEY |
SerpAPI key for web search | ❌ |
JWT_SECRET_KEY |
Secret key for JWT tokens | ✅ |
| Variable | Description | Required |
|---|---|---|
VITE_API_URL |
Backend API URL | ✅ |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/me |
Get current user profile |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/workflow/ |
Create new workflow |
| GET | /api/workflow/get-workflow |
List user's workflows |
| GET | /api/workflow/load/{id} |
Load workflow by ID |
| PUT | /api/workflow/{id} |
Update workflow |
| DELETE | /api/workflow/{id} |
Delete workflow |
| POST | /api/workflow/run-workflow |
Execute workflow |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/upload |
Upload document to knowledge base |
| POST | /api/query |
Query knowledge base |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/chat-logs/{workflow_id} |
Get chat history |
nocode-webapp/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI application entry
│ │ ├── api/ # API route handlers
│ │ │ ├── chat_logs.py
│ │ │ ├── query.py
│ │ │ ├── upload.py
│ │ │ ├── users.py
│ │ │ └── workflow.py
│ │ ├── core/ # Core configurations
│ │ │ ├── database.py
│ │ │ └── init_db.py
│ │ ├── middlewares/ # Auth middleware
│ │ │ ├── auth.py
│ │ │ └── auth_helpers.py
│ │ ├── models/ # Database models
│ │ │ └── models.py
│ │ ├── schemas/ # Pydantic schemas
│ │ │ └── schemas.py
│ │ └── services/ # Business logic
│ │ ├── embedding_model_huggingface.py
│ │ ├── gemini_ai_llm.py
│ │ ├── serp_api_search.py
│ │ └── vectordb_store.py
│ ├── chroma/ # Vector DB storage
│ ├── Dockerfile
│ ├── requirements.txt
│ └── .env
│
├── frontend/
│ ├── src/
│ │ ├── main.jsx # React entry point
│ │ ├── App.jsx # Main App component
│ │ ├── components/ # React components
│ │ │ ├── KnowledgeBaseNode.jsx
│ │ │ ├── LLMEngineNode.jsx
│ │ │ ├── OutputNode.jsx
│ │ │ ├── UserQueryNode.jsx
│ │ │ └── ui/ # Shadcn UI components
│ │ ├── contexts/ # React contexts
│ │ │ └── WorkflowContext.jsx
│ │ ├── pages/ # Page components
│ │ │ ├── HomePage.jsx
│ │ │ ├── LoginPage.jsx
│ │ │ ├── RegisterPage.jsx
│ │ │ ├── StacksPage.jsx
│ │ │ └── WorkflowPage.jsx
│ │ └── util/ # Utilities
│ │ └── auth.js
│ ├── Dockerfile
│ ├── package.json
│ └── .env
│
└── README.md
-
Create a Railway account at railway.app
-
Create new project and connect your GitHub repository
-
Add environment variables in Railway dashboard:
DATABASE_URLGEMINI_API_KEYSERPAPI_API_KEYJWT_SECRET_KEY
-
Deploy backend
- Root directory:
/backend - Build command: (auto-detected from Dockerfile)
- Root directory:
-
Deploy frontend
- Root directory:
/frontend - Build command:
npm run build - Start command:
npm run preview
- Root directory:
# Build and run backend
cd backend
docker build -t nocode-backend .
docker run -p 8000:8000 --env-file .env nocode-backend
# Build and run frontend
cd frontend
docker build -t nocode-frontend .
docker run -p 5173:5173 nocode-frontendContributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 for Python code
- Use ESLint for JavaScript/React code
- Write meaningful commit messages
- Add tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
Project Link: https://github.com/rohitrath0d/nocode-webapp