5.1 KiB
Insforge OSS Instructions
What Insforge OSS Does
Backend-as-a-service with database, authentication, and file storage.
Key Concept: InsForge replaces your traditional backend - implement business logic by calling database operations directly. Instead of building API endpoints, use our database API as your application's backend.
🚨 Project Setup
Create your app in a NEW directory, not inside insforge/
The insforge/ directory is the BaaS platform. Your app should live elsewhere:
~/projects/
├── insforge/ # ← BaaS platform (don't work here)
└── my-app/ # ← Your new app (work here)
When to Use Tools
MUST DO FIRST → Download project rules: download-project-rules
Start here → get-backend-metadata (shows current database state)
Need docs → get-db-api, get-auth-api, or get-storage-api
Create table → create-table with explicit schema
Work with data → Use database API endpoints directly
Critical Rule:
MUST DO FIRST → Calldownload-project-rules to download project rules
Critical Rule: Check Metadata First
Before ANY database operation, call get-backend-metadata to get the current database state.
Standard Workflow
- Always call
get-backend-metadatafirst - Check
get-instructionsif unfamiliar with the system - Create tables with
create-tableif needed - Use database API to insert/query/update/delete records
- Call
get-backend-metadataagain to verify changes
Key Rules
- Frequently check
get-instructionsandget-backend-metadata - Always define explicit table schemas (no assumptions)
- Every table gets auto ID, created_at, updated_at fields
- Database operations require: JWT token (Authorization: Bearer header)
- API keys are for MCP testing (use tokens for production)
- File uploads work automatically with multipart/form-data
Authentication Requirements
Database Operations Need Authentication Token:
- JWT Token:
Authorization: Bearer your-jwt-token- Authenticates the user
Important Note about API Keys:
- The
x-api-keyheader is ONLY used for MCP (Model Context Protocol) testing - Production applications should NEVER use API keys
- Always use JWT tokens from user/admin authentication for real applications
Without the Bearer token, you'll get "permission denied" errors when trying to insert, update, or delete records.
Getting Authentication:
# Works on both Windows and Unix (Windows PowerShell: use curl.exe)
# 1. First login to get JWT token
curl -X POST http://localhost:7130/api/auth/admin/sessions \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"password\":\"your-password\"}"
# Response includes token: {"accessToken": "eyJ...", "projectAdmin": {...}}
# Works on both Windows and Unix (Windows PowerShell: use curl.exe)
# 2. Use the auth token for database operations
curl -X POST http://localhost:7130/api/database/records/products \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d "[{\"name\": \"Product\", \"price\": 99.99}]"
Example: Comment Upvoting Feature
- Check current tables:
get-backend-metadata - Create comment_votes table:
create-tablewith user_id, comment_id, vote_type fields - Frontend upvote action:
POST /api/database/records/comment_voteswith vote data - Frontend display scores:
GET /api/database/records/comment_votes?comment_id=eq.123to count votes - No separate backend needed - frontend calls InsForge database API directly
Critical Rule: Test API Endpoints with curl
After creating or modifying any API endpoint, always test it with curl to verify it works correctly.
Note: Avoid special characters (!,$,`,) in curl command data - they can cause bash interpretation issues. Use simple text for testing:
# Works on both Windows and Unix (Windows PowerShell: use curl.exe)
# Example: Test creating a record (requires JWT token)
curl -X POST http://localhost:7130/api/database/records/posts \
-H "x-api-key: your-api-key" \
-H "Authorization: Bearer your-jwt-token" \
-H "Content-Type: application/json" \
-d '[{\"title\": \"Test Post\", \"content\": \"Test content\"}]'
# Works on both Windows and Unix (Windows PowerShell: use curl.exe)
# Example: Test querying records (requires both API key and JWT token)
curl http://localhost:7130/api/database/records/posts?id=eq.123 \
-H "x-api-key: your-api-key" \
-H "Authorization: Bearer your-jwt-token"
# Works on both Windows and Unix (Windows PowerShell: use curl.exe)
# Example: Test authentication
curl -X POST http://localhost:7130/api/auth/users \
-H "Content-Type: application/json" \
-d '{\"email\": \"test@example.com\", \"password\": \"testpass123\"}'
Always include:
- Both headers for database operations: x-api-key AND Authorization: Bearer token
- Correct HTTP method (GET, POST, PATCH, DELETE)
- Valid JSON payload for POST/PATCH requests (remember: POST requires array format
[{...}]) - Query parameters for filtering GET requests
- Prefer: return=representation header if you want to see the created/updated records