Server-Side Apps Are Here: Deploy Python & Node.js on gapp.so
gapp.so now supports server-side applications. Build with AI, upload, done — your Python or Node.js backend is live.
Your AI-Built Apps Can Now Have a Backend
Until now, apps published on gapp.so ran entirely in the browser — great for tools, games, and visualizations, but limiting if your app needs server-side logic.
Now, gapp.so supports full server-side applications. Python and Node.js apps that need a real backend can be published with the same workflow you already know.
Nothing Changes for You
The way you build and publish apps is exactly the same:
- Build your app with your favorite AI tool — Gemini in AI Studio, Claude Code, Cursor, or anything else
- Upload the code to gapp.so (via the submit page, or the Publish API)
- Done — your app is live with a landing page, a shareable URL, and SEO
The only difference is what your app can do. Before, your app ran in the browser. Now, it can also run on a server — meaning it can handle API requests, process data, connect to databases, and more.
You don't need to know the difference. If your AI assistant generates a Flask or Express app, gapp.so detects it automatically and deploys it to a server for you. If it generates a static HTML or React app, it works the same as before.
What This Means
Here are some things you can now ask your AI assistant to build:
- API backends — "Build me a REST API that stores and retrieves todo items"
- Data processing tools — "Create a web app that converts CSV files to JSON"
- Real-time dashboards — "Make a dashboard that shows live server metrics"
- AI-powered services — "Build a text summarizer API using Python"
Your AI assistant will generate the server code. You upload it. gapp.so handles the rest.
Supported Technologies
| Languages & Frameworks | |
|---|---|
| Python | Flask, FastAPI, Django, and others |
| Node.js | Express, Fastify, Hono, Koa, NestJS, and others |
Managing Your Server App
Server apps get an extra Server tab in your dashboard where you can:
- Check if your app is running or stopped
- Restart your server with one click
- View logs for debugging
Server apps automatically pause when nobody is using them and restart when someone visits — so you don't pay for idle time.
Technical Details (Optional Reading) {#technical-details}
> *The section below is for developers who want to understand the internals. Most users can skip this entirely.*
Auto-Detection
When you upload files, gapp.so scans your project to determine deployment type:
- Node.js: Looks for
package.jsonwith server framework dependencies (express, fastify, hono, koa, @nestjs/core, etc.) - Python: Looks for
requirements.txtorpyproject.tomlwith server framework dependencies (flask, fastapi, django, etc.)
If server dependencies are found, the app is deployed to a dedicated Fly.io machine. Otherwise, it's deployed as a static site via Cloudflare R2.
Dependency Installation
- Node.js: Runs
npm installfrompackage.json - Python (pip): Runs
pip install -r requirements.txt - Python (uv): Runs
uv syncfrompyproject.toml+uv.lock(falls back to non-frozen if lock file is stale)
Start Command Detection
gapp.so automatically determines how to start your app:
- Node.js: Uses
scripts.startfrompackage.json, or falls back tonode {entry file} - Python: Detects the framework and generates the appropriate command (e.g.,
gunicorn app:app,uvicorn main:app --host 0.0.0.0)
Infrastructure
- Apps run on Fly.io Machines in the NRT (Tokyo) region
- Pre-built runner images for Node.js and Python (no Docker build step for users)
- Auto-stop after idle, auto-start on request (scale-to-zero)
- Each app gets a dedicated machine with its own public URL
Environment Variables
If your server app needs secrets (API keys, database URLs, etc.), you can add encrypted environment variables from the dashboard's Server tab. Values are encrypted at rest and injected into your app's runtime on deploy.
Ready to try it? Publish your app — the same way you always have.