Skip to content

ReqNest is a next-gen no-backend platform that lets developers skip traditional backend coding. Define your JSON schemas, host your backend instantly, and connect via our SDK — no servers, no APIs, no maintenance. Just build and deploy. ⚡

Notifications You must be signed in to change notification settings

Akash-Adak/ReqNest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 ReqNest

Transform Ideas into Production APIs in Minutes

Version License Build Kubernetes Docker PRs Welcome


🎬 What is ReqNest?

ReqNest is a cloud-native backend automation platform that generates real backend APIs from your schema instantly.
Think of it as:

⚡ Vercel + Firebase + Swagger + Postman + Backend-as-a-Service (BaaS)

Where your models → instantly become production APIs:

  • REST
  • GraphQL
  • WebSockets
  • Real-time updates
  • SDKs
  • Authentication
  • Documentation

All generated automatically.


🧩 Architecture Overview


React (Frontend) ──► Nginx ──► Ingress ──► Spring Boot (Backend)
│               ├─► MySQL
│               ├─► MongoDB
Public HTTPS (Ngrok) ─┘               └─► Redis

Key Highlights

  • Runtime configuration using config.js
  • Secure OAuth2 login (Google)
  • Fully containerized for Kubernetes
  • Ngrok integration for public HTTPS (local dev)
  • Works on Kind, Minikube, and Cloud K8s

✨ Why Developers Love ReqNest

🎨 AI Schema Builder ⚡ Instant CRUD 🔐 OAuth2 + JWT 📚 Auto Docs
Generate models from plain English Create REST/GraphQL instantly Google OAuth2 out of the box Swagger + SDKs

🚀 Quick Start

🟦 Option 1 — Run with Docker Compose

Perfect for local development.

➤ Run all services:

docker compose up --build

Services:


🟩 Option 2 — Run with Kubernetes (Kind)

1️⃣ Create Kind cluster

kind create cluster --name reqnest

2️⃣ Install Nginx Ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml

3️⃣ Deploy all services

kubectl apply -f k8s/

Your services:

frontend      : NodePort 30000
backend       : ClusterIP
mysql         : ClusterIP
mongo         : ClusterIP
redis         : ClusterIP
ingress       : /, /api, /oauth2, /login/oauth2

🌐 Expose Your App Online (Ngrok)

Port-forward ingress:

kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8080:80

Start ngrok:

ngrok http http://localhost:8080

You get:

https://xxxxx.ngrok-free.dev

Use this URL for:

  • Frontend
  • Backend
  • Google OAuth redirect
  • ConfigMap

🔐 Google OAuth2 Setup

Required Redirect URI:

https://<ngrok-domain>/login/oauth2/code/google

Authorized JavaScript Origin:

https://<ngrok-domain>

Authorized Domain:

<ngrok-domain>

🔧 Backend Configuration (Spring Boot)

File: application.yml

server:
  forward-headers-strategy: framework

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: ${GOOGLE_ID}
            client-secret: ${GOOGLE_SECRET}
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"

This ensures Spring Boot uses ngrok’s HTTPS instead of HTTP.


🎨 Frontend Runtime ENV (config.js)

ReqNest frontend uses runtime environment variables so no rebuild needed.

/usr/share/nginx/html/config.js is generated at container start:

window._env_ = {
  VITE_API_URL: "<your-ngrok-url>/api"
};

Generated by entrypoint.sh:

#!/bin/sh
echo "window._env_ = {" > /usr/share/nginx/html/config.js
echo "  VITE_API_URL: \"$VITE_API_URL\"" >> /usr/share/nginx/html/config.js
echo "};" >> /usr/share/nginx/html/config.js

exec nginx -g 'daemon off;'

🧱 Nginx Config (Frontend)

File: nginx.conf

server {
    listen 80;
    server_name _;

    root /usr/share/nginx/html;
    index index.html;

    location = /config.js {
        try_files $uri =404;
    }

    location /assets/ {
        try_files $uri =404;
    }

    location / {
        try_files $uri /index.html;
    }
}

🛜 Ingress Routing (Final Working Setup)

/api            → backend:8080
/login/oauth2   → backend:8080
/oauth2         → backend:8080
/               → frontend:80

Ingress file:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: reqnest-ingress
  namespace: reqnest
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: backend
                port:
                  number: 8080
          - path: /login/oauth2
            pathType: Prefix
            backend:
              service:
                name: backend
                port:
                  number: 8080
          - path: /oauth2
            pathType: Prefix
            backend:
              service:
                name: backend
                port:
                  number: 8080
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend
                port:
                  number: 80

📂 Folder Structure

reqnest/
 ├── frontend/
 │    ├── public/
 │    ├── src/
 │    ├── nginx.conf
 │    ├── entrypoint.sh
 │    └── Dockerfile
 ├── backend/
 │    ├── src/
 │    ├── application.yml
 │    └── Dockerfile
 ├── k8s/
 │    ├── mysql.yml
 │    ├── mongo.yml
 │    ├── redis.yml
 │    ├── backend-deployment.yml
 │    ├── frontend-deployment.yml
 │    └── ingress.yml
 ├── docker-compose.yml
 └── README.md

🧪 Health Checks

Frontend:

https://<ngrok>/config.js
https://<ngrok>/

Backend:

https://<ngrok>/api/health

OAuth:

https://<ngrok>/oauth2/authorization/google

🛠 Troubleshooting

❌ Google Redirect Mismatch

Fix by adding:

server.forward-headers-strategy: framework

/config.js 404

Your nginx.conf is missing:

location = /config.js

❌ 500 on frontend root

Nginx recursion — fix try_files:

try_files $uri /index.html;

❌ Ngrok not working

Restart:

ngrok http http://localhost:8080

Add new domain to Google Console.


📞 Contact

Website: https://reqnest.com Support: [email protected] Discord: https://discord.gg/reqnest


🚀 Ready to 10x Your Backend Development?

Get Started

Built with ❤️ for developers

```

About

ReqNest is a next-gen no-backend platform that lets developers skip traditional backend coding. Define your JSON schemas, host your backend instantly, and connect via our SDK — no servers, no APIs, no maintenance. Just build and deploy. ⚡

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages