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