Configuration
Complete guide to configure the moncreneau API in your application.
Environment Variables
API URL
The API is accessible at: https://mc-prd.duckdns.org/api/v1
For local backend development: http://localhost:8080/api/v1
Recommended Configuration
Always use environment variables to store the API URL:
Node.js / Express
.env
MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
MONCRENEAU_API_KEY=your_api_key
config.js
module.exports = {
apiUrl: process.env.MONCRENEAU_API_URL,
apiKey: process.env.MONCRENEAU_API_KEY,
};
React / Vite
.env
VITE_MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
VITE_MONCRENEAU_API_KEY=your_api_key
src/config.ts
export const config = {
apiUrl: import.meta.env.VITE_MONCRENEAU_API_URL,
apiKey: import.meta.env.VITE_MONCRENEAU_API_KEY,
};
Spring Boot
src/main/resources/application.properties
moncreneau.api.url=https://mc-prd.duckdns.org/api/v1
moncreneau.api.key=${MONCRENEAU_API_KEY}
MoncreneauConfig.java
@Configuration
public class MoncreneauConfig {
@Value("${moncreneau.api.url}")
private String apiUrl;
@Value("${moncreneau.api.key}")
private String apiKey;
@Bean
public Moncreneau moncreneauClient() {
return new Moncreneau(apiKey, apiUrl);
}
}
Laravel
.env
MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
MONCRENEAU_API_KEY=your_api_key
config/moncreneau.php
<?php
return [
'api_url' => env('MONCRENEAU_API_URL'),
'api_key' => env('MONCRENEAU_API_KEY'),
];
Django
settings.py
# moncreneau API Configuration
MONCRENEAU_API_URL = os.getenv('MONCRENEAU_API_URL')
MONCRENEAU_API_KEY = os.getenv('MONCRENEAU_API_KEY')
.env
MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
MONCRENEAU_API_KEY=your_api_key
SDK Configuration
JavaScript / TypeScript
const Moncreneau = require('@moncreneau/api');
const client = new Moncreneau(
process.env.MONCRENEAU_API_KEY,
{
baseURL: process.env.MONCRENEAU_API_URL,
timeout: 30000, // 30 seconds
}
);
Java
import com.moncreneau.Moncreneau;
import com.moncreneau.MoncreneauConfig;
MoncreneauConfig config = MoncreneauConfig.builder()
.apiKey(System.getenv("MONCRENEAU_API_KEY"))
.baseUrl(System.getenv("MONCRENEAU_API_URL"))
.timeout(30000)
.build();
Moncreneau client = new Moncreneau(config);
PHP
use Moncreneau\Moncreneau;
$client = new Moncreneau(
$_ENV['MONCRENEAU_API_KEY'],
[
'base_url' => $_ENV['MONCRENEAU_API_URL'],
'timeout' => 30,
]
);
Python
from moncreneau import Moncreneau
import os
client = Moncreneau(
api_key=os.getenv('MONCRENEAU_API_KEY'),
base_url=os.getenv('MONCRENEAU_API_URL'),
timeout=30
)
Advanced Configuration
Timeouts
Configure appropriate timeouts to avoid blocking requests:
const client = new Moncreneau(apiKey, {
timeout: 30000, // 30s for normal operations
// Specific timeouts by request type (advanced example)
timeouts: {
connect: 5000, // 5s to establish connection
read: 30000, // 30s to read response
}
});
Retry Logic
Implement retry logic for temporary errors:
const client = new Moncreneau(apiKey, {
retry: {
maxRetries: 3,
retryDelay: 1000, // 1 second
retryOn: [429, 500, 502, 503, 504], // HTTP codes to retry
}
});
Custom Headers
Add headers for tracking or additional authentication:
const client = new Moncreneau(apiKey, {
headers: {
'X-App-Version': '1.0.0',
'X-User-ID': userId, // For server-side tracking
}
});
Best Practices
✅ Do
- Use environment variables for all sensitive configs
- Validate variables at application startup
- Log configuration errors without exposing secrets
- Document required variables in your README
❌ Don't
- Never hardcode API keys in code
- Never commit
.envfiles with real keys - Don't expose API keys client-side (browser)
Validation Examples
Node.js
validateConfig.js
function validateConfig() {
const required = ['MONCRENEAU_API_URL', 'MONCRENEAU_API_KEY'];
const missing = required.filter(key => !process.env[key]);
if (missing.length > 0) {
throw new Error(
`Missing environment variables: ${missing.join(', ')}\n` +
`See .env.example for configuration`
);
}
// Verify URL is valid
try {
new URL(process.env.MONCRENEAU_API_URL);
} catch (error) {
throw new Error(`Invalid MONCRENEAU_API_URL: ${error.message}`);
}
// Check API key format
const apiKey = process.env.MONCRENEAU_API_KEY;
if (!apiKey.startsWith('mk_')) {
throw new Error('MONCRENEAU_API_KEY must start with mk_');
}
console.log('✓ moncreneau configuration validated');
}
// Call at app startup
validateConfig();
Spring Boot
@Component
public class MoncreneauConfigValidator implements InitializingBean {
@Value("${moncreneau.api.url}")
private String apiUrl;
@Value("${moncreneau.api.key}")
private String apiKey;
@Override
public void afterPropertiesSet() throws Exception {
Assert.hasText(apiUrl, "moncreneau.api.url is required");
Assert.hasText(apiKey, "moncreneau.api.key is required");
Assert.isTrue(
apiKey.startsWith("mk_"),
"moncreneau.api.key must start with mk_"
);
logger.info("moncreneau configuration validated");
}
}
Deployment
Vercel
# Via CLI
vercel env add MONCRENEAU_API_URL
vercel env add MONCRENEAU_API_KEY
# Or in Vercel dashboard: Settings → Environment Variables
Heroku
heroku config:set MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
heroku config:set MONCRENEAU_API_KEY=your_api_key
Docker
Dockerfile
ENV MONCRENEAU_API_URL=https://mc-prd.duckdns.org/api/v1
# docker-compose.yml
services:
app:
environment:
- MONCRENEAU_API_URL=${MONCRENEAU_API_URL}
- MONCRENEAU_API_KEY=${MONCRENEAU_API_KEY}