⚡ Edge Database by PhilTech
La base de données
qui suit ton code
PhilDB est une base de données serverless edge. Zero config. Auth intégrée. Isolation par namespace. Pour les devs qui veulent du SQL sans la complexité.
Pourquoi PhilDB ?
Tout ce dont tu as besoin, rien de superflu.
Edge Native
Déployée sur 300+ datacenters. Latence < 50ms partout dans le monde.
Auth Intégrée
Pas de clé API à gérer. Connecte-toi avec PhilIdentity et ton namespace est créé auto.
Isolation Totale
Chaque utilisateur a son namespace. Personne ne peut accéder à tes données.
Multi-SDK
CLI npm, JavaScript natif, Python, cURL. Utilise ce que tu préfères.
Console Visuelle
Crée des tables, insère des données, fais des requêtes. Sans écrire une ligne de SQL.
Paye ce que tu consommes
Gratuit pour démarrer. Passe en Pro quand tu scales. Pas de surprise.
Tarifs Simples
Commence gratuit. Scale quand tu es prêt. Paiement via PhilCard.
Free
0 PC / mois
Parfait pour les projets perso et les tests.
- 10 Mo de stockage
- 5 tables max
- 1 000 requêtes / jour
- Console web
- Auth PhilIdentity
POPULAIRE
Pro
50 PC / mois
Pour les apps en production et les startups.
- 100 Mo de stockage
- 20 tables max
- 10 000 requêtes / jour
- Console web + CLI
- Support prioritaire
Enterprise
200 PC / mois
Pour les équipes et les grosses applications.
- 1 Go de stockage
- Tables illimitées
- Requêtes illimitées
- API dédiée
- Support 24/7
Démarrage Rapide
3 façons d'utiliser PhilDB. Choisis la tienne.
# 1. Installer le CLI
npm install -g phildb-cli
# 2. Se connecter
phildb login
# Email: ton@email.com
# Mot de passe: *****
# 3. Créer une table
phildb create-table users \
-c "id:INTEGER" \
-c "email:TEXT" \
-c "name:TEXT"
# 4. Insérer des données
phildb insert users '{"email":"test@test.com","name":"Test"}'
# 5. Requêter
phildb query users -w '{"email":"test@test.com"}'
# 6. Lister les tables
phildb tables
// SDK PhilDB pour navigateur / Node.js
const PhilDB = {
token: localStorage.getItem('phil_token'),
baseURL: 'https://phildb-worker.henockagbo4.workers.dev/v1',
async createTable(name, columns) {
const res = await fetch(`${this.baseURL}/db/create-table`, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + this.token,
'Content-Type': 'application/json'
},
body: JSON.stringify({ table_name: name, columns })
});
return res.json();
},
async insert(table, data) {
const res = await fetch(`${this.baseURL}/db/insert`, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + this.token,
'Content-Type': 'application/json'
},
body: JSON.stringify({ table_name: table, data })
});
return res.json();
},
async query(table, where = null, limit = 100) {
const res = await fetch(`${this.baseURL}/db/query`, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + this.token,
'Content-Type': 'application/json'
},
body: JSON.stringify({ table_name: table, where, limit })
});
return res.json();
}
};
// Usage
await PhilDB.createTable('users', [
{ name: 'id', type: 'INTEGER', primaryKey: true, autoIncrement: true },
{ name: 'email', type: 'TEXT', notNull: true, unique: true },
{ name: 'name', type: 'TEXT' }
]);
await PhilDB.insert('users', { email: 'test@test.com', name: 'Test' });
const { results } = await PhilDB.query('users', { email: 'test@test.com' });
console.log(results);
import requests
import json
class PhilDB:
BASE_URL = "https://phildb-worker.henockagbo4.workers.dev/v1"
def __init__(self, token):
self.token = token
self.headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
def create_table(self, name, columns):
res = requests.post(
f"{self.BASE_URL}/db/create-table",
headers=self.headers,
json={"table_name": name, "columns": columns}
)
return res.json()
def insert(self, table, data):
res = requests.post(
f"{self.BASE_URL}/db/insert",
headers=self.headers,
json={"table_name": table, "data": data}
)
return res.json()
def query(self, table, where=None, limit=100):
res = requests.post(
f"{self.BASE_URL}/db/query",
headers=self.headers,
json={"table_name": table, "where": where, "limit": limit}
)
return res.json()
# Usage
db = PhilDB("ton_token_jwt")
db.create_table("users", [
{"name": "id", "type": "INTEGER", "primaryKey": True, "autoIncrement": True},
{"name": "email", "type": "TEXT", "notNull": True, "unique": True},
{"name": "name", "type": "TEXT"}
])
db.insert("users", {"email": "test@test.com", "name": "Test"})
result = db.query("users", where={"email": "test@test.com"})
print(result["results"])
# 1. Créer une table
curl -X POST https://phildb-worker.henockagbo4.workers.dev/v1/db/create-table \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table_name": "users",
"columns": [
{"name": "id", "type": "INTEGER", "primaryKey": true, "autoIncrement": true},
{"name": "email", "type": "TEXT", "notNull": true, "unique": true},
{"name": "name", "type": "TEXT"}
]
}'
# 2. Insérer
curl -X POST https://phildb-worker.henockagbo4.workers.dev/v1/db/insert \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table_name": "users",
"data": {"email": "test@test.com", "name": "Test"}
}'
# 3. Requêter
curl -X POST https://phildb-worker.henockagbo4.workers.dev/v1/db/query \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table_name": "users",
"where": {"email": "test@test.com"},
"limit": 10
}'
# 4. Lister les tables
curl https://phildb-worker.henockagbo4.workers.dev/v1/db/tables \
-H "Authorization: Bearer $TOKEN"
Référence API
Tous les endpoints disponibles. Auth via Bearer token PhilIdentity obligatoire.
POST
/v1/db/create-table
Créer une table dans votre namespace. Les noms de tables et colonnes sont validés (alphanumérique uniquement). Auth requise.
POST
/v1/db/insert
Insérer une ligne dans une table. Les données sont validées et le namespace est forcé automatiquement. Auth requise.
POST
/v1/db/query
Requêter des données avec WHERE, ORDER BY et LIMIT. Maximum 1000 lignes par requête. Auth requise.
POST
/v1/db/update
Mettre à jour des lignes. WHERE obligatoire pour éviter les mises à jour massives accidentelles. Auth requise.
POST
/v1/db/delete
Supprimer des lignes. WHERE obligatoire — pas de suppression sans condition. Auth requise.
GET
/v1/db/tables
Lister les tables de votre namespace. Auth requise.