DevPortal CMS is an open-source developer portal designed to manage multiple APIs efficiently. It features a React-based frontend and a Strapi.io backend, providing a user-friendly interface for API documentation, authentication, and management.
The CMS features an auto-detect logic that adapts to the environment based on defined variables:
- Storage (Uploads): Uses AWS S3 if
AWS_BUCKETis provided; otherwise, it defaults to the local filesystem. - Email: Uses AWS SES if
AWS_URL_SESis configured; otherwise, it uses standard SMTP.
The project uses a lightweight Node 20 Alpine image for high performance and security.
- Base Image:
node:20.19.0-alpine - Default Port:
1337 - Execution Mode: Production (
npm run start)
Initialize your local environment file:
cp .env.example .envThen update the values according to your environment.
| Variable | Description |
|---|---|
STRAPI_URL |
Public CMS URL |
PORT |
CMS port (default: 1337) |
APP_KEYS |
Strapi application keys |
JWT_SECRET |
JWT signing secret |
| Variable | Description |
|---|---|
DATABASE_CLIENT |
postgres |
DATABASE_HOST |
Database hostname |
DATABASE_PORT |
Database port (default: 5433) |
DATABASE_NAME |
Database name |
DATABASE_USERNAME |
Database username |
DATABASE_PASSWORD |
Database password |
DATABASE_SSL |
Enable SSL (true / false) |
| Variable | Description |
|---|---|
AWS_ACCESS_KEY_ID_SES |
AWS SES access key |
AWS_SECRET_ACCESS_KEY_SES |
AWS SES secret |
AWS_URL_SES |
SES SMTP endpoint |
AWS_URL_PORT |
SES SMTP port |
EMAIL_DEFAULT_FROM |
Default sender email |
| Variable | Description |
|---|---|
SMTP_HOST |
SMTP host |
SMTP_PORT |
SMTP port |
SMTP_USERNAME |
SMTP user |
SMTP_PASSWORD |
SMTP password |
EMAIL_DEFAULT_FROM |
Default sender email |
These variables are required only if you enable S3 storage instead of local storage.
| Variable | Description |
|---|---|
AWS_ACCESS_KEY_ID |
AWS Access Key ID |
AWS_SECRET_ACCESS_KEY |
AWS Secret Access Key |
AWS_REGION |
AWS Region |
AWS_BUCKET |
AWS S3 Bucket Name |
AWS_BUCKET_SUBDIRECTORY |
Subdirectory inside the bucket |
AWS_CDN_DOMAIN |
AWS CDN Domain for S3 |
docker-compose up -d --buildThe CMS includes an auto-import script that runs on the first startup to create essential pages (Home, APIs, Blog, FAQ).
Note: To reset the database and re-run the seed script:
docker-compose down -vand restart.
- Security:
config/middlewares.jsis configured to allow S3 and CDN assets through the Content Security Policy (CSP).