A full-stack application with FastAPI backend and React frontend.
- Python 3.11+
- Node.js 18+
- uv package manager
cd backend
# Install dependencies
uv sync
# Start the backend server
uv run uvicorn main:app --reloadThe backend runs at http://localhost:8000.
cd frontend
# Install dependencies
npm install
# Start the dev server
npm run devThe frontend runs at http://localhost:5173.
Open http://localhost:5173 in your browser to see the hello world message fetched from the backend.
├── backend/
│ ├── main.py # FastAPI app
│ └── pyproject.toml # Python dependencies
├── frontend/
│ ├── src/
│ │ ├── main.tsx # React entry point
│ │ ├── App.tsx # Main component
│ │ └── App.css # Styles
│ ├── index.html # HTML entry
│ ├── package.json # NPM dependencies
│ ├── vite.config.ts # Vite config with API proxy
│ └── tsconfig.json # TypeScript config
└── README.md
| Endpoint | Method | Description |
|---|---|---|
/api/health |
GET | Health check |
/api/hello |
GET | Returns hello world message |
cd backend
# Install dependencies (including dev)
uv sync
# Run server with auto-reload
uv run uvicorn main:app --reload
# Linting
uv run ruff check .
uv run ruff check . --fix
uv run ruff format .cd frontend
# Install dependencies
npm install
# Run dev server
npm run dev
# Build for production
npm run build
# Lint
npm run lint- Create a free cluster at mongodb.com/atlas
- Get your connection string (looks like
mongodb+srv://user:pass@cluster.mongodb.net/)
- Push this repo to GitHub
- Go to render.com → New → Blueprint
- Connect your GitHub repo
- Render will auto-detect
render.yamland create both services - Set the
MONGODB_URIenvironment variable in the backend service
Add these DNS records to useparadigm.app:
| Type | Name | Value |
|---|---|---|
| CNAME | gtm |
vibe-gtm-web.onrender.com |
| CNAME | api.gtm |
vibe-gtm-api.onrender.com |
Render will auto-provision SSL certificates.
| Variable | Description |
|---|---|
MONGODB_URI |
MongoDB connection string |
DATABASE_NAME |
Database name (default: vibe_gtm) |
| Variable | Description |
|---|---|
VITE_API_URL |
Backend API URL (set in render.yaml) |